# -*- coding: utf-8 -*-

"""
uexcorpapi

This file was automatically generated by APIMATIC v3.0 (
 https://www.apimatic.io ).
"""
from uexcorpapi.api_helper import APIHelper


class Data8(object):

    """Implementation of the 'Data8' model.

    Attributes:
        category (str): The model property of type str.
        company_name (str): The model property of type str.
        date_added (str): The model property of type str.
        date_modified (str): The model property of type str.
        id (str): The model property of type str.
        id_category (str): The model property of type str.
        id_company (str): The model property of type str.
        id_parent (str): The model property of type str.
        id_vehicle (str): The model property of type str.
        is_exclusive_concierge (str): The model property of type str.
        is_exclusive_pledge (str): The model property of type str.
        is_exclusive_subscriber (str): The model property of type str.
        name (str): The model property of type str.
        notification (Any): The model property of type Any.
        screenshot (str): The model property of type str.
        section (str): The model property of type str.
        size (Any): The model property of type Any.
        slug (str): The model property of type str.
        url_store (str): The model property of type str.
        uuid (str): The model property of type str.
        vehicle_name (Any): The model property of type Any.
        additional_properties (Dict[str, Any]): The additional properties for
            the model.

    """

    # Create a mapping from Model property names to API property names
    _names = {
        "category": 'category',
        "company_name": 'company_name',
        "date_added": 'date_added',
        "date_modified": 'date_modified',
        "id": 'id',
        "id_category": 'id_category',
        "id_company": 'id_company',
        "id_parent": 'id_parent',
        "id_vehicle": 'id_vehicle',
        "is_exclusive_concierge": 'is_exclusive_concierge',
        "is_exclusive_pledge": 'is_exclusive_pledge',
        "is_exclusive_subscriber": 'is_exclusive_subscriber',
        "name": 'name',
        "notification": 'notification',
        "screenshot": 'screenshot',
        "section": 'section',
        "size": 'size',
        "slug": 'slug',
        "url_store": 'url_store',
        "uuid": 'uuid',
        "vehicle_name": 'vehicle_name'
    }

    def __init__(self,
                 category=None,
                 company_name=None,
                 date_added=None,
                 date_modified=None,
                 id=None,
                 id_category=None,
                 id_company=None,
                 id_parent=None,
                 id_vehicle=None,
                 is_exclusive_concierge=None,
                 is_exclusive_pledge=None,
                 is_exclusive_subscriber=None,
                 name=None,
                 notification=None,
                 screenshot=None,
                 section=None,
                 size=None,
                 slug=None,
                 url_store=None,
                 uuid=None,
                 vehicle_name=None,
                 additional_properties=None):
        """Constructor for the Data8 class"""

        # Initialize members of the class
        self.category = category 
        self.company_name = company_name 
        self.date_added = date_added 
        self.date_modified = date_modified 
        self.id = id 
        self.id_category = id_category 
        self.id_company = id_company 
        self.id_parent = id_parent 
        self.id_vehicle = id_vehicle 
        self.is_exclusive_concierge = is_exclusive_concierge 
        self.is_exclusive_pledge = is_exclusive_pledge 
        self.is_exclusive_subscriber = is_exclusive_subscriber 
        self.name = name 
        self.notification = notification 
        self.screenshot = screenshot 
        self.section = section 
        self.size = size 
        self.slug = slug 
        self.url_store = url_store 
        self.uuid = uuid 
        self.vehicle_name = vehicle_name 

        # Add additional model properties to the instance
        if additional_properties is None:
            additional_properties = {}
        self.additional_properties = additional_properties

    @classmethod
    def from_dictionary(cls,
                        dictionary):
        """Creates an instance of this model from a dictionary

        Args:
            dictionary (dictionary): A dictionary representation of the object
            as obtained from the deserialization of the server's response. The
            keys MUST match property names in the API description.

        Returns:
            object: An instance of this structure class.

        """

        if not isinstance(dictionary, dict) or dictionary is None:
            return None

        # Extract variables from the dictionary
        category = dictionary.get("category") if dictionary.get("category") else None
        company_name = dictionary.get("company_name") if dictionary.get("company_name") else None
        date_added = dictionary.get("date_added") if dictionary.get("date_added") else None
        date_modified = dictionary.get("date_modified") if dictionary.get("date_modified") else None
        id = dictionary.get("id") if dictionary.get("id") else None
        id_category = dictionary.get("id_category") if dictionary.get("id_category") else None
        id_company = dictionary.get("id_company") if dictionary.get("id_company") else None
        id_parent = dictionary.get("id_parent") if dictionary.get("id_parent") else None
        id_vehicle = dictionary.get("id_vehicle") if dictionary.get("id_vehicle") else None
        is_exclusive_concierge = dictionary.get("is_exclusive_concierge") if dictionary.get("is_exclusive_concierge") else None
        is_exclusive_pledge = dictionary.get("is_exclusive_pledge") if dictionary.get("is_exclusive_pledge") else None
        is_exclusive_subscriber = dictionary.get("is_exclusive_subscriber") if dictionary.get("is_exclusive_subscriber") else None
        name = dictionary.get("name") if dictionary.get("name") else None
        notification = dictionary.get("notification") if dictionary.get("notification") else None
        screenshot = dictionary.get("screenshot") if dictionary.get("screenshot") else None
        section = dictionary.get("section") if dictionary.get("section") else None
        size = dictionary.get("size") if dictionary.get("size") else None
        slug = dictionary.get("slug") if dictionary.get("slug") else None
        url_store = dictionary.get("url_store") if dictionary.get("url_store") else None
        uuid = dictionary.get("uuid") if dictionary.get("uuid") else None
        vehicle_name = dictionary.get("vehicle_name") if dictionary.get("vehicle_name") else None
        additional_properties = APIHelper.get_additional_properties(
            dictionary={k: v for k, v in dictionary.items() if k not in cls._names.values()},
            unboxing_function=lambda value: value)
        # Return an object of this model
        return cls(category,
                   company_name,
                   date_added,
                   date_modified,
                   id,
                   id_category,
                   id_company,
                   id_parent,
                   id_vehicle,
                   is_exclusive_concierge,
                   is_exclusive_pledge,
                   is_exclusive_subscriber,
                   name,
                   notification,
                   screenshot,
                   section,
                   size,
                   slug,
                   url_store,
                   uuid,
                   vehicle_name,
                   additional_properties)

    def __repr__(self):
        return (f'{self.__class__.__name__}('
                f'category={self.category!r}, '
                f'company_name={self.company_name!r}, '
                f'date_added={self.date_added!r}, '
                f'date_modified={self.date_modified!r}, '
                f'id={self.id!r}, '
                f'id_category={self.id_category!r}, '
                f'id_company={self.id_company!r}, '
                f'id_parent={self.id_parent!r}, '
                f'id_vehicle={self.id_vehicle!r}, '
                f'is_exclusive_concierge={self.is_exclusive_concierge!r}, '
                f'is_exclusive_pledge={self.is_exclusive_pledge!r}, '
                f'is_exclusive_subscriber={self.is_exclusive_subscriber!r}, '
                f'name={self.name!r}, '
                f'notification={self.notification!r}, '
                f'screenshot={self.screenshot!r}, '
                f'section={self.section!r}, '
                f'size={self.size!r}, '
                f'slug={self.slug!r}, '
                f'url_store={self.url_store!r}, '
                f'uuid={self.uuid!r}, '
                f'vehicle_name={self.vehicle_name!r}, '
                f'additional_properties={self.additional_properties!r})')

    def __str__(self):
        return (f'{self.__class__.__name__}('
                f'category={self.category!s}, '
                f'company_name={self.company_name!s}, '
                f'date_added={self.date_added!s}, '
                f'date_modified={self.date_modified!s}, '
                f'id={self.id!s}, '
                f'id_category={self.id_category!s}, '
                f'id_company={self.id_company!s}, '
                f'id_parent={self.id_parent!s}, '
                f'id_vehicle={self.id_vehicle!s}, '
                f'is_exclusive_concierge={self.is_exclusive_concierge!s}, '
                f'is_exclusive_pledge={self.is_exclusive_pledge!s}, '
                f'is_exclusive_subscriber={self.is_exclusive_subscriber!s}, '
                f'name={self.name!s}, '
                f'notification={self.notification!s}, '
                f'screenshot={self.screenshot!s}, '
                f'section={self.section!s}, '
                f'size={self.size!s}, '
                f'slug={self.slug!s}, '
                f'url_store={self.url_store!s}, '
                f'uuid={self.uuid!s}, '
                f'vehicle_name={self.vehicle_name!s}, '
                f'additional_properties={self.additional_properties!s})')
