"""
System-related schemas
"""
from pydantic import BaseModel
from typing import Optional
from uuid import UUID
from datetime import datetime


class EmailTemplateBase(BaseModel):
    template_name: str
    subject: str
    html_content: str
    text_content: Optional[str] = None
    variables: Optional[str] = None
    is_active: bool = True


class EmailTemplateCreate(EmailTemplateBase):
    language_id: UUID


class EmailTemplateUpdate(EmailTemplateBase):
    language_id: Optional[UUID] = None


class EmailTemplate(EmailTemplateBase):
    template_id: UUID
    language_id: UUID
    created_at: datetime
    updated_at: datetime

    class Config:
        orm_mode = True


class EmailLogBase(BaseModel):
    recipient_email: str
    subject: Optional[str] = None
    status: str = 'pending'
    error_message: Optional[str] = None
    sent_at: Optional[datetime] = None


class EmailLogCreate(EmailLogBase):
    template_id: UUID


class EmailLogUpdate(EmailLogBase):
    template_id: Optional[UUID] = None


class EmailLog(EmailLogBase):
    log_id: UUID
    template_id: UUID
    created_at: datetime

    class Config:
        orm_mode = True


class SystemSettingBase(BaseModel):
    setting_key: str
    setting_value: Optional[str] = None
    description: Optional[str] = None


class SystemSettingCreate(SystemSettingBase):
    pass


class SystemSettingUpdate(SystemSettingBase):
    pass


class SystemSetting(SystemSettingBase):
    setting_id: UUID
    updated_at: datetime

    class Config:
        orm_mode = True