setType(DealType::SAFE_DEAL); } /** * @inheritDoc */ public function getId() { return $this->_id; } /** * Устанавливает Id сделки * * @param string $value Id сделки * @return SafeDeal */ public function setId($value) { $this->_id = $value; return $this; } /** * @inheritDoc */ public function getFeeMoment() { return $this->_fee_moment; } /** * Устанавливает момент перечисления вам вознаграждения платформы * * @param string $value Момент перечисления вам вознаграждения платформы * @return SafeDeal */ public function setFeeMoment($value) { $this->_fee_moment = $value; return $this; } /** * @inheritDoc */ public function getBalance() { return $this->_balance; } /** * Устанавливает баланс сделки * * @param DealBalanceAmount|array $value Баланс сделки * @return SafeDeal */ public function setBalance($value) { if ($value === null || $value === '') { throw new EmptyPropertyValueException('Empty balance value', 0, 'SafeDeal.balance'); } elseif ($value instanceof AmountInterface) { $this->_balance = $value; } elseif (is_array($value)) { $this->_balance = new DealBalanceAmount(); $this->_balance->fromArray($value); } else { throw new InvalidPropertyValueTypeException( 'Invalid SafeDeal.balance value type', 0, 'SafeDeal.balance', $value ); } return $this; } /** * @inheritDoc */ public function getPayoutBalance() { return $this->_payout_balance; } /** * Устанавливает сумму вознаграждения продавца * * @param DealBalanceAmount $value Сумма вознаграждения продавца * @return SafeDeal */ public function setPayoutBalance($value) { if ($value === null || $value === '') { throw new EmptyPropertyValueException('Empty payout_balance value', 0, 'SafeDeal.payout_balance'); } elseif ($value instanceof AmountInterface) { $this->_payout_balance = $value; } elseif (is_array($value)) { $this->_payout_balance = new DealBalanceAmount(); $this->_payout_balance->fromArray($value); } else { throw new InvalidPropertyValueTypeException( 'Invalid SafeDeal.payout_balance value type', 0, 'SafeDeal.payout_balance', $value ); } return $this; } /** * @inheritDoc */ public function getStatus() { return $this->_status; } /** * Устанавливает статус сделки * * @param string $value Статус сделки * @return SafeDeal */ public function setStatus($value) { if (TypeCast::canCastToEnumString($value)) { if (!DealStatus::valueExists((string)$value)) { throw new InvalidPropertyValueException('Invalid deal status value', 0, 'SafeDeal.status', $value); } $this->_status = (string)$value; } else { throw new InvalidPropertyValueTypeException( 'Invalid deal status value type', 0, 'SafeDeal.status', $value ); } return $this; } /** * @inheritDoc */ public function getCreatedAt() { return $this->_created_at; } /** * Устанавливает время создания сделки * * @param DateTime|string $value Время создания сделки * @return SafeDeal * * @throws EmptyPropertyValueException Выбрасывается если в метод была передана пустая дата * @throws InvalidPropertyValueException Выбрасывается если передали строку, которую не удалось привести к дате * @throws InvalidPropertyValueTypeException|\Exception Выбрасывается если был передан аргумент, который невозможно * интерпретировать как дату или время */ public function setCreatedAt($value) { if ($value === null || $value === '') { throw new EmptyPropertyValueException('Empty created_at value', 0, 'payment.createdAt'); } elseif (TypeCast::canCastToDateTime($value)) { $dateTime = TypeCast::castToDateTime($value); if ($dateTime === null) { throw new InvalidPropertyValueException('Invalid created_at value', 0, 'payment.createdAt', $value); } $this->_created_at = $dateTime; } else { throw new InvalidPropertyValueTypeException('Invalid created_at value', 0, 'payment.createdAt', $value); } return $this; } /** * @inheritDoc */ public function getExpiresAt() { return $this->_expires_at; } /** * Устанавливает время автоматического закрытия сделки * * @param DateTime|string $value Время автоматического закрытия сделки * @return SafeDeal * * @throws EmptyPropertyValueException Выбрасывается если в метод была передана пустая дата * @throws InvalidPropertyValueException Выбрасывается если передали строку, которую не удалось привести к дате * @throws InvalidPropertyValueTypeException|\Exception Выбрасывается если был передан аргумент, который невозможно * интерпретировать как дату или время */ public function setExpiresAt($value) { if ($value === null || $value === '') { throw new EmptyPropertyValueException('Empty expires_at value', 0, 'payment.expires_at'); } elseif (TypeCast::canCastToDateTime($value)) { $dateTime = TypeCast::castToDateTime($value); if ($dateTime === null) { throw new InvalidPropertyValueException('Invalid expires_at value', 0, 'payment.expires_at', $value); } $this->_expires_at = $dateTime; } else { throw new InvalidPropertyValueTypeException('Invalid expires_at value', 0, 'payment.expires_at', $value); } return $this; } /** * @inheritDoc */ public function getTest() { return $this->_test; } /** * Устанавливает признак тестовой операции * * @param bool $value Признак тестовой операции * @return SafeDeal */ public function setTest($value) { if ($value === null || $value === '') { throw new EmptyPropertyValueException('Empty SafeDeal test flag value', 0, 'SafeDeal.test'); } elseif (TypeCast::canCastToBoolean($value)) { $this->_test = (bool)$value; } else { throw new InvalidPropertyValueTypeException( 'Invalid SafeDeal test flag value type', 0, 'SafeDeal.test', $value ); } return $this; } /** * @inheritDoc */ public function getDescription() { return $this->_description; } /** * Устанавливает описание сделки (не более 128 символов). * * @param string $value Описание сделки * @return SafeDeal * * @throws InvalidPropertyValueException Выбрасывается если переданное значение превышает допустимую длину * @throws InvalidPropertyValueTypeException Выбрасывается если переданное значение не является строкой */ public function setDescription($value) { if ($value === null || $value === '') { $this->_description = null; } elseif (TypeCast::canCastToString($value)) { $length = mb_strlen((string)$value, 'utf-8'); if ($length > self::MAX_LENGTH_DESCRIPTION) { throw new InvalidPropertyValueException( 'The value of the description parameter is too long. Max length is ' . self::MAX_LENGTH_DESCRIPTION, 0, 'SafeDeal.description', $value ); } $this->_description = (string)$value; } else { throw new InvalidPropertyValueTypeException( 'Invalid description value type', 0, 'SafeDeal.description', $value ); } return $this; } /** * @inheritDoc */ public function getMetadata() { return $this->_metadata; } /** * Устанавливает дополнительные данные сделки * * @param Metadata|array $value Дополнительные данные сделки * @return SafeDeal */ public function setMetadata($value) { if ($value === null || $value === '') { $this->_metadata = null; } elseif (is_array($value)) { $this->_metadata = new Metadata($value); } elseif ($value instanceof Metadata) { $this->_metadata = $value; } else { throw new InvalidPropertyValueTypeException( 'Invalid value type for "metadata" parameter in SafeDeal', 0, 'SafeDeal.metadata', $value ); } return $this; } }