<?php



namespace PayPal\Api;



use PayPal\Common\PayPalModel;

use PayPal\Validation\UrlValidator;



/**

 * Class CurrencyConversion

 *

 * Object used to store the currency conversion rate.

 *

 * @package PayPal\Api

 *

 * @property string              conversion_date

 * @property string              from_currency

 * @property string              from_amount

 * @property string              to_currency

 * @property string              to_amount

 * @property string              conversion_type

 * @property bool                conversion_type_changeable

 * @property \PayPal\Api\Links[] links

 */

class CurrencyConversion extends PayPalModel

{

    /**

     * Date of validity for the conversion rate.

     *

     * @param string $conversion_date

     *

     * @return $this

     */

    public function setConversionDate($conversion_date)

    {

        $this->conversion_date = $conversion_date;

        return $this;

    }



    /**

     * Date of validity for the conversion rate.

     *

     * @return string

     */

    public function getConversionDate()

    {

        return $this->conversion_date;

    }



    /**

     * 3 letter currency code

     *

     * @param string $from_currency

     *

     * @return $this

     */

    public function setFromCurrency($from_currency)

    {

        $this->from_currency = $from_currency;

        return $this;

    }



    /**

     * 3 letter currency code

     *

     * @return string

     */

    public function getFromCurrency()

    {

        return $this->from_currency;

    }



    /**

     * Amount participating in currency conversion, set to 1 as default

     *

     * @param string $from_amount

     *

     * @return $this

     */

    public function setFromAmount($from_amount)

    {

        $this->from_amount = $from_amount;

        return $this;

    }



    /**

     * Amount participating in currency conversion, set to 1 as default

     *

     * @return string

     */

    public function getFromAmount()

    {

        return $this->from_amount;

    }



    /**

     * 3 letter currency code

     *

     * @param string $to_currency

     *

     * @return $this

     */

    public function setToCurrency($to_currency)

    {

        $this->to_currency = $to_currency;

        return $this;

    }



    /**

     * 3 letter currency code

     *

     * @return string

     */

    public function getToCurrency()

    {

        return $this->to_currency;

    }



    /**

     * Amount resulting from currency conversion.

     *

     * @param string $to_amount

     *

     * @return $this

     */

    public function setToAmount($to_amount)

    {

        $this->to_amount = $to_amount;

        return $this;

    }



    /**

     * Amount resulting from currency conversion.

     *

     * @return string

     */

    public function getToAmount()

    {

        return $this->to_amount;

    }



    /**

     * Field indicating conversion type applied.

     * Valid Values: ["PAYPAL", "VENDOR"]

     *

     * @param string $conversion_type

     *

     * @return $this

     */

    public function setConversionType($conversion_type)

    {

        $this->conversion_type = $conversion_type;

        return $this;

    }



    /**

     * Field indicating conversion type applied.

     *

     * @return string

     */

    public function getConversionType()

    {

        return $this->conversion_type;

    }



    /**

     * Allow Payer to change conversion type.

     *

     * @param bool $conversion_type_changeable

     *

     * @return $this

     */

    public function setConversionTypeChangeable($conversion_type_changeable)

    {

        $this->conversion_type_changeable = $conversion_type_changeable;

        return $this;

    }



    /**

     * Allow Payer to change conversion type.

     *

     * @return bool

     */

    public function getConversionTypeChangeable()

    {

        return $this->conversion_type_changeable;

    }



    /**

     * Base URL to web applications endpoint

     * Valid Values: ["https://www.paypal.com/{country_code}/webapps/xocspartaweb/webflow/sparta/proxwebflow", "https://www.paypal.com/{country_code}/proxflow"]

     *

     * @deprecated Not publicly available

     * @param string $web_url

     * @throws \InvalidArgumentException

     * @return $this

     */

    public function setWebUrl($web_url)

    {

        UrlValidator::validate($web_url, "WebUrl");

        $this->web_url = $web_url;

        return $this;

    }



    /**

     * Base URL to web applications endpoint

     *

     * @deprecated Not publicly available

     * @return string

     */

    public function getWebUrl()

    {

        return $this->web_url;

    }



    /**

     * Sets Links

     *

     * @param \PayPal\Api\Links[] $links

     *

     * @return $this

     */

    public function setLinks($links)

    {

        $this->links = $links;

        return $this;

    }



    /**

     * Gets Links

     *

     * @return \PayPal\Api\Links[]

     */

    public function getLinks()

    {

        return $this->links;

    }



    /**

     * Append Links to the list.

     *

     * @param \PayPal\Api\Links $links

     * @return $this

     */

    public function addLink($links)

    {

        if (!$this->getLinks()) {

            return $this->setLinks(array($links));

        } else {

            return $this->setLinks(

                array_merge($this->getLinks(), array($links))

            );

        }

    }



    /**

     * Remove Links from the list.

     *

     * @param \PayPal\Api\Links $links

     * @return $this

     */

    public function removeLink($links)

    {

        return $this->setLinks(

            array_diff($this->getLinks(), array($links))

        );

    }



}

