from parallels.core.utils.entity import Entity


class Domain(Entity):
    def __init__(
        self, domain_id, parent_domain_id, webspace_id, owner_id, dns_zone_id, cert_rep_id, name, ascii_name, guid,
        external_id, creation_date, status, webspace_status, hosting_type,
        description, reseller_description, admin_description
    ):
        self._domain_id = domain_id
        self._parent_domain_id = parent_domain_id
        self._webspace_id = webspace_id
        self._owner_id = owner_id
        self._dns_zone_id = dns_zone_id
        self._cert_rep_id = cert_rep_id
        self._name = name
        self._ascii_name = ascii_name
        self._guid = guid
        self._external_id = external_id
        self._creation_date = creation_date
        self._status = status
        self._webspace_status = webspace_status
        self._hosting_type = hosting_type
        self._description = description
        self._reseller_description = reseller_description
        self._admin_description = admin_description

    @property
    def domain_id(self):
        """
        :rtype: str | unicode
        """
        return self._domain_id

    @property
    def parent_domain_id(self):
        """
        :rtype: str | unicode
        """
        return self._parent_domain_id

    @property
    def webspace_id(self):
        """
        :rtype: str | unicode
        """
        return self._webspace_id

    @property
    def owner_id(self):
        """
        :rtype: str | unicode
        """
        return self._owner_id

    @property
    def dns_zone_id(self):
        """
        :rtype: str | unicode
        """
        return self._dns_zone_id

    @property
    def cert_rep_id(self):
        """
        :rtype: str | unicode
        """
        return self._cert_rep_id

    @property
    def name(self):
        """
        :rtype: str | unicode
        """
        return self._name

    @property
    def ascii_name(self):
        """
        :rtype: str | unicode
        """
        return self._ascii_name

    @property
    def guid(self):
        """
        :rtype: str | unicode
        """
        return self._guid

    @property
    def external_id(self):
        """
        :rtype: str | unicode
        """
        return self._external_id

    @property
    def creation_date(self):
        """
        :rtype: str | unicode
        """
        return self._creation_date

    @property
    def status(self):
        """
        :rtype: str | unicode
        """
        return self._status

    @property
    def webspace_status(self):
        """
        :rtype: str | unicode
        """
        return self._webspace_status

    @property
    def hosting_type(self):
        """
        :rtype: str | unicode
        """
        return self._hosting_type

    @property
    def description(self):
        """
        :rtype: str | unicode
        """
        return self._description

    @property
    def reseller_description(self):
        """
        :rtype: str | unicode
        """
        return self._reseller_description

    @property
    def admin_description(self):
        """
        :rtype: str | unicode
        """
        return self._admin_description
