mirror of
https://github.com/OpenXE-org/OpenXE.git
synced 2024-12-27 15:10:28 +01:00
113 lines
2.8 KiB
PHP
113 lines
2.8 KiB
PHP
|
<?php
|
||
|
|
||
|
declare(strict_types=1);
|
||
|
|
||
|
namespace Xentral\Modules\FiskalyApi\Data\Transaction;
|
||
|
|
||
|
use stdClass;
|
||
|
|
||
|
class TransactionSchema
|
||
|
{
|
||
|
/** @var SchemaStandardV1|null $standardV1 */
|
||
|
private $standardV1;
|
||
|
|
||
|
/** @var SchemaRaw|null $raw */
|
||
|
private $raw;
|
||
|
|
||
|
public function __construct(?SchemaStandardV1 $standardV1, ?SchemaRaw $raw = null)
|
||
|
{
|
||
|
$this->setStandardV1($standardV1);
|
||
|
$this->setRaw($raw);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param $apiResult
|
||
|
*
|
||
|
* @return static
|
||
|
*/
|
||
|
public static function fromApiResult(object $apiResult): self
|
||
|
{
|
||
|
return new self(
|
||
|
empty($apiResult->standard_v1) ? null : SchemaStandardV1::fromApiResult($apiResult->standard_v1),
|
||
|
empty($apiResult->raw) ? null : SchemaRaw::fromApiResult($apiResult->raw)
|
||
|
);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param array $dbState
|
||
|
*
|
||
|
* @return static
|
||
|
*/
|
||
|
public static function fromDbState(array $dbState): self
|
||
|
{
|
||
|
return new self(
|
||
|
empty($dbState['standard_v1']) ? null : SchemaStandardV1::fromDbState($dbState['standard_v1']),
|
||
|
empty($dbState['raw']) ? null : SchemaRaw::fromDbState($dbState['raw'])
|
||
|
);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return string[]
|
||
|
*/
|
||
|
public function toArray(): array
|
||
|
{
|
||
|
$dbState = [];
|
||
|
if ($this->standardV1 !== null) {
|
||
|
$dbState['standard_v1'] = $this->standardV1->toArray();
|
||
|
}
|
||
|
if ($this->raw !== null) {
|
||
|
$dbState['raw'] = $this->raw->toArray();
|
||
|
}
|
||
|
|
||
|
return $dbState;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return stdClass
|
||
|
*/
|
||
|
public function toApiResult()
|
||
|
{
|
||
|
$apiResult = new stdClass();
|
||
|
if ($this->standardV1 !== null) {
|
||
|
$apiResult->standard_v1 = json_decode(json_encode($this->standardV1->toArray()));
|
||
|
}
|
||
|
if ($this->raw !== null) {
|
||
|
$apiResult->raw = json_decode(json_encode($this->raw->toArray()));
|
||
|
}
|
||
|
|
||
|
return $apiResult;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return SchemaStandardV1|null
|
||
|
*/
|
||
|
public function getStandardV1(): ?SchemaStandardV1
|
||
|
{
|
||
|
return $this->standardV1 === null ? null : SchemaStandardV1::fromDbState($this->standardV1->toArray());
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param SchemaStandardV1|null $standardV1
|
||
|
*/
|
||
|
public function setStandardV1(?SchemaStandardV1 $standardV1): void
|
||
|
{
|
||
|
$this->standardV1 = $standardV1 === null ? null : SchemaStandardV1::fromDbState($standardV1->toArray());
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return SchemaRaw|null
|
||
|
*/
|
||
|
public function getRaw(): ?SchemaRaw
|
||
|
{
|
||
|
return $this->raw === null ? null : SchemaRaw::fromDbState($this->raw->toArray());
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param SchemaRaw|null $raw
|
||
|
*/
|
||
|
public function setRaw(?SchemaRaw $raw): void
|
||
|
{
|
||
|
$this->raw = $raw === null ? null : SchemaRaw::fromDbState($raw->toArray());
|
||
|
}
|
||
|
}
|