<?php
/**
 * GetPosInfoDtosPosInfoDtoResult
 *
 * PHP version 5
 *
 * @category Class
 * @package  Yeepay\Yop\Sdk\
 * @author   Swagger Codegen team
 * @link     https://github.com/swagger-api/swagger-codegen
 */

/**
 * pos
 *
 * <p>pos对外接口</p>
 *
 * OpenAPI spec version: 1.0
 * 
 * Generated by: https://github.com/swagger-api/swagger-codegen.git
 * Swagger Codegen version: 3.0.13
 */

/**
 * NOTE: This class is auto generated by the swagger code generator program.
 * https://github.com/swagger-api/swagger-codegen
 * Do not edit the class manually.
 */

namespace Yeepay\Yop\Sdk\Service\Pos\Model;

use \ArrayAccess;
use Yeepay\Yop\Sdk\Model\ModelInterface;
use Yeepay\Yop\Sdk\Utils\ObjectSerializer;

/**
 * GetPosInfoDtosPosInfoDtoResult Class Doc Comment
 *
 * @category Class
 * @package  Yeepay\Yop\Sdk\
 * @author   Swagger Codegen team
 * @link     https://github.com/swagger-api/swagger-codegen
 */
class GetPosInfoDtosPosInfoDtoResult implements ModelInterface, ArrayAccess
{
    const DISCRIMINATOR = null;

    /**
      * The original name of the model.
      *
      * @var string
      */
    protected static $swaggerModelName = 'GetPosInfoDtosPosInfoDtoResult';

    /**
      * Array of property to type mappings. Used for (de)serialization
      *
      * @var string[]
      */
    protected static $swaggerTypes = [
        'serialNumber' => 'string',
        'posCATI' => 'string',
        'customerNumber' => 'string',
        'shortName' => 'string',
        'shopCustomerNumber' => 'string',
        'shopName' => 'string',
        'address' => 'string',
        'fullName' => 'string',
        'productLine' => 'string',
        'salesName' => 'string',
        'posStatus' => 'string',
        'posType' => 'string',
        'posManufacturer' => 'string',
        'posCreateTime' => 'string'
    ];

    /**
      * Array of property to format mappings. Used for (de)serialization
      *
      * @var string[]
      */
    protected static $swaggerFormats = [
        'serialNumber' => null,
        'posCATI' => null,
        'customerNumber' => null,
        'shortName' => null,
        'shopCustomerNumber' => null,
        'shopName' => null,
        'address' => null,
        'fullName' => null,
        'productLine' => null,
        'salesName' => null,
        'posStatus' => null,
        'posType' => null,
        'posManufacturer' => null,
        'posCreateTime' => 'date-time'
    ];

    /**
     * Array of property to type mappings. Used for (de)serialization
     *
     * @return array
     */
    public static function swaggerTypes()
    {
        return self::$swaggerTypes;
    }

    /**
     * Array of property to format mappings. Used for (de)serialization
     *
     * @return array
     */
    public static function swaggerFormats()
    {
        return self::$swaggerFormats;
    }

    /**
     * Array of attributes where the key is the local name,
     * and the value is the original name
     *
     * @var string[]
     */
    protected static $attributeMap = [
        'serialNumber' => 'serialNumber',
        'posCATI' => 'posCATI',
        'customerNumber' => 'customerNumber',
        'shortName' => 'shortName',
        'shopCustomerNumber' => 'shopCustomerNumber',
        'shopName' => 'shopName',
        'address' => 'address',
        'fullName' => 'fullName',
        'productLine' => 'productLine',
        'salesName' => 'salesName',
        'posStatus' => 'posStatus',
        'posType' => 'posType',
        'posManufacturer' => 'posManufacturer',
        'posCreateTime' => 'posCreateTime'
    ];

    /**
     * Array of attributes to setter functions (for deserialization of responses)
     *
     * @var string[]
     */
    protected static $setters = [
        'serialNumber' => 'setSerialNumber',
        'posCATI' => 'setPosCATI',
        'customerNumber' => 'setCustomerNumber',
        'shortName' => 'setShortName',
        'shopCustomerNumber' => 'setShopCustomerNumber',
        'shopName' => 'setShopName',
        'address' => 'setAddress',
        'fullName' => 'setFullName',
        'productLine' => 'setProductLine',
        'salesName' => 'setSalesName',
        'posStatus' => 'setPosStatus',
        'posType' => 'setPosType',
        'posManufacturer' => 'setPosManufacturer',
        'posCreateTime' => 'setPosCreateTime'
    ];

    /**
     * Array of attributes to getter functions (for serialization of requests)
     *
     * @var string[]
     */
    protected static $getters = [
        'serialNumber' => 'getSerialNumber',
        'posCATI' => 'getPosCATI',
        'customerNumber' => 'getCustomerNumber',
        'shortName' => 'getShortName',
        'shopCustomerNumber' => 'getShopCustomerNumber',
        'shopName' => 'getShopName',
        'address' => 'getAddress',
        'fullName' => 'getFullName',
        'productLine' => 'getProductLine',
        'salesName' => 'getSalesName',
        'posStatus' => 'getPosStatus',
        'posType' => 'getPosType',
        'posManufacturer' => 'getPosManufacturer',
        'posCreateTime' => 'getPosCreateTime'
    ];

    /**
     * Array of attributes where the key is the local name,
     * and the value is the original name
     *
     * @return array
     */
    public static function attributeMap()
    {
        return self::$attributeMap;
    }

    /**
     * Array of attributes to setter functions (for deserialization of responses)
     *
     * @return array
     */
    public static function setters()
    {
        return self::$setters;
    }

    /**
     * Array of attributes to getter functions (for serialization of requests)
     *
     * @return array
     */
    public static function getters()
    {
        return self::$getters;
    }

    /**
     * The original name of the model.
     *
     * @return string
     */
    public function getModelName()
    {
        return self::$swaggerModelName;
    }

    

    

    /**
     * Associative array for storing property values
     *
     * @var mixed[]
     */
    protected $container = [];

    /**
     * Constructor
     *
     * @param mixed[] $data Associated array of property values
     *                      initializing the model
     */
    public function __construct(array $data = null)
    {
        $this->container['serialNumber'] = isset($data['serialNumber']) ? $data['serialNumber'] : null;
        $this->container['posCATI'] = isset($data['posCATI']) ? $data['posCATI'] : null;
        $this->container['customerNumber'] = isset($data['customerNumber']) ? $data['customerNumber'] : null;
        $this->container['shortName'] = isset($data['shortName']) ? $data['shortName'] : null;
        $this->container['shopCustomerNumber'] = isset($data['shopCustomerNumber']) ? $data['shopCustomerNumber'] : null;
        $this->container['shopName'] = isset($data['shopName']) ? $data['shopName'] : null;
        $this->container['address'] = isset($data['address']) ? $data['address'] : null;
        $this->container['fullName'] = isset($data['fullName']) ? $data['fullName'] : null;
        $this->container['productLine'] = isset($data['productLine']) ? $data['productLine'] : null;
        $this->container['salesName'] = isset($data['salesName']) ? $data['salesName'] : null;
        $this->container['posStatus'] = isset($data['posStatus']) ? $data['posStatus'] : null;
        $this->container['posType'] = isset($data['posType']) ? $data['posType'] : null;
        $this->container['posManufacturer'] = isset($data['posManufacturer']) ? $data['posManufacturer'] : null;
        $this->container['posCreateTime'] = isset($data['posCreateTime']) ? $data['posCreateTime'] : null;
    }

    /**
     * Show all the invalid properties with reasons.
     *
     * @return array invalid properties with reasons
     */
    public function listInvalidProperties()
    {
        $invalidProperties = [];

        return $invalidProperties;
    }

    /**
     * Validate all the properties in the model
     * return true if all passed
     *
     * @return bool True if all properties are valid
     */
    public function valid()
    {
        return count($this->listInvalidProperties()) === 0;
    }


    /**
     * Gets serialNumber
     *
     * @return string
     */
    public function getSerialNumber()
    {
        return $this->container['serialNumber'];
    }

    /**
     * Sets serialNumber
     *
     * @param string $serialNumber 机具序列号
     *
     * @return $this
     */
    public function setSerialNumber($serialNumber)
    {
        $this->container['serialNumber'] = $serialNumber;

        return $this;
    }

    /**
     * Gets posCATI
     *
     * @return string
     */
    public function getPosCATI()
    {
        return $this->container['posCATI'];
    }

    /**
     * Sets posCATI
     *
     * @param string $posCATI 终端号
     *
     * @return $this
     */
    public function setPosCATI($posCATI)
    {
        $this->container['posCATI'] = $posCATI;

        return $this;
    }

    /**
     * Gets customerNumber
     *
     * @return string
     */
    public function getCustomerNumber()
    {
        return $this->container['customerNumber'];
    }

    /**
     * Sets customerNumber
     *
     * @param string $customerNumber 商户编号
     *
     * @return $this
     */
    public function setCustomerNumber($customerNumber)
    {
        $this->container['customerNumber'] = $customerNumber;

        return $this;
    }

    /**
     * Gets shortName
     *
     * @return string
     */
    public function getShortName()
    {
        return $this->container['shortName'];
    }

    /**
     * Sets shortName
     *
     * @param string $shortName 商户简称
     *
     * @return $this
     */
    public function setShortName($shortName)
    {
        $this->container['shortName'] = $shortName;

        return $this;
    }

    /**
     * Gets shopCustomerNumber
     *
     * @return string
     */
    public function getShopCustomerNumber()
    {
        return $this->container['shopCustomerNumber'];
    }

    /**
     * Sets shopCustomerNumber
     *
     * @param string $shopCustomerNumber 网点商户编号
     *
     * @return $this
     */
    public function setShopCustomerNumber($shopCustomerNumber)
    {
        $this->container['shopCustomerNumber'] = $shopCustomerNumber;

        return $this;
    }

    /**
     * Gets shopName
     *
     * @return string
     */
    public function getShopName()
    {
        return $this->container['shopName'];
    }

    /**
     * Sets shopName
     *
     * @param string $shopName 网点名称
     *
     * @return $this
     */
    public function setShopName($shopName)
    {
        $this->container['shopName'] = $shopName;

        return $this;
    }

    /**
     * Gets address
     *
     * @return string
     */
    public function getAddress()
    {
        return $this->container['address'];
    }

    /**
     * Sets address
     *
     * @param string $address 网点详细地址
     *
     * @return $this
     */
    public function setAddress($address)
    {
        $this->container['address'] = $address;

        return $this;
    }

    /**
     * Gets fullName
     *
     * @return string
     */
    public function getFullName()
    {
        return $this->container['fullName'];
    }

    /**
     * Sets fullName
     *
     * @param string $fullName 商户全称
     *
     * @return $this
     */
    public function setFullName($fullName)
    {
        $this->container['fullName'] = $fullName;

        return $this;
    }

    /**
     * Gets productLine
     *
     * @return string
     */
    public function getProductLine()
    {
        return $this->container['productLine'];
    }

    /**
     * Sets productLine
     *
     * @param string $productLine 产品线
     *
     * @return $this
     */
    public function setProductLine($productLine)
    {
        $this->container['productLine'] = $productLine;

        return $this;
    }

    /**
     * Gets salesName
     *
     * @return string
     */
    public function getSalesName()
    {
        return $this->container['salesName'];
    }

    /**
     * Sets salesName
     *
     * @param string $salesName 销售名称
     *
     * @return $this
     */
    public function setSalesName($salesName)
    {
        $this->container['salesName'] = $salesName;

        return $this;
    }

    /**
     * Gets posStatus
     *
     * @return string
     */
    public function getPosStatus()
    {
        return $this->container['posStatus'];
    }

    /**
     * Sets posStatus
     *
     * @param string $posStatus 机具状态
     *
     * @return $this
     */
    public function setPosStatus($posStatus)
    {
        $this->container['posStatus'] = $posStatus;

        return $this;
    }

    /**
     * Gets posType
     *
     * @return string
     */
    public function getPosType()
    {
        return $this->container['posType'];
    }

    /**
     * Sets posType
     *
     * @param string $posType 机具型号
     *
     * @return $this
     */
    public function setPosType($posType)
    {
        $this->container['posType'] = $posType;

        return $this;
    }

    /**
     * Gets posManufacturer
     *
     * @return string
     */
    public function getPosManufacturer()
    {
        return $this->container['posManufacturer'];
    }

    /**
     * Sets posManufacturer
     *
     * @param string $posManufacturer 机具所属厂商
     *
     * @return $this
     */
    public function setPosManufacturer($posManufacturer)
    {
        $this->container['posManufacturer'] = $posManufacturer;

        return $this;
    }

    /**
     * Gets posCreateTime
     *
     * @return string
     */
    public function getPosCreateTime()
    {
        return $this->container['posCreateTime'];
    }

    /**
     * Sets posCreateTime
     *
     * @param string $posCreateTime 绑机时间
     *
     * @return $this
     */
    public function setPosCreateTime($posCreateTime)
    {
        $this->container['posCreateTime'] = $posCreateTime;

        return $this;
    }
    /**
     * Returns true if offset exists. False otherwise.
     *
     * @param integer $offset Offset
     *
     * @return boolean
     */
    public function offsetExists($offset)
    {
        return isset($this->container[$offset]);
    }

    /**
     * Gets offset.
     *
     * @param integer $offset Offset
     *
     * @return mixed
     */
    public function offsetGet($offset)
    {
        return isset($this->container[$offset]) ? $this->container[$offset] : null;
    }

    /**
     * Sets value based on offset.
     *
     * @param integer $offset Offset
     * @param mixed   $value  Value to be set
     *
     * @return void
     */
    public function offsetSet($offset, $value)
    {
        if (is_null($offset)) {
            $this->container[] = $value;
        } else {
            $this->container[$offset] = $value;
        }
    }

    /**
     * Unsets offset.
     *
     * @param integer $offset Offset
     *
     * @return void
     */
    public function offsetUnset($offset)
    {
        unset($this->container[$offset]);
    }

    /**
     * Gets the string presentation of the object
     *
     * @return string
     */
    public function __toString()
    {
        if (defined('JSON_PRETTY_PRINT')) { // use JSON pretty print
            return json_encode(
                ObjectSerializer::sanitizeForSerialization($this),
                JSON_PRETTY_PRINT
            );
        }

        return json_encode(ObjectSerializer::sanitizeForSerialization($this));
    }
}


