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

from enum import Enum
from .utils.json_map import JsonMap
from .base import BaseModel


class TimeoffReviewInternalStatus(Enum):
    """An enumeration representing different categories.

    :cvar APPROVED: "APPROVED"
    :vartype APPROVED: str
    :cvar REJECTED: "REJECTED"
    :vartype REJECTED: str
    """

    APPROVED = "APPROVED"
    REJECTED = "REJECTED"

    def list():
        """Lists all category values.

        :return: A list of all category values.
        :rtype: list
        """
        return list(
            map(lambda x: x.value, TimeoffReviewInternalStatus._member_map_.values())
        )


@JsonMap({})
class TimeoffReviewInternal(BaseModel):
    """TimeoffReviewInternal

    :param status: The review decision to review the time off request with
    :type status: TimeoffReviewInternalStatus
    :param reason: The reason that the chosen status was chosen., defaults to None
    :type reason: str, optional
    """

    def __init__(self, status: TimeoffReviewInternalStatus, reason: str = None):
        self.status = self._enum_matching(
            status, TimeoffReviewInternalStatus.list(), "status"
        )
        if reason is not None:
            self.reason = reason
