# Code generated by Lark OpenAPI.

from typing import Any, Optional, Union, Dict, List, Set, IO, Callable, Type
from lark_oapi.core.construct import init


class EmployeeV2(object):
    _types = {
        "id": str,
        "application_id": str,
        "onboard_status": int,
        "conversion_status": int,
        "onboard_time": str,
        "expected_conversion_time": str,
        "actual_conversion_time": str,
        "overboard_time": str,
        "overboard_note": str,
        "onboard_city_code": str,
        "department_id": str,
        "leader_id": str,
        "sequence_id": str,
        "level_id": str,
        "employee_type": str,
        "job_requirement_id": str,
    }

    def __init__(self, d=None):
        self.id: Optional[str] = None
        self.application_id: Optional[str] = None
        self.onboard_status: Optional[int] = None
        self.conversion_status: Optional[int] = None
        self.onboard_time: Optional[str] = None
        self.expected_conversion_time: Optional[str] = None
        self.actual_conversion_time: Optional[str] = None
        self.overboard_time: Optional[str] = None
        self.overboard_note: Optional[str] = None
        self.onboard_city_code: Optional[str] = None
        self.department_id: Optional[str] = None
        self.leader_id: Optional[str] = None
        self.sequence_id: Optional[str] = None
        self.level_id: Optional[str] = None
        self.employee_type: Optional[str] = None
        self.job_requirement_id: Optional[str] = None
        init(self, d, self._types)

    @staticmethod
    def builder() -> "EmployeeV2Builder":
        return EmployeeV2Builder()


class EmployeeV2Builder(object):
    def __init__(self) -> None:
        self._employee_v2 = EmployeeV2()

    def id(self, id: str) -> "EmployeeV2Builder":
        self._employee_v2.id = id
        return self

    def application_id(self, application_id: str) -> "EmployeeV2Builder":
        self._employee_v2.application_id = application_id
        return self

    def onboard_status(self, onboard_status: int) -> "EmployeeV2Builder":
        self._employee_v2.onboard_status = onboard_status
        return self

    def conversion_status(self, conversion_status: int) -> "EmployeeV2Builder":
        self._employee_v2.conversion_status = conversion_status
        return self

    def onboard_time(self, onboard_time: str) -> "EmployeeV2Builder":
        self._employee_v2.onboard_time = onboard_time
        return self

    def expected_conversion_time(self, expected_conversion_time: str) -> "EmployeeV2Builder":
        self._employee_v2.expected_conversion_time = expected_conversion_time
        return self

    def actual_conversion_time(self, actual_conversion_time: str) -> "EmployeeV2Builder":
        self._employee_v2.actual_conversion_time = actual_conversion_time
        return self

    def overboard_time(self, overboard_time: str) -> "EmployeeV2Builder":
        self._employee_v2.overboard_time = overboard_time
        return self

    def overboard_note(self, overboard_note: str) -> "EmployeeV2Builder":
        self._employee_v2.overboard_note = overboard_note
        return self

    def onboard_city_code(self, onboard_city_code: str) -> "EmployeeV2Builder":
        self._employee_v2.onboard_city_code = onboard_city_code
        return self

    def department_id(self, department_id: str) -> "EmployeeV2Builder":
        self._employee_v2.department_id = department_id
        return self

    def leader_id(self, leader_id: str) -> "EmployeeV2Builder":
        self._employee_v2.leader_id = leader_id
        return self

    def sequence_id(self, sequence_id: str) -> "EmployeeV2Builder":
        self._employee_v2.sequence_id = sequence_id
        return self

    def level_id(self, level_id: str) -> "EmployeeV2Builder":
        self._employee_v2.level_id = level_id
        return self

    def employee_type(self, employee_type: str) -> "EmployeeV2Builder":
        self._employee_v2.employee_type = employee_type
        return self

    def job_requirement_id(self, job_requirement_id: str) -> "EmployeeV2Builder":
        self._employee_v2.job_requirement_id = job_requirement_id
        return self

    def build(self) -> "EmployeeV2":
        return self._employee_v2
