Kaynağa Gözat

Merge branch 'bugfix/DIARIA-kay-ajuste-visual-payload' into development

Gustavo Zanatta 2 hafta önce
ebeveyn
işleme
76b4e66dd0

+ 2 - 1
app/Http/Controllers/ClientPaymentMethodController.php

@@ -3,6 +3,7 @@
 namespace App\Http\Controllers;
 
 use App\Http\Requests\ClientPaymentMethodRequest;
+use App\Http\Resources\CardsListResource;
 use App\Http\Resources\ClientPaymentMethodResource;
 use App\Services\ClientPaymentMethodService;
 use Illuminate\Http\JsonResponse;
@@ -18,7 +19,7 @@ class ClientPaymentMethodController extends Controller
         $paymentMethods = $this->service->getByClientId($clientId);
 
         return $this->successResponse(
-            payload: ClientPaymentMethodResource::collection($paymentMethods)
+            payload: CardsListResource::collection($paymentMethods)
         );
     }
 

+ 48 - 0
app/Http/Requests/ProviderPaymentMethodRequest.php

@@ -0,0 +1,48 @@
+<?php
+
+namespace App\Http\Requests;
+
+use App\Enums\AccountTypeEnum;
+use App\Enums\BankAccountTypeEnum;
+use Illuminate\Foundation\Http\FormRequest;
+use Illuminate\Validation\Rule;
+
+class ProviderPaymentMethodRequest extends FormRequest
+{
+    public function authorize(): bool
+    {
+        return true;
+    }
+
+    public function rules(): array
+    {
+
+        if ($this->account_type == AccountTypeEnum::PIX->value) {
+
+            $rules =  [
+                'account_type' => ['sometimes', Rule::in([AccountTypeEnum::PIX->value, AccountTypeEnum::BANK_ACCOUNT->value])],
+                'pix_key' => ['required', 'string', 'max:255', Rule::requiredIf($this->account_type === AccountTypeEnum::PIX->value)],
+                'bank_account_type' => ['nullable', Rule::in([BankAccountTypeEnum::CHECKING->value, BankAccountTypeEnum::SAVINGS->value]), Rule::requiredIf($this->account_type === AccountTypeEnum::BANK_ACCOUNT->value)],
+                'agency' => ['nullable', 'string', 'max:255', Rule::requiredIf($this->account_type === AccountTypeEnum::BANK_ACCOUNT->value)],
+                'account' => ['nullable', 'string', 'max:255', Rule::requiredIf($this->account_type === AccountTypeEnum::BANK_ACCOUNT->value)],
+                'digit' => ['nullable', 'string', 'max:255', Rule::requiredIf($this->account_type === AccountTypeEnum::BANK_ACCOUNT->value)],
+            ];
+        } else {
+            $rules =  [
+                'account_type' => ['sometimes', Rule::in([AccountTypeEnum::PIX->value, AccountTypeEnum::BANK_ACCOUNT->value])],
+                'pix_key' => ['nullable', 'string', 'max:255', Rule::requiredIf($this->account_type === AccountTypeEnum::PIX->value)],
+                'bank_account_type' => ['sometimes', Rule::in([BankAccountTypeEnum::CHECKING->value, BankAccountTypeEnum::SAVINGS->value]), Rule::requiredIf($this->account_type === AccountTypeEnum::BANK_ACCOUNT->value)],
+                'agency' => ['sometimes', 'string', 'max:255', Rule::requiredIf($this->account_type === AccountTypeEnum::BANK_ACCOUNT->value)],
+                'account' => ['sometimes', 'string', 'max:255', Rule::requiredIf($this->account_type === AccountTypeEnum::BANK_ACCOUNT->value)],
+                'digit' => ['sometimes', 'string', 'max:255', Rule::requiredIf($this->account_type === AccountTypeEnum::BANK_ACCOUNT->value)],
+            ];
+        }
+
+        if ($this->isMethod('post')) {
+            $rules['provider_id'] =  ['required', 'exists:providers,id'];
+        };
+
+
+        return $rules;
+    }
+}

+ 20 - 0
app/Http/Resources/CardsListResource.php

@@ -0,0 +1,20 @@
+<?php
+
+namespace App\Http\Resources;
+
+use Illuminate\Http\Request;
+use Illuminate\Http\Resources\Json\JsonResource;
+
+class CardsListResource extends JsonResource
+{
+    public function toArray(Request $request): array
+    {
+        return [
+            'id' => $this->id,
+            'brand' => $this->brand,
+            'last_four_digits' => $this->last_four_digits,
+            'card_name' => $this->card_name,
+
+        ];
+    }
+}

+ 23 - 0
app/Http/Resources/ProviderPaymentMethodResource.php

@@ -0,0 +1,23 @@
+<?php
+
+namespace App\Http\Resources;
+
+use Illuminate\Http\Request;
+use Illuminate\Http\Resources\Json\JsonResource;
+
+class ProviderPaymentMethodResource extends JsonResource
+{
+    public function toArray(Request $request): array
+    {
+        return [
+            'id' => $this->id,
+            'provider_id' => $this->provider_id,
+            'account_type' => $this->account_type?->value,
+            'pix_key' => $this->pix_key,
+            'bank_account_type' => $this->bank_account_type?->value,
+            'agency' => $this->agency,
+            'account' => $this->account,
+            'digit' => $this->digit,
+        ];
+    }
+}

+ 6 - 0
app/Services/ClientPaymentMethodService.php

@@ -16,6 +16,12 @@ class ClientPaymentMethodService
     public function getByClientId(int $clientId): Collection
     {
         return ClientPaymentMethod::where('client_id', $clientId)
+            ->select(
+                'id',
+                'brand',
+                'last_four_digits',
+                'card_name'
+            )
             ->orderBy('is_active', 'desc')
             ->orderBy('created_at', 'desc')
             ->get();