CustomerRequestData.php 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. <?php
  2. namespace App\Data\Pagarme\Customer;
  3. use App\Data\Pagarme\PagarmeData;
  4. use App\Data\Pagarme\Customer\Parts\Request\AddressData;
  5. use App\Data\Pagarme\Customer\Parts\Request\PhonesData;
  6. final readonly class CustomerRequestData extends PagarmeData
  7. {
  8. public function __construct(
  9. public string $name,
  10. public string $email,
  11. public string $document,
  12. public string $type,
  13. public string $documentType,
  14. public string $code,
  15. public ?AddressData $address = null,
  16. public ?PhonesData $phones = null,
  17. ) {
  18. self::requireFilled($this->name, 'name');
  19. self::requireFilled($this->email, 'email');
  20. self::requireFilled($this->document, 'document');
  21. self::requireIn($this->type, ['individual', 'company'], 'type');
  22. self::requireIn($this->documentType, ['CPF', 'CNPJ'], 'document_type');
  23. self::requireFilled($this->code, 'code');
  24. }
  25. public function toArray(): array
  26. {
  27. return $this->filterFilledRecursive([
  28. 'name' => $this->name,
  29. 'email' => $this->email,
  30. 'document' => $this->document,
  31. 'type' => $this->type,
  32. 'document_type' => $this->documentType,
  33. 'code' => $this->code,
  34. 'address' => $this->address,
  35. 'phones' => $this->phones,
  36. ]);
  37. }
  38. }