# 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 .employees_additional_job_batch_req_date import EmployeesAdditionalJobBatchReqDate
from .employees_additional_job_batch_req_date import EmployeesAdditionalJobBatchReqDate


class BatchEmployeesAdditionalJobRequestBody(object):
    _types = {
        "employment_ids": List[str],
        "additional_job_ids": List[str],
        "start_date": EmployeesAdditionalJobBatchReqDate,
        "end_date": EmployeesAdditionalJobBatchReqDate,
        "data_date": str,
        "is_effective": bool,
    }

    def __init__(self, d=None):
        self.employment_ids: Optional[List[str]] = None
        self.additional_job_ids: Optional[List[str]] = None
        self.start_date: Optional[EmployeesAdditionalJobBatchReqDate] = None
        self.end_date: Optional[EmployeesAdditionalJobBatchReqDate] = None
        self.data_date: Optional[str] = None
        self.is_effective: Optional[bool] = None
        init(self, d, self._types)

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


class BatchEmployeesAdditionalJobRequestBodyBuilder(object):
    def __init__(self) -> None:
        self._batch_employees_additional_job_request_body = BatchEmployeesAdditionalJobRequestBody()

    def employment_ids(self, employment_ids: List[str]) -> "BatchEmployeesAdditionalJobRequestBodyBuilder":
        self._batch_employees_additional_job_request_body.employment_ids = employment_ids
        return self

    def additional_job_ids(self, additional_job_ids: List[str]) -> "BatchEmployeesAdditionalJobRequestBodyBuilder":
        self._batch_employees_additional_job_request_body.additional_job_ids = additional_job_ids
        return self

    def start_date(self,
                   start_date: EmployeesAdditionalJobBatchReqDate) -> "BatchEmployeesAdditionalJobRequestBodyBuilder":
        self._batch_employees_additional_job_request_body.start_date = start_date
        return self

    def end_date(self, end_date: EmployeesAdditionalJobBatchReqDate) -> "BatchEmployeesAdditionalJobRequestBodyBuilder":
        self._batch_employees_additional_job_request_body.end_date = end_date
        return self

    def data_date(self, data_date: str) -> "BatchEmployeesAdditionalJobRequestBodyBuilder":
        self._batch_employees_additional_job_request_body.data_date = data_date
        return self

    def is_effective(self, is_effective: bool) -> "BatchEmployeesAdditionalJobRequestBodyBuilder":
        self._batch_employees_additional_job_request_body.is_effective = is_effective
        return self

    def build(self) -> "BatchEmployeesAdditionalJobRequestBody":
        return self._batch_employees_additional_job_request_body
