mirror of
https://github.com/OpenXE-org/OpenXE.git
synced 2024-12-29 08:00:28 +01:00
238 lines
7.1 KiB
PHP
238 lines
7.1 KiB
PHP
|
<?php
|
||
|
|
||
|
declare(strict_types=1);
|
||
|
|
||
|
namespace Xentral\Modules\FiskalyApi\Data\CashPointClosing;
|
||
|
|
||
|
use DateTime;
|
||
|
use DateTimeInterface;
|
||
|
use DateTimeZone;
|
||
|
use Exception;
|
||
|
use stdClass;
|
||
|
use Xentral\Modules\FiskalyApi\Data\ErrorMessage;
|
||
|
use Xentral\Modules\FiskalyApi\Data\MetaData;
|
||
|
|
||
|
class CashPointClosingResponse extends CashPointClosing
|
||
|
{
|
||
|
/** @var DateTimeInterface|null $timeCreation */
|
||
|
private $timeCreation;
|
||
|
|
||
|
/** @var DateTimeInterface|null $timeUpdate */
|
||
|
private $timeUpdate;
|
||
|
|
||
|
/** @var string|null $state */
|
||
|
private $state;
|
||
|
|
||
|
/** @var ErrorMessage|null $error */
|
||
|
private $error;
|
||
|
|
||
|
/** @var string|null $closingId */
|
||
|
private $closingId;
|
||
|
|
||
|
/**
|
||
|
* CashPointClosingResponse constructor.
|
||
|
*
|
||
|
* @param string $clientId
|
||
|
* @param int $cashPointClosingExportId
|
||
|
* @param CashPointClosingHead|null $head
|
||
|
* @param CashPointClosingCashStatement|null $cashStatement
|
||
|
* @param CashPointClosingTransactionCollection|null $transactions
|
||
|
* @param MetaData|null $metaData
|
||
|
* @param DateTimeInterface|null $timeCreation
|
||
|
* @param DateTimeInterface|null $timeUpdate
|
||
|
* @param string|null $state
|
||
|
* @param ErrorMessage|null $error
|
||
|
*/
|
||
|
public function __construct(
|
||
|
string $clientId,
|
||
|
int $cashPointClosingExportId,
|
||
|
?CashPointClosingHead $head,
|
||
|
?CashPointClosingCashStatement $cashStatement,
|
||
|
?CashPointClosingTransactionCollection $transactions,
|
||
|
?MetaData $metaData = null,
|
||
|
?DateTimeInterface $timeCreation = null,
|
||
|
?DateTimeInterface $timeUpdate = null,
|
||
|
?string $state = null,
|
||
|
?ErrorMessage $error = null
|
||
|
) {
|
||
|
parent::__construct($clientId, $cashPointClosingExportId, $head, $cashStatement, $transactions, $metaData);
|
||
|
$this->setTimeCreation($timeCreation);
|
||
|
$this->setTimeUpdate($timeUpdate);
|
||
|
$this->setState($state);
|
||
|
$this->setError($error);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param $apiResult
|
||
|
*
|
||
|
* @throws Exception
|
||
|
* @return CashPointClosingResponse
|
||
|
*/
|
||
|
public static function fromApiResult(object $apiResult): CashPointClosingResponse
|
||
|
{
|
||
|
$instance = new self(
|
||
|
$apiResult->client_id,
|
||
|
(int)$apiResult->cash_point_closing_export_id,
|
||
|
empty($apiResult->head) ? null : CashPointClosingHead::fromApiResult($apiResult->head),
|
||
|
empty($apiResult->cash_statement) ? null : CashPointClosingCashStatement::fromApiResult($apiResult->cash_statement),
|
||
|
empty($apiResult->transactions) ? null : CashPointClosingTransactionCollection::fromApiResult($apiResult->transactions)
|
||
|
);
|
||
|
if (!empty($apiResult->time_creation)) {
|
||
|
$instance->setTimeCreation(
|
||
|
(new DateTime('now', new DateTimeZone('UTC')))->setTimestamp($apiResult->time_creation)
|
||
|
);
|
||
|
}
|
||
|
if (!empty($apiResult->time_update)) {
|
||
|
$instance->setTimeUpdate(
|
||
|
(new DateTime('now', new DateTimeZone('UTC')))->setTimestamp($apiResult->time_update)
|
||
|
);
|
||
|
}
|
||
|
if (!empty($apiResult->state)) {
|
||
|
$instance->setState($apiResult->state);
|
||
|
}
|
||
|
|
||
|
return $instance;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param array $dbState
|
||
|
*
|
||
|
* @throws Exception
|
||
|
* @return CashPointClosingResponse
|
||
|
*/
|
||
|
public static function fromDbState(array $dbState): CashPointClosingResponse
|
||
|
{
|
||
|
$instance = new self(
|
||
|
$dbState['client_id'],
|
||
|
(int)$dbState['cash_point_closing_export_id'],
|
||
|
isset($dbState['head']) ? CashPointClosingHead::fromDbState($dbState['head']) : null,
|
||
|
isset($dbState['cash_statement']) ? CashPointClosingCashStatement::fromDbState(
|
||
|
$dbState['cash_statement']
|
||
|
) : null,
|
||
|
isset($dbState['transactions']) ? CashPointClosingTransactionCollection::fromDbState(
|
||
|
$dbState['transactions']
|
||
|
) : null
|
||
|
);
|
||
|
if (!empty($dbState['time_creation'])) {
|
||
|
$instance->setTimeCreation(
|
||
|
(new DateTime('now', new DateTimeZone('UTC')))->setTimestamp($dbState['time_creation'])
|
||
|
);
|
||
|
}
|
||
|
if (!empty($dbState['time_update'])) {
|
||
|
$instance->setTimeUpdate(
|
||
|
(new DateTime('now', new DateTimeZone('UTC')))->setTimestamp($dbState['time_update'])
|
||
|
);
|
||
|
}
|
||
|
if (!empty($dbState['state'])) {
|
||
|
$instance->setState($dbState['state']);
|
||
|
}
|
||
|
|
||
|
return $instance;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return array
|
||
|
*/
|
||
|
public function toArray(): array
|
||
|
{
|
||
|
$dbState = parent::toArray();
|
||
|
if ($this->timeCreation !== null) {
|
||
|
$dbState['time_creation'] = $this->timeCreation->getTimestamp();
|
||
|
}
|
||
|
if ($this->timeUpdate !== null) {
|
||
|
$dbState['time_update'] = $this->timeUpdate->getTimestamp();
|
||
|
}
|
||
|
if ($this->state !== null) {
|
||
|
$dbState['state'] = $this->state;
|
||
|
}
|
||
|
if ($this->error !== null) {
|
||
|
$dbState['error'] = $this->error->toArray();
|
||
|
}
|
||
|
|
||
|
return $dbState;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return stdClass
|
||
|
*/
|
||
|
public function toApiResult(): stdClass
|
||
|
{
|
||
|
$apiResult = parent::toApiResult();
|
||
|
if ($this->timeCreation !== null) {
|
||
|
$apiResult->time_creation = $this->timeCreation->getTimestamp();
|
||
|
}
|
||
|
if ($this->timeUpdate !== null) {
|
||
|
$apiResult->time_update = $this->timeUpdate->getTimestamp();
|
||
|
}
|
||
|
if ($this->state !== null) {
|
||
|
$apiResult->state = $this->state;
|
||
|
}
|
||
|
|
||
|
return $apiResult;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return DateTimeInterface|null
|
||
|
*/
|
||
|
public function getTimeCreation(): ?DateTimeInterface
|
||
|
{
|
||
|
return $this->timeCreation;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param DateTimeInterface|null $timeCreation
|
||
|
*/
|
||
|
public function setTimeCreation(?DateTimeInterface $timeCreation): void
|
||
|
{
|
||
|
$this->timeCreation = $timeCreation;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return DateTimeInterface|null
|
||
|
*/
|
||
|
public function getTimeUpdate(): ?DateTimeInterface
|
||
|
{
|
||
|
return $this->timeUpdate;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param DateTimeInterface|null $timeUpdate
|
||
|
*/
|
||
|
public function setTimeUpdate(?DateTimeInterface $timeUpdate): void
|
||
|
{
|
||
|
$this->timeUpdate = $timeUpdate;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return string|null
|
||
|
*/
|
||
|
public function getState(): ?string
|
||
|
{
|
||
|
return $this->state;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param string|null $state
|
||
|
*/
|
||
|
public function setState(?string $state): void
|
||
|
{
|
||
|
$this->state = $state;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return ErrorMessage|null
|
||
|
*/
|
||
|
public function getError(): ?ErrorMessage
|
||
|
{
|
||
|
return $this->error === null ? null : ErrorMessage::fromDbState($this->error->toArray());
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param ErrorMessage|null $error
|
||
|
*/
|
||
|
public function setError(?ErrorMessage $error): void
|
||
|
{
|
||
|
$this->error = $error === null ? null : ErrorMessage::fromDbState($error->toArray());
|
||
|
}
|
||
|
}
|