PagarmeOrderChargeResponseData.php 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. <?php
  2. namespace App\Data\Pagarme\Response\PagarmeOrderResponseData\PagarmeOrderChargeResponseData;
  3. final readonly class PagarmeOrderChargeResponseData
  4. {
  5. public function __construct(
  6. public ?string $id,
  7. public ?string $status,
  8. public ?int $amount,
  9. public ?string $currency,
  10. public ?string $paidAt,
  11. public ?string $createdAt,
  12. public ?PagarmeOrderTransactionResponseData $lastTransaction,
  13. ) {}
  14. public function transaction(): ?PagarmeOrderTransactionResponseData
  15. {
  16. return $this->lastTransaction;
  17. }
  18. public static function fromArray(array $payload): self
  19. {
  20. return new self(
  21. id: $payload['id'] ?? null,
  22. status: $payload['status'] ?? null,
  23. amount: isset($payload['amount']) ? (int) $payload['amount'] : null,
  24. currency: $payload['currency'] ?? null,
  25. paidAt: $payload['paid_at'] ?? null,
  26. createdAt: $payload['created_at'] ?? null,
  27. lastTransaction: ! empty($payload['last_transaction'])
  28. ? PagarmeOrderTransactionResponseData::fromArray($payload['last_transaction'])
  29. : null,
  30. );
  31. }
  32. public function toArray(): array
  33. {
  34. return array_filter([
  35. 'id' => $this->id,
  36. 'status' => $this->status,
  37. 'amount' => $this->amount,
  38. 'currency' => $this->currency,
  39. 'paid_at' => $this->paidAt,
  40. 'created_at' => $this->createdAt,
  41. 'last_transaction' => $this->lastTransaction?->toArray(),
  42. ], static fn ($v) => $v !== null);
  43. }
  44. }