1
0
mirror of synced 2024-12-04 11:16:08 +03:00
bitrix-module/intaro.retailcrm/lib/model/api/abstractapimodel.php
Neur0toxine 5f69051859
Программа лояльности
* New module structure (refactoring)
* Simple serializer and deserializer with models, new architecture
* Move logic to strategies
* Partial api client facade implementation (full implementation is not necessary for now)
* Loyalty feature installer
* Sms verification order (#167)
* Make updater self-sufficient
* Fix for order submit & fix for incorrect component rendering in the constructor
* Fix for loyalty personal area error handling
* Fix for cart component identity
* Fix for softlock when customer cannot be registered in loyalty

Co-authored-by: Сергей Чазов <45812598+Chazovs@users.noreply.github.com>
Co-authored-by: Sergey Chazov <oitv18@gmail.com>
2021-11-16 10:48:26 +03:00

73 lines
1.6 KiB
PHP

<?php
/**
* PHP version 7.1
*
* @category Integration
* @package Intaro\RetailCrm\Model\Api
* @author RetailCRM <integration@retailcrm.ru>
* @license MIT
* @link http://retailcrm.ru
* @see http://retailcrm.ru/docs
*/
namespace Intaro\RetailCrm\Model\Api;
use Intaro\RetailCrm\Component\Json\Mapping\PostDeserialize;
use Intaro\RetailCrm\Component\Json\Mapping\PostSerialize;
use Intaro\RetailCrm\Component\ServiceLocator;
use Intaro\RetailCrm\Service\Utils;
/**
* Class AbstractApiModel
*
* @package Intaro\RetailCrm\Model\Api
*/
class AbstractApiModel implements ApiModelInterface
{
/** @var Utils */
private $utils;
/**
* AbstractApiModel constructor.
*/
public function __construct()
{
$this->utils = ServiceLocator::get(Utils::class);
}
/**
* @PostDeserialize()
*/
public function postDeserialize(): void
{
foreach ($this as $field => $value) {
if (null === $value) {
unset($this->{$field});
}
if (is_string($value)) {
$this->{$field} = null !== json_decode($value, true) ?
json_decode($value, true, 512, JSON_BIGINT_AS_STRING) :
('null' !== $value ?
$value :
null
);
}
}
}
/**
* Removes empty fields from serialized data
*
* @PostSerialize()
* @param array $fields
*
* @return array
*/
public function postSerialize(array $fields): array
{
return $this->utils->clearArray($fields);
}
}