CustomerRequestData.php 1.4 KB

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