from datetime import date, datetime
from typing import Optional
from pydantic import BaseModel


class LeaveRequestCreate(BaseModel):
    start_date: date
    end_date: date
    reason: str
    user_id: Optional[int] = None  # Admin only: create on behalf of user


class LeaveRequestReview(BaseModel):
    admin_notes: Optional[str] = None


class LeaveRequestOut(BaseModel):
    id: int
    user_id: int
    username: str
    start_date: date
    end_date: date
    reason: str
    status: str
    admin_notes: Optional[str]
    reviewed_by: Optional[int]
    reviewed_by_username: Optional[str]
    reviewed_at: Optional[datetime]
    created_at: datetime

    model_config = {"from_attributes": True}
