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

from typing import List
from .utils.json_map import JsonMap
from .base import BaseModel


@JsonMap({})
class Add(BaseModel):
    """Add

    :param role_id: role_id, defaults to None
    :type role_id: str, optional
    :param team_id: team_id
    :type team_id: str
    :param is_supportive: is_supportive, defaults to None
    :type is_supportive: bool, optional
    """

    def __init__(self, team_id: str, role_id: str = None, is_supportive: bool = None):
        if role_id is not None:
            self.role_id = role_id
        self.team_id = team_id
        if is_supportive is not None:
            self.is_supportive = is_supportive


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

    :param id_: id_
    :type id_: str
    :param role_id: role_id, defaults to None
    :type role_id: str, optional
    :param is_supportive: is_supportive, defaults to None
    :type is_supportive: bool, optional
    """

    def __init__(self, id_: str, role_id: str = None, is_supportive: bool = None):
        self.id_ = id_
        if role_id is not None:
            self.role_id = role_id
        if is_supportive is not None:
            self.is_supportive = is_supportive


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

    :param id_: id_
    :type id_: str
    """

    def __init__(self, id_: str):
        self.id_ = id_


@JsonMap({})
class HrisPositionToChangeContainerData(BaseModel):
    """HrisPositionToChangeContainerData

    :param add: add, defaults to None
    :type add: List[Add], optional
    :param edit: edit, defaults to None
    :type edit: List[Edit], optional
    :param delete: delete, defaults to None
    :type delete: List[Delete], optional
    :param profile_id: profile_id
    :type profile_id: str
    """

    def __init__(
        self,
        profile_id: str,
        add: List[Add] = None,
        edit: List[Edit] = None,
        delete: List[Delete] = None,
    ):
        if add is not None:
            self.add = self._define_list(add, Add)
        if edit is not None:
            self.edit = self._define_list(edit, Edit)
        if delete is not None:
            self.delete = self._define_list(delete, Delete)
        self.profile_id = profile_id


@JsonMap({})
class HrisPositionToChangeContainer(BaseModel):
    """HrisPositionToChangeContainer

    :param data: data, defaults to None
    :type data: HrisPositionToChangeContainerData, optional
    """

    def __init__(self, data: HrisPositionToChangeContainerData = None):
        if data is not None:
            self.data = self._define_object(data, HrisPositionToChangeContainerData)
