# 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 .i18n_content import I18nContent
from .calculation_activity import CalculationActivity


class PaymentActivity(object):
    _types = {
        "activity_id": int,
        "activity_names": List[I18nContent],
        "pay_date": str,
        "total_number_of_payroll": int,
        "number_of_calculation_activities": int,
        "calculation_activities": List[CalculationActivity],
        "activity_status": int,
    }

    def __init__(self, d=None):
        self.activity_id: Optional[int] = None
        self.activity_names: Optional[List[I18nContent]] = None
        self.pay_date: Optional[str] = None
        self.total_number_of_payroll: Optional[int] = None
        self.number_of_calculation_activities: Optional[int] = None
        self.calculation_activities: Optional[List[CalculationActivity]] = None
        self.activity_status: Optional[int] = None
        init(self, d, self._types)

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


class PaymentActivityBuilder(object):
    def __init__(self) -> None:
        self._payment_activity = PaymentActivity()

    def activity_id(self, activity_id: int) -> "PaymentActivityBuilder":
        self._payment_activity.activity_id = activity_id
        return self

    def activity_names(self, activity_names: List[I18nContent]) -> "PaymentActivityBuilder":
        self._payment_activity.activity_names = activity_names
        return self

    def pay_date(self, pay_date: str) -> "PaymentActivityBuilder":
        self._payment_activity.pay_date = pay_date
        return self

    def total_number_of_payroll(self, total_number_of_payroll: int) -> "PaymentActivityBuilder":
        self._payment_activity.total_number_of_payroll = total_number_of_payroll
        return self

    def number_of_calculation_activities(self, number_of_calculation_activities: int) -> "PaymentActivityBuilder":
        self._payment_activity.number_of_calculation_activities = number_of_calculation_activities
        return self

    def calculation_activities(self, calculation_activities: List[CalculationActivity]) -> "PaymentActivityBuilder":
        self._payment_activity.calculation_activities = calculation_activities
        return self

    def activity_status(self, activity_status: int) -> "PaymentActivityBuilder":
        self._payment_activity.activity_status = activity_status
        return self

    def build(self) -> "PaymentActivity":
        return self._payment_activity
