<?php
/**
 * ABCampaignData
 *
 * PHP version 5
 *
 * @category Class
 * @package  Swagger\Client
 * @author   Swaagger Codegen team
 * @link     https://github.com/swagger-api/swagger-codegen
 */

/**
 * Moosend API
 *
 * TODO: Add a description
 *
 * OpenAPI spec version: 1.0
 * 
 * Generated by: https://github.com/swagger-api/swagger-codegen.git
 *
 */

/**
 * 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 Swagger\Client\Model;

use \ArrayAccess;

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

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

    /**
      * Array of property to type mappings. Used for (de)serialization
      * @var string[]
      */
    protected static $swaggerTypes = [
        'ab_campaign_type' => 'double',
        'ab_winner_selection_type' => 'double',
        'delivered_on_a' => 'string',
        'delivered_on_b' => 'string',
        'html_content_b' => 'string',
        'hours_to_test' => 'double',
        'id' => 'double',
        'list_percentage' => 'double',
        'plain_content_b' => 'string',
        'sender_b' => 'string',
        'subject_b' => 'string',
        'web_location_b' => 'string'
    ];

    /**
      * Array of property to format mappings. Used for (de)serialization
      * @var string[]
      */
    protected static $swaggerFormats = [
        'ab_campaign_type' => 'double',
        'ab_winner_selection_type' => 'double',
        'delivered_on_a' => null,
        'delivered_on_b' => null,
        'html_content_b' => null,
        'hours_to_test' => 'double',
        'id' => 'double',
        'list_percentage' => 'double',
        'plain_content_b' => null,
        'sender_b' => null,
        'subject_b' => null,
        'web_location_b' => null
    ];

    public static function swaggerTypes()
    {
        return self::$swaggerTypes;
    }

    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 = [
        'ab_campaign_type' => 'ABCampaignType',
        'ab_winner_selection_type' => 'ABWinnerSelectionType',
        'delivered_on_a' => 'DeliveredOnA',
        'delivered_on_b' => 'DeliveredOnB',
        'html_content_b' => 'HTMLContentB',
        'hours_to_test' => 'HoursToTest',
        'id' => 'ID',
        'list_percentage' => 'ListPercentage',
        'plain_content_b' => 'PlainContentB',
        'sender_b' => 'SenderB',
        'subject_b' => 'SubjectB',
        'web_location_b' => 'WebLocationB'
    ];


    /**
     * Array of attributes to setter functions (for deserialization of responses)
     * @var string[]
     */
    protected static $setters = [
        'ab_campaign_type' => 'setAbCampaignType',
        'ab_winner_selection_type' => 'setAbWinnerSelectionType',
        'delivered_on_a' => 'setDeliveredOnA',
        'delivered_on_b' => 'setDeliveredOnB',
        'html_content_b' => 'setHtmlContentB',
        'hours_to_test' => 'setHoursToTest',
        'id' => 'setId',
        'list_percentage' => 'setListPercentage',
        'plain_content_b' => 'setPlainContentB',
        'sender_b' => 'setSenderB',
        'subject_b' => 'setSubjectB',
        'web_location_b' => 'setWebLocationB'
    ];


    /**
     * Array of attributes to getter functions (for serialization of requests)
     * @var string[]
     */
    protected static $getters = [
        'ab_campaign_type' => 'getAbCampaignType',
        'ab_winner_selection_type' => 'getAbWinnerSelectionType',
        'delivered_on_a' => 'getDeliveredOnA',
        'delivered_on_b' => 'getDeliveredOnB',
        'html_content_b' => 'getHtmlContentB',
        'hours_to_test' => 'getHoursToTest',
        'id' => 'getId',
        'list_percentage' => 'getListPercentage',
        'plain_content_b' => 'getPlainContentB',
        'sender_b' => 'getSenderB',
        'subject_b' => 'getSubjectB',
        'web_location_b' => 'getWebLocationB'
    ];

    public static function attributeMap()
    {
        return self::$attributeMap;
    }

    public static function setters()
    {
        return self::$setters;
    }

    public static function getters()
    {
        return self::$getters;
    }

    

    

    /**
     * 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['ab_campaign_type'] = isset($data['ab_campaign_type']) ? $data['ab_campaign_type'] : null;
        $this->container['ab_winner_selection_type'] = isset($data['ab_winner_selection_type']) ? $data['ab_winner_selection_type'] : null;
        $this->container['delivered_on_a'] = isset($data['delivered_on_a']) ? $data['delivered_on_a'] : null;
        $this->container['delivered_on_b'] = isset($data['delivered_on_b']) ? $data['delivered_on_b'] : null;
        $this->container['html_content_b'] = isset($data['html_content_b']) ? $data['html_content_b'] : null;
        $this->container['hours_to_test'] = isset($data['hours_to_test']) ? $data['hours_to_test'] : null;
        $this->container['id'] = isset($data['id']) ? $data['id'] : null;
        $this->container['list_percentage'] = isset($data['list_percentage']) ? $data['list_percentage'] : null;
        $this->container['plain_content_b'] = isset($data['plain_content_b']) ? $data['plain_content_b'] : null;
        $this->container['sender_b'] = isset($data['sender_b']) ? $data['sender_b'] : null;
        $this->container['subject_b'] = isset($data['subject_b']) ? $data['subject_b'] : null;
        $this->container['web_location_b'] = isset($data['web_location_b']) ? $data['web_location_b'] : null;
    }

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

        return $invalid_properties;
    }

    /**
     * validate all the properties in the model
     * return true if all passed
     *
     * @return bool True if all properties are valid
     */
    public function valid()
    {

        return true;
    }


    /**
     * Gets ab_campaign_type
     * @return double
     */
    public function getAbCampaignType()
    {
        return $this->container['ab_campaign_type'];
    }

    /**
     * Sets ab_campaign_type
     * @param double $ab_campaign_type 
     * @return $this
     */
    public function setAbCampaignType($ab_campaign_type)
    {
        $this->container['ab_campaign_type'] = $ab_campaign_type;

        return $this;
    }

    /**
     * Gets ab_winner_selection_type
     * @return double
     */
    public function getAbWinnerSelectionType()
    {
        return $this->container['ab_winner_selection_type'];
    }

    /**
     * Sets ab_winner_selection_type
     * @param double $ab_winner_selection_type 
     * @return $this
     */
    public function setAbWinnerSelectionType($ab_winner_selection_type)
    {
        $this->container['ab_winner_selection_type'] = $ab_winner_selection_type;

        return $this;
    }

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

    /**
     * Sets delivered_on_a
     * @param string $delivered_on_a 
     * @return $this
     */
    public function setDeliveredOnA($delivered_on_a)
    {
        $this->container['delivered_on_a'] = $delivered_on_a;

        return $this;
    }

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

    /**
     * Sets delivered_on_b
     * @param string $delivered_on_b 
     * @return $this
     */
    public function setDeliveredOnB($delivered_on_b)
    {
        $this->container['delivered_on_b'] = $delivered_on_b;

        return $this;
    }

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

    /**
     * Sets html_content_b
     * @param string $html_content_b 
     * @return $this
     */
    public function setHtmlContentB($html_content_b)
    {
        $this->container['html_content_b'] = $html_content_b;

        return $this;
    }

    /**
     * Gets hours_to_test
     * @return double
     */
    public function getHoursToTest()
    {
        return $this->container['hours_to_test'];
    }

    /**
     * Sets hours_to_test
     * @param double $hours_to_test 
     * @return $this
     */
    public function setHoursToTest($hours_to_test)
    {
        $this->container['hours_to_test'] = $hours_to_test;

        return $this;
    }

    /**
     * Gets id
     * @return double
     */
    public function getId()
    {
        return $this->container['id'];
    }

    /**
     * Sets id
     * @param double $id 
     * @return $this
     */
    public function setId($id)
    {
        $this->container['id'] = $id;

        return $this;
    }

    /**
     * Gets list_percentage
     * @return double
     */
    public function getListPercentage()
    {
        return $this->container['list_percentage'];
    }

    /**
     * Sets list_percentage
     * @param double $list_percentage 
     * @return $this
     */
    public function setListPercentage($list_percentage)
    {
        $this->container['list_percentage'] = $list_percentage;

        return $this;
    }

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

    /**
     * Sets plain_content_b
     * @param string $plain_content_b 
     * @return $this
     */
    public function setPlainContentB($plain_content_b)
    {
        $this->container['plain_content_b'] = $plain_content_b;

        return $this;
    }

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

    /**
     * Sets sender_b
     * @param string $sender_b 
     * @return $this
     */
    public function setSenderB($sender_b)
    {
        $this->container['sender_b'] = $sender_b;

        return $this;
    }

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

    /**
     * Sets subject_b
     * @param string $subject_b 
     * @return $this
     */
    public function setSubjectB($subject_b)
    {
        $this->container['subject_b'] = $subject_b;

        return $this;
    }

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

    /**
     * Sets web_location_b
     * @param string $web_location_b 
     * @return $this
     */
    public function setWebLocationB($web_location_b)
    {
        $this->container['web_location_b'] = $web_location_b;

        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(\Swagger\Client\ObjectSerializer::sanitizeForSerialization($this), JSON_PRETTY_PRINT);
        }

        return json_encode(\Swagger\Client\ObjectSerializer::sanitizeForSerialization($this));
    }
}


