from pydantic import BaseModel
from typing import Optional, List
from datetime import datetime
from uuid import UUID


class CompanyListResponse(BaseModel):
    """Response model for company list endpoint"""

    uu_id: UUID
    company_name: str
    company_code: str
    company_email: str
    company_phone: str
    company_address: str
    created_at: datetime
    updated_at: Optional[datetime]
    deleted: bool = False


class CompanyDepartmentListResponse(BaseModel):
    """Response model for company department list endpoint"""

    uu_id: UUID
    department_name: str
    department_code: str
    company_id: int
    company_uu_id: str
    created_at: datetime
    updated_at: Optional[datetime]
    deleted: bool = False


class CompanyDutyListResponse(BaseModel):
    """Response model for company duty list endpoint"""

    uu_id: UUID
    duty_name: str
    duty_code: str
    department_id: int
    department_uu_id: str
    created_at: datetime
    updated_at: Optional[datetime]
    deleted: bool = False


class CompanyEmployeeListResponse(BaseModel):
    """Response model for company employee list endpoint"""

    uu_id: UUID
    employee_id: int
    employee_uu_id: str
    company_id: int
    company_uu_id: str
    duty_id: int
    duty_uu_id: str
    created_at: datetime
    updated_at: Optional[datetime]
    deleted: bool = False
