from datetime import date
from uuid import UUID

from pydantic import BaseModel


class ReportFilters(BaseModel):
    branch_id: UUID | None = None
    start_date: date | None = None
    end_date: date | None = None
    staff_id: UUID | None = None
    product_id: UUID | None = None
    customer_id: UUID | None = None
    supplier_id: UUID | None = None

    def validate_range(self) -> None:
        if self.start_date and self.end_date and self.end_date < self.start_date:
            raise ValueError("end_date must not be before start_date.")
