import uuid
from datetime import datetime
from pydantic import BaseModel, Field


class ScheduleConfigSchema(BaseModel):
    frequency: str  # daily, weekly, monthly, quarterly
    dayOfWeek: int | None = None
    dayOfMonth: int | None = None
    hour: int = 8
    recipients: list[str] = Field(default_factory=list)
    isActive: bool = True
    nextRunAt: datetime | None = None
    lastRunAt: datetime | None = None


class RapportResponse(BaseModel):
    id: str
    title: str
    description: str | None = None
    type: str  # activity, incidents, statistics, performance, compliance, custom
    status: str  # draft, generating, ready, failed, archived
    createdAt: datetime
    createdById: str | None = None
    createdByName: str | None = None
    updatedAt: datetime | None = None
    format: str = "pdf"  # pdf, excel, csv, word
    fileUrl: str | None = None
    fileSize: int | None = None
    isScheduled: bool = False
    scheduleConfig: ScheduleConfigSchema | None = None


class RapportCreateRequest(BaseModel):
    title: str
    description: str | None = None
    type: str = "custom"  # activity, incidents, statistics, performance, compliance, custom
    format: str = "pdf"  # pdf, excel, csv, word
    periodStart: datetime | None = None
    periodEnd: datetime | None = None
    sections: list[str] = Field(default_factory=list)
    isScheduled: bool = False
    scheduleConfig: ScheduleConfigSchema | None = None


class RapportsPageResponse(BaseModel):
    items: list[RapportResponse]
    total: int
    page: int
    pageSize: int
    pages: int
