Explorar o código

fix campos pagarme do prestador

Gustavo Zanatta hai 4 semanas
pai
achega
69aeb173b6

+ 3 - 3
app/Http/Requests/ProviderBankAccountRequest.php

@@ -16,9 +16,9 @@ class ProviderBankAccountRequest extends FormRequest
     {
     {
         return [
         return [
             'recipient_default_bank_account'                     => ['required', 'array'],
             'recipient_default_bank_account'                     => ['required', 'array'],
-            'recipient_default_bank_account.holder_name'         => ['required', 'string', 'max:255'],
-            'recipient_default_bank_account.holder_type'         => ['required', Rule::in(['individual', 'company'])],
-            'recipient_default_bank_account.holder_document'     => ['required', 'string', 'max:20'],
+            'recipient_default_bank_account.holder_name'         => ['sometimes', 'nullable', 'string', 'max:255'],
+            'recipient_default_bank_account.holder_type'         => ['sometimes', 'nullable', Rule::in(['individual', 'company'])],
+            'recipient_default_bank_account.holder_document'     => ['sometimes', 'nullable', 'string', 'max:20'],
             'recipient_default_bank_account.bank'                => ['required', 'string', 'max:20'],
             'recipient_default_bank_account.bank'                => ['required', 'string', 'max:20'],
             'recipient_default_bank_account.branch_number'       => ['required', 'string', 'max:20'],
             'recipient_default_bank_account.branch_number'       => ['required', 'string', 'max:20'],
             'recipient_default_bank_account.branch_check_digit'  => ['sometimes', 'nullable', 'string', 'max:10'],
             'recipient_default_bank_account.branch_check_digit'  => ['sometimes', 'nullable', 'string', 'max:10'],

+ 2 - 4
app/Services/Pagarme/PagarmeRecipientService.php

@@ -138,7 +138,7 @@ class PagarmeRecipientService
             type:              $bankAccountData['type'],
             type:              $bankAccountData['type'],
         );
         );
 
 
-        $raw = $this->pagarmeRequest(
+        $this->pagarmeRequest(
             method:         'PATCH',
             method:         'PATCH',
             path:           "/recipients/{$provider->recipient_id}/default-bank-account",
             path:           "/recipients/{$provider->recipient_id}/default-bank-account",
             payload:        $payload,
             payload:        $payload,
@@ -146,10 +146,8 @@ class PagarmeRecipientService
             errorMessage:   'Erro ao atualizar conta bancaria do recebedor no Pagar.me.',
             errorMessage:   'Erro ao atualizar conta bancaria do recebedor no Pagar.me.',
         );
         );
 
 
-        $recipientData = RecipientResponseData::fromArray($raw);
-
         $provider->forceFill([
         $provider->forceFill([
-            'recipient_default_bank_account' => $recipientData->defaultBankAccount?->toArray() ?: $payload->toArray()['bank_account'],
+            'recipient_default_bank_account' => $payload->toArray()['bank_account'],
         ])->save();
         ])->save();
 
 
         return $provider->fresh();
         return $provider->fresh();

+ 35 - 2
app/Services/ProviderService.php

@@ -270,17 +270,50 @@ class ProviderService
 
 
     public function updateBankAccount(int $id, array $bankAccountData): ?Provider
     public function updateBankAccount(int $id, array $bankAccountData): ?Provider
     {
     {
-        $provider = $this->findById($id);
+        $provider = Provider::with(['user', 'addresses.city', 'addresses.state'])->find($id);
 
 
         if (! $provider) {
         if (! $provider) {
             return null;
             return null;
         }
         }
 
 
-        $this->pagarmeRecipientService->updateDefaultBankAccount($provider, $bankAccountData);
+        $bankAccountData['holder_name']     = $bankAccountData['holder_name']     ?? $provider->user?->name;
+        $bankAccountData['holder_document'] = $bankAccountData['holder_document'] ?? $provider->document;
+        $bankAccountData['holder_type']     = $bankAccountData['holder_type']     ?? 'individual';
+
+        if (empty($provider->recipient_id)) {
+            $this->pagarmeRecipientService->createRecipientForProvider(
+                $provider,
+                $this->buildRecipientDataFromProvider($provider, $bankAccountData),
+            );
+        } else {
+            $this->pagarmeRecipientService->updateDefaultBankAccount($provider, $bankAccountData);
+        }
 
 
         return $provider->fresh(['user', 'profileMedia']);
         return $provider->fresh(['user', 'profileMedia']);
     }
     }
 
 
+    private function buildRecipientDataFromProvider(Provider $provider, array $bankAccountData): array
+    {
+        $address = $provider->addresses->first();
+
+        return [
+            'recipient_name'                 => $provider->user?->name,
+            'recipient_email'                => $provider->user?->email,
+            'recipient_document'             => $provider->document,
+            'recipient_type'                 => 'individual',
+            'recipient_payment_mode'         => 'bank_transfer',
+            'recipient_metadata'             => [],
+            'recipient_default_bank_account' => $bankAccountData,
+            'birth_date'                     => $provider->birth_date,
+            'phone'                          => $provider->user?->phone,
+            'address'                        => $address?->address,
+            'number'                         => $address?->number,
+            'city'                           => $address?->city?->name,
+            'state'                          => $address?->state?->code,
+            'zip_code'                       => $address?->zip_code,
+        ];
+    }
+
     //
     //
 
 
     private function createProviderAddress(int $providerId, array $data): void
     private function createProviderAddress(int $providerId, array $data): void