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()); } }