# app/schemas/financial_information_template.py
from pydantic import BaseModel
from typing import Optional, Any
from datetime import datetime


class FinancialInformationTemplateBase(BaseModel):
    name: str
    client_id: Optional[str] = None
    s3_path: Optional[str] = None
    is_active: Optional[bool] = True
    created_by: str
    modified_by: Optional[str] = None


class FinancialInformationTemplateCreate(FinancialInformationTemplateBase):
    pass


class FinancialInformationTemplateResponse(FinancialInformationTemplateBase):
    template_id: int
    created_at: datetime
    modified_at: datetime

    class Config:
        orm_mode = True


class FinancialInformationPageBase(BaseModel):
    project_id: str
    name: str
    template_type: Optional[int] = None
    subheadings: Optional[str] = None
    currency: Optional[str] = None
    meta: Optional[Any] = None
    is_active: Optional[bool] = True


class FinancialInformationPageCreate(FinancialInformationPageBase):
    pass


class FinancialInformationPageResponse(FinancialInformationPageBase):
    id: int
    created_at: datetime
    modified_at: datetime
    created_by: str
    modified_by: str

    class Config:
        orm_mode = True


class FinancialInformationPageUpdate(BaseModel):
    name: str
    id: int


class FinancialInformationRelatedDocBase(BaseModel):
    project_id: str
    page_id: int
    name: str
    path: str
    doc_type: Optional[str] = None
    created_by: str
    modified_by: Optional[str] = None


class FinancialInformationRelatedDocCreate(FinancialInformationRelatedDocBase):
    pass


class FinancialInformationRelatedDocResponse(FinancialInformationRelatedDocBase):
    id: int
    created_at: datetime
    modified_at: datetime

    class Config:
        orm_mode = True


class FinancialInformationTableBase(BaseModel):
    page_id: int
    data: dict
    meta: Optional[dict] = None
    project_id: str


class FinancialInformationTableCreate(FinancialInformationTableBase):
    pass


class FinancialInformationTableResponse(FinancialInformationTableBase):
    id: int
    created_by: str
    modified_by: Optional[str] = None
    created_at: datetime
    modified_at: datetime

    class Config:
        orm_mode = True
