# Code generated by Lark OpenAPI.

from typing import Any, Optional, Union, Dict, List, Set, IO, Callable, Type
from lark_oapi.core.construct import init
from .profile_setting_personal_info import ProfileSettingPersonalInfo
from .profile_setting_employment_info import ProfileSettingEmploymentInfo
from .profile_setting_career import ProfileSettingCareer
from .profile_setting_data_attachment import ProfileSettingDataAttachment


class CreateEmployeeRequestBody(object):
    _types = {
        "personal_info": ProfileSettingPersonalInfo,
        "employment_info": ProfileSettingEmploymentInfo,
        "career": ProfileSettingCareer,
        "data_attachment": ProfileSettingDataAttachment,
    }

    def __init__(self, d=None):
        self.personal_info: Optional[ProfileSettingPersonalInfo] = None
        self.employment_info: Optional[ProfileSettingEmploymentInfo] = None
        self.career: Optional[ProfileSettingCareer] = None
        self.data_attachment: Optional[ProfileSettingDataAttachment] = None
        init(self, d, self._types)

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


class CreateEmployeeRequestBodyBuilder(object):
    def __init__(self) -> None:
        self._create_employee_request_body = CreateEmployeeRequestBody()

    def personal_info(self, personal_info: ProfileSettingPersonalInfo) -> "CreateEmployeeRequestBodyBuilder":
        self._create_employee_request_body.personal_info = personal_info
        return self

    def employment_info(self, employment_info: ProfileSettingEmploymentInfo) -> "CreateEmployeeRequestBodyBuilder":
        self._create_employee_request_body.employment_info = employment_info
        return self

    def career(self, career: ProfileSettingCareer) -> "CreateEmployeeRequestBodyBuilder":
        self._create_employee_request_body.career = career
        return self

    def data_attachment(self, data_attachment: ProfileSettingDataAttachment) -> "CreateEmployeeRequestBodyBuilder":
        self._create_employee_request_body.data_attachment = data_attachment
        return self

    def build(self) -> "CreateEmployeeRequestBody":
        return self._create_employee_request_body
