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

/**
 * DocuSign REST API
 *
 * The DocuSign REST API provides you with a powerful, convenient, and simple Web services API for interacting with DocuSign.
 *
 * OpenAPI spec version: v2.1
 * Contact: devcenter@docusign.com
 * 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 DocuSign\eSign\Model;

use \ArrayAccess;

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

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

    /**
      * Array of property to type mappings. Used for (de)serialization
      * @var string[]
      */
    protected static $swaggerTypes = [
        'ocr_language' => 'string',
        'page_selection' => 'string',
        'set_page_orientation' => 'string',
        'show_frames' => 'string',
        'show_text' => 'string',
        'skip_pages_having_existing_extractable_text' => 'string'
    ];

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

    /**
     * Array of attributes where the key is the local name, and the value is the original name
     * @var string[]
     */
    protected static $attributeMap = [
        'ocr_language' => 'ocrLanguage',
        'page_selection' => 'pageSelection',
        'set_page_orientation' => 'setPageOrientation',
        'show_frames' => 'showFrames',
        'show_text' => 'showText',
        'skip_pages_having_existing_extractable_text' => 'skipPagesHavingExistingExtractableText'
    ];


    /**
     * Array of attributes to setter functions (for deserialization of responses)
     * @var string[]
     */
    protected static $setters = [
        'ocr_language' => 'setOcrLanguage',
        'page_selection' => 'setPageSelection',
        'set_page_orientation' => 'setSetPageOrientation',
        'show_frames' => 'setShowFrames',
        'show_text' => 'setShowText',
        'skip_pages_having_existing_extractable_text' => 'setSkipPagesHavingExistingExtractableText'
    ];


    /**
     * Array of attributes to getter functions (for serialization of requests)
     * @var string[]
     */
    protected static $getters = [
        'ocr_language' => 'getOcrLanguage',
        'page_selection' => 'getPageSelection',
        'set_page_orientation' => 'getSetPageOrientation',
        'show_frames' => 'getShowFrames',
        'show_text' => 'getShowText',
        'skip_pages_having_existing_extractable_text' => 'getSkipPagesHavingExistingExtractableText'
    ];

    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['ocr_language'] = isset($data['ocr_language']) ? $data['ocr_language'] : null;
        $this->container['page_selection'] = isset($data['page_selection']) ? $data['page_selection'] : null;
        $this->container['set_page_orientation'] = isset($data['set_page_orientation']) ? $data['set_page_orientation'] : null;
        $this->container['show_frames'] = isset($data['show_frames']) ? $data['show_frames'] : null;
        $this->container['show_text'] = isset($data['show_text']) ? $data['show_text'] : null;
        $this->container['skip_pages_having_existing_extractable_text'] = isset($data['skip_pages_having_existing_extractable_text']) ? $data['skip_pages_having_existing_extractable_text'] : 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 properteis are valid
     */
    public function valid()
    {
        return true;
    }


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

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

        return $this;
    }

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

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

        return $this;
    }

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

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

        return $this;
    }

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

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

        return $this;
    }

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

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

        return $this;
    }

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

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

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

        return json_encode(\DocuSign\eSign\ObjectSerializer::sanitizeForSerialization($this));
    }
}


