# This file was generated by liblab | https://liblab.com/

from __future__ import annotations
from .utils.json_map import JsonMap
from .base import BaseModel
from .eor_holidays_rollover_type import EorHolidaysRolloverType


@JsonMap({})
class EorEntitlementListItem(BaseModel):
    """Entitlement Item for a given year.

    :param year: year, defaults to None
    :type year: float, optional
    :param vacation_allowed: Minimum vacation allowed., defaults to None
    :type vacation_allowed: str, optional
    :param sick_leave_allowed: Maximum sick leave allowed., defaults to None
    :type sick_leave_allowed: str, optional
    :param vacation_requested: Vacation days requested by the employee., defaults to None
    :type vacation_requested: str, optional
    :param vacation_approved: Vacation days approved., defaults to None
    :type vacation_approved: str, optional
    :param vacation_used: Vacation days used by the employee., defaults to None
    :type vacation_used: str, optional
    :param vacation_total: Total number of vacation days requested, approved and used., defaults to None
    :type vacation_total: str, optional
    :param sick_leave_requested: Sick days requested by the employee., defaults to None
    :type sick_leave_requested: str, optional
    :param sick_leave_approved: Sick days approved., defaults to None
    :type sick_leave_approved: str, optional
    :param sick_leave_used: Sick days used by the employee., defaults to None
    :type sick_leave_used: str, optional
    :param sick_leave_total: Total number of sick days requested, approved and used., defaults to None
    :type sick_leave_total: str, optional
    :param other_leave_requested: Other type of time off requested by the employee., defaults to None
    :type other_leave_requested: str, optional
    :param other_leave_approved: Other type of time off days approved., defaults to None
    :type other_leave_approved: str, optional
    :param other_leave_used: Other type of time off days used by the employee., defaults to None
    :type other_leave_used: str, optional
    :param other_leave_total: Total number of other type of time off days requested, approved and used., defaults to None
    :type other_leave_total: str, optional
    :param rollover_type: rollover_type, defaults to None
    :type rollover_type: EorHolidaysRolloverType, optional
    :param max_rollover_yearly: max_rollover_yearly, defaults to None
    :type max_rollover_yearly: str, optional
    """

    def __init__(
        self,
        year: float = None,
        vacation_allowed: str = None,
        sick_leave_allowed: str = None,
        vacation_requested: str = None,
        vacation_approved: str = None,
        vacation_used: str = None,
        vacation_total: str = None,
        sick_leave_requested: str = None,
        sick_leave_approved: str = None,
        sick_leave_used: str = None,
        sick_leave_total: str = None,
        other_leave_requested: str = None,
        other_leave_approved: str = None,
        other_leave_used: str = None,
        other_leave_total: str = None,
        rollover_type: EorHolidaysRolloverType = None,
        max_rollover_yearly: str = None,
    ):
        if year is not None:
            self.year = year
        if vacation_allowed is not None:
            self.vacation_allowed = vacation_allowed
        if sick_leave_allowed is not None:
            self.sick_leave_allowed = sick_leave_allowed
        if vacation_requested is not None:
            self.vacation_requested = vacation_requested
        if vacation_approved is not None:
            self.vacation_approved = vacation_approved
        if vacation_used is not None:
            self.vacation_used = vacation_used
        if vacation_total is not None:
            self.vacation_total = vacation_total
        if sick_leave_requested is not None:
            self.sick_leave_requested = sick_leave_requested
        if sick_leave_approved is not None:
            self.sick_leave_approved = sick_leave_approved
        if sick_leave_used is not None:
            self.sick_leave_used = sick_leave_used
        if sick_leave_total is not None:
            self.sick_leave_total = sick_leave_total
        if other_leave_requested is not None:
            self.other_leave_requested = other_leave_requested
        if other_leave_approved is not None:
            self.other_leave_approved = other_leave_approved
        if other_leave_used is not None:
            self.other_leave_used = other_leave_used
        if other_leave_total is not None:
            self.other_leave_total = other_leave_total
        if rollover_type is not None:
            self.rollover_type = self._enum_matching(
                rollover_type, EorHolidaysRolloverType.list(), "rollover_type"
            )
        if max_rollover_yearly is not None:
            self.max_rollover_yearly = max_rollover_yearly
