PagarmeOrderItemData.php 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. <?php
  2. namespace App\Data\Pagarme\Request\PagarmeOrderRequestData;
  3. use App\Data\Pagarme\PagarmeData;
  4. final readonly class PagarmeOrderItemData extends PagarmeData
  5. {
  6. public function __construct(
  7. public string $code,
  8. public int $amount,
  9. public int $quantity,
  10. public ?string $description = null,
  11. ) {
  12. self::requireFilled($this->code, 'items.code');
  13. self::requirePositiveInt($this->amount, 'items.amount');
  14. self::requirePositiveInt($this->quantity, 'items.quantity');
  15. }
  16. public static function fromArray(array $item): self
  17. {
  18. return new self(
  19. code: (string) $item['code'],
  20. amount: (int) $item['amount'],
  21. quantity: (int) $item['quantity'],
  22. description: $item['description'] ?? null,
  23. );
  24. }
  25. public function toArray(): array
  26. {
  27. return $this->filterFilledRecursive([
  28. 'code' => $this->code,
  29. 'amount' => $this->amount,
  30. 'quantity' => $this->quantity,
  31. 'description' => $this->description,
  32. ]);
  33. }
  34. }