PagarmeCustomerAddressRequestData.php 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. <?php
  2. namespace App\Data\Pagarme\Request\PagarmeCustomerRequestData;
  3. use App\Data\Pagarme\PagarmeData;
  4. final readonly class PagarmeCustomerAddressRequestData extends PagarmeData
  5. {
  6. public function __construct(
  7. public ?string $line1,
  8. public ?string $line2,
  9. public ?string $zipCode,
  10. public ?string $city,
  11. public ?string $state,
  12. public ?string $country,
  13. ) {}
  14. public static function fromPayload(array $data): self
  15. {
  16. $line1Parts = array_filter([
  17. (string) ($data['number'] ?? '0'),
  18. (string) ($data['address'] ?? ''),
  19. (string) ($data['district'] ?? ''),
  20. ], static fn ($value) => $value !== '');
  21. return new self(
  22. line1: implode(', ', $line1Parts),
  23. line2: (string) ($data['complement'] ?? $data['instructions'] ?? ''),
  24. zipCode: self::digits($data['zip_code'] ?? null),
  25. city: (string) ($data['city'] ?? ''),
  26. state: (string) ($data['state'] ?? ''),
  27. country: (string) ($data['country'] ?? 'BR'),
  28. );
  29. }
  30. public function toArray(): array
  31. {
  32. return $this->filterFilledRecursive([
  33. 'line_1' => $this->line1,
  34. 'line_2' => $this->line2,
  35. 'zip_code' => $this->zipCode,
  36. 'city' => $this->city,
  37. 'state' => $this->state,
  38. 'country' => $this->country,
  39. ]);
  40. }
  41. }