| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- <?php
- namespace App\Data\Pagarme\Request\PagarmeCustomerRequestData;
- use App\Data\Pagarme\PagarmeData;
- use App\Data\Pagarme\Request\PagarmeCustomerRequestData\PagarmeCustomerPhonesRequestData\PagarmeCustomerPhonesRequestData;
- final readonly class PagarmeCustomerRequestData extends PagarmeData
- {
- public function __construct(
- public string $name,
- public string $email,
- public string $document,
- public string $type,
- public string $documentType,
- public string $code,
- public ?PagarmeCustomerAddressRequestData $address = null,
- public ?PagarmeCustomerPhonesRequestData $phones = null,
- ) {
- self::requireFilled($this->name, 'name');
- self::requireFilled($this->email, 'email');
- self::requireFilled($this->document, 'document');
- self::requireIn($this->type, ['individual', 'company'], 'type');
- self::requireIn($this->documentType, ['CPF', 'CNPJ'], 'document_type');
- self::requireFilled($this->code, 'code');
- }
- public static function fromPayload(
- ?string $name,
- ?string $email,
- ?string $document,
- string $code,
- array $addressData = [],
- ?string $phone = null,
- ): self {
- $document = self::digits($document);
- return new self(
- name: $name ?: 'Cliente',
- email: (string) $email,
- document: $document,
- type: strlen($document) === 14 ? 'company' : 'individual',
- documentType: strlen($document) === 14 ? 'CNPJ' : 'CPF',
- code: $code,
- address: PagarmeCustomerAddressRequestData::fromPayload($addressData),
- phones: PagarmeCustomerPhonesRequestData::fromPhone($phone),
- );
- }
- public function toArray(): array
- {
- return $this->filterFilledRecursive([
- 'name' => $this->name,
- 'email' => $this->email,
- 'document' => $this->document,
- 'type' => $this->type,
- 'document_type' => $this->documentType,
- 'code' => $this->code,
- 'address' => $this->address,
- 'phones' => $this->phones,
- ]);
- }
- }
|