<?php

namespace PayPal\Api;

use PayPal\Common\PayPalModel;
use PayPal\Converter\FormatConverter;
use PayPal\Validation\NumericValidator;

/**
 * Class Currency
 *
 * Base object for all financial value related fields (balance, payment due, etc.)
 *
 * @package PayPal\Api
 *
 * @property string currency
 * @property string value
 */
class Currency extends PayPalModel {

	/**
	 * 3 letter currency code as defined by ISO 4217.
	 *
	 * @param string $currency
	 * 
	 * @return $this
	 */
	public function setCurrency( $currency) {
		$this->currency = $currency;
		return $this;
	}

	/**
	 * 3 letter currency code as defined by ISO 4217.
	 *
	 * @return string
	 */
	public function getCurrency() {
		return $this->currency;
	}

	/**
	 * amount up to N digit after the decimals separator as defined in ISO 4217 for the appropriate currency code.
	 *
	 * @param string|double $value
	 * 
	 * @return $this
	 */
	public function setValue( $value) {
		NumericValidator::validate($value, 'Value');
		$value = FormatConverter::formatToPrice($value, $this->getCurrency());
		$this->value = $value;
		return $this;
	}

	/**
	 * amount up to N digit after the decimals separator as defined in ISO 4217 for the appropriate currency code.
	 *
	 * @return string
	 */
	public function getValue() {
		return $this->value;
	}

}
