from mongoengine import Document, StringField, DateTimeField, BooleanField, ReferenceField, IntField
from datetime import datetime
from models.exam import Exam  # Optional, if linked to a specific exam

class Notification(Document):
    title = StringField(required=True)           # Title of the notification
    description = StringField(required=True)     # Full content or details
    image = StringField(required=False)          # Optional image URL (banner, thumbnail)
    read = IntField(default=0)               # 0 = Unread, 1 = Read
    status = IntField(default=1, choices=[0, 1]) # 1 = Active, 0 = Inactive
    created_date = DateTimeField(default=datetime.utcnow)

    meta = {
        'collection': 'notifications'
    }

class JobNotice(Document):
    exam_id = ReferenceField(Exam, required=False)  # Optional, if notice is tied to UPSC/RRB/SSC
    job_notice_title = StringField(required=True)  # Title of the notice (e.g., "SSC CGL Notification 2025")
    job_title = StringField(required=True)         # e.g., "SSC", "UPSC", "RRB"
    summary = StringField(required=True)           # Short summary or teaser line
    full_content = StringField(required=True)      # Full body text (can be rich HTML if needed)

    notification_date = DateTimeField(required=True)    # Notification published date
    application_start_date = DateTimeField(required=True)
    application_end_date = DateTimeField(required=True)
    exam_date = DateTimeField(required=False)           # Optional, some notices give tentative month
    how_to_apply = StringField(required=True)           # URL or content about the application process

    is_urgent = BooleanField(default=False)             # For banner/highlight display
    created_date = DateTimeField(default=datetime.utcnow)

    meta = {
        'collection': 'job_notices'
    }