from typing import Optional
from api_validations.core_validations import BaseModelRegular
from api_validations.validations_request import (
    PydanticBaseModel,
    ListOptions,
)


class BindEmployees2People(PydanticBaseModel):
    staff_uu_id: str
    people_uu_id: str
    expiry_starts: Optional[str] = None


class UnBindEmployees2People(PydanticBaseModel):
    people_uu_id: str
    expiry_ends: str


class InsertEmployees(PydanticBaseModel):
    staff_uu_id: str
    people_uu_id: Optional[str] = None


class InsertCompanyDuty(PydanticBaseModel):
    duty_code: str
    duty_name: str
    duty_description: Optional[str] = None


class SelectDuties(PydanticBaseModel):
    duty_uu_id: Optional[str] = None


class InsertDuties(PydanticBaseModel):
    duties_uu_id: str
    department_uu_id: str
    is_default_duty: Optional[bool] = False


class UpdateDuties(PydanticBaseModel):
    duties_uu_id: Optional[str] = None
    department_uu_id: Optional[str] = None
    is_default_duty: Optional[bool] = None


class UpdateCompanyDuty(PydanticBaseModel):
    duty_code: Optional[str] = None
    duty_name: Optional[str] = None
    duty_description: Optional[str] = None


class InsertCompanyEmployeesSalaries(PydanticBaseModel):
    gross_salary: float
    net_salary: float
    start_date: str
    stop_date: Optional[str] = None
    people_id: int


class UpdateCompanyEmployeesSalaries(PydanticBaseModel):
    gross_salary: Optional[float] = None
    net_salary: Optional[float] = None
    start_date: Optional[str] = None
    stop_date: Optional[str] = None
    people_id: Optional[int] = None


class InsertCompanyEmployees(PydanticBaseModel):

    employee_description: Optional[str] = None
    person_uu_id: str
    duty_uu_id: str

    start_date: Optional[str] = None
    stop_date: Optional[str] = None


class UpdateCompanyEmployees(PydanticBaseModel):
    stop_date: Optional[str] = None
    employee_description: Optional[str] = None
