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

from __future__ import annotations
from .utils.json_map import JsonMap
from .base import BaseModel
from .team import Team
from .people_payment import PeoplePayment
from .people_client_legal_entity import PeopleClientLegalEntity


@JsonMap({"id_": "id"})
class Employment(BaseModel):
    """Employment

    :param id_: Unique identifier for the employment., defaults to None
    :type id_: str, optional
    :param name: The name of the employment., defaults to None
    :type name: str, optional
    :param team: team, defaults to None
    :type team: Team, optional
    :param email: The email associated with the employment., defaults to None
    :type email: str, optional
    :param state: The state associated with the employment., defaults to None
    :type state: str, optional
    :param country: The country associated with the employment., defaults to None
    :type country: str, optional
    :param payment: payment, defaults to None
    :type payment: PeoplePayment, optional
    :param is_ended: Indicates whether the employment has ended., defaults to None
    :type is_ended: bool, optional
    :param timezone: The timezone associated with the employment., defaults to None
    :type timezone: str, optional
    :param job_title: The job title associated with the employment., defaults to None
    :type job_title: str, optional
    :param seniority: The seniority level associated with the employment., defaults to None
    :type seniority: str, optional
    :param start_date: The start date of the employment., defaults to None
    :type start_date: str, optional
    :param work_email: The work email associated with the employment., defaults to None
    :type work_email: str, optional
    :param hiring_type: The hiring type associated with the employment., defaults to None
    :type hiring_type: str, optional
    :param hiring_status: The hiring status associated with the employment., defaults to None
    :type hiring_status: str, optional
    :param completion_date: The completion date of the employment., defaults to None
    :type completion_date: str, optional
    :param contract_status: The contract status associated with the employment., defaults to None
    :type contract_status: str, optional
    :param voluntarily_left: Indicates whether the employment was left voluntarily., defaults to None
    :type voluntarily_left: bool, optional
    :param client_legal_entity: client_legal_entity, defaults to None
    :type client_legal_entity: PeopleClientLegalEntity, optional
    :param has_eor_termination: Indicates whether the employment had an EOR termination., defaults to None
    :type has_eor_termination: bool, optional
    :param contract_is_archived: Indicates whether the employment's contract is archived., defaults to None
    :type contract_is_archived: bool, optional
    """

    def __init__(
        self,
        id_: str = None,
        name: str = None,
        team: Team = None,
        email: str = None,
        state: str = None,
        country: str = None,
        payment: PeoplePayment = None,
        is_ended: bool = None,
        timezone: str = None,
        job_title: str = None,
        seniority: str = None,
        start_date: str = None,
        work_email: str = None,
        hiring_type: str = None,
        hiring_status: str = None,
        completion_date: str = None,
        contract_status: str = None,
        voluntarily_left: bool = None,
        client_legal_entity: PeopleClientLegalEntity = None,
        has_eor_termination: bool = None,
        contract_is_archived: bool = None,
    ):
        if id_ is not None:
            self.id_ = id_
        if name is not None:
            self.name = name
        if team is not None:
            self.team = self._define_object(team, Team)
        if email is not None:
            self.email = email
        if state is not None:
            self.state = state
        if country is not None:
            self.country = country
        if payment is not None:
            self.payment = self._define_object(payment, PeoplePayment)
        if is_ended is not None:
            self.is_ended = is_ended
        if timezone is not None:
            self.timezone = timezone
        if job_title is not None:
            self.job_title = job_title
        if seniority is not None:
            self.seniority = seniority
        if start_date is not None:
            self.start_date = start_date
        if work_email is not None:
            self.work_email = work_email
        if hiring_type is not None:
            self.hiring_type = hiring_type
        if hiring_status is not None:
            self.hiring_status = hiring_status
        if completion_date is not None:
            self.completion_date = completion_date
        if contract_status is not None:
            self.contract_status = contract_status
        if voluntarily_left is not None:
            self.voluntarily_left = voluntarily_left
        if client_legal_entity is not None:
            self.client_legal_entity = self._define_object(
                client_legal_entity, PeopleClientLegalEntity
            )
        if has_eor_termination is not None:
            self.has_eor_termination = has_eor_termination
        if contract_is_archived is not None:
            self.contract_is_archived = contract_is_archived
