# coding: utf-8

from __future__ import absolute_import
from datetime import date, datetime  # noqa: F401

from typing import List, Dict  # noqa: F401

from com_csaa_claims_ai_assignment.models.base_model_ import Model
from com_csaa_claims_ai_assignment import util


class AplicationContext(Model):
    """NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).

    Do not edit the class manually.
    """

    def __init__(self, user_id=None, transaction_type=None, application=None, sub_system=None, address=None, correlation_id=None):  # noqa: E501
        """AplicationContext - a model defined in OpenAPI

        :param user_id: The user_id of this AplicationContext.  # noqa: E501
        :type user_id: str
        :param transaction_type: The transaction_type of this AplicationContext.  # noqa: E501
        :type transaction_type: str
        :param application: The application of this AplicationContext.  # noqa: E501
        :type application: str
        :param sub_system: The sub_system of this AplicationContext.  # noqa: E501
        :type sub_system: str
        :param address: The address of this AplicationContext.  # noqa: E501
        :type address: str
        :param correlation_id: The correlation_id of this AplicationContext.  # noqa: E501
        :type correlation_id: str
        """
        self.openapi_types = {
            'user_id': str,
            'transaction_type': str,
            'application': str,
            'sub_system': str,
            'address': str,
            'correlation_id': str
        }

        self.attribute_map = {
            'user_id': 'userId',
            'transaction_type': 'transactionType',
            'application': 'application',
            'sub_system': 'subSystem',
            'address': 'address',
            'correlation_id': 'correlationId'
        }

        self._user_id = user_id
        self._transaction_type = transaction_type
        self._application = application
        self._sub_system = sub_system
        self._address = address
        self._correlation_id = correlation_id

    @classmethod
    def from_dict(cls, dikt) -> 'AplicationContext':
        """Returns the dict as a model

        :param dikt: A dict.
        :type: dict
        :return: The AplicationContext of this AplicationContext.  # noqa: E501
        :rtype: AplicationContext
        """
        return util.deserialize_model(dikt, cls)

    @property
    def user_id(self):
        """Gets the user_id of this AplicationContext.


        :return: The user_id of this AplicationContext.
        :rtype: str
        """
        return self._user_id

    @user_id.setter
    def user_id(self, user_id):
        """Sets the user_id of this AplicationContext.


        :param user_id: The user_id of this AplicationContext.
        :type user_id: str
        """

        self._user_id = user_id

    @property
    def transaction_type(self):
        """Gets the transaction_type of this AplicationContext.


        :return: The transaction_type of this AplicationContext.
        :rtype: str
        """
        return self._transaction_type

    @transaction_type.setter
    def transaction_type(self, transaction_type):
        """Sets the transaction_type of this AplicationContext.


        :param transaction_type: The transaction_type of this AplicationContext.
        :type transaction_type: str
        """

        self._transaction_type = transaction_type

    @property
    def application(self):
        """Gets the application of this AplicationContext.


        :return: The application of this AplicationContext.
        :rtype: str
        """
        return self._application

    @application.setter
    def application(self, application):
        """Sets the application of this AplicationContext.


        :param application: The application of this AplicationContext.
        :type application: str
        """

        self._application = application

    @property
    def sub_system(self):
        """Gets the sub_system of this AplicationContext.


        :return: The sub_system of this AplicationContext.
        :rtype: str
        """
        return self._sub_system

    @sub_system.setter
    def sub_system(self, sub_system):
        """Sets the sub_system of this AplicationContext.


        :param sub_system: The sub_system of this AplicationContext.
        :type sub_system: str
        """

        self._sub_system = sub_system

    @property
    def address(self):
        """Gets the address of this AplicationContext.


        :return: The address of this AplicationContext.
        :rtype: str
        """
        return self._address

    @address.setter
    def address(self, address):
        """Sets the address of this AplicationContext.


        :param address: The address of this AplicationContext.
        :type address: str
        """

        self._address = address

    @property
    def correlation_id(self):
        """Gets the correlation_id of this AplicationContext.


        :return: The correlation_id of this AplicationContext.
        :rtype: str
        """
        return self._correlation_id

    @correlation_id.setter
    def correlation_id(self, correlation_id):
        """Sets the correlation_id of this AplicationContext.


        :param correlation_id: The correlation_id of this AplicationContext.
        :type correlation_id: str
        """

        self._correlation_id = correlation_id
