Sfoglia il codice sorgente

Merge remote-tracking branch 'origin/feature/diariaapp-kay-agendamentos-sob-medida-apps' into development

Gustavo Zanatta 2 settimane fa
parent
commit
ac5a5771ec

+ 9 - 0
app/Http/Controllers/AddressController.php

@@ -63,4 +63,13 @@ class AddressController extends Controller
             code: 204,
         );
     }
+
+    public function showPrimaryBySource(AddressRequest $request): JsonResponse
+    {
+        $address = $this->addressService->findPrimaryBySource($request->validated());
+
+        return $this->successResponse(
+            payload: new AddressResource($address),
+        );
+    }
 }

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

@@ -2,6 +2,7 @@
 
 namespace App\Http\Controllers;
 
+use App\Http\Requests\CustomScheduleAvailableRequest;
 use App\Http\Requests\CustomScheduleRequest;
 use App\Http\Requests\CustomScheduleProposeRequest;
 use App\Http\Requests\CustomScheduleRefuseOpportunityRequest;
@@ -88,7 +89,7 @@ class CustomScheduleController extends Controller
     return $this->successResponse($grouped);
   }
 
-  public function available(CustomScheduleRequest $request)
+  public function available(CustomScheduleAvailableRequest $request)
   {
     try {
       $providerId = $request->query('provider_id');

+ 2 - 0
app/Http/Controllers/SpecialityController.php

@@ -43,4 +43,6 @@ class SpecialityController extends Controller
         $this->service->delete($id);
         return $this->successResponse(message: __('messages.deleted'), code: 204);
     }
+
+    
 }

+ 41 - 0
app/Http/Requests/CustomScheduleAvailableRequest.php

@@ -0,0 +1,41 @@
+<?php
+
+namespace App\Http\Requests;
+
+use Illuminate\Foundation\Http\FormRequest;
+
+class CustomScheduleAvailableRequest extends FormRequest
+{
+    /**
+     * Determine if the user is authorized to make this request.
+     */
+    public function authorize(): bool
+    {
+        return true;
+    }
+
+    /**
+     * Get the validation rules that apply to the request.
+     *
+     * @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
+     */
+    public function rules(): array
+    {
+        $rules = [
+            'provider_id' => 'required|exists:providers,id',
+        ];
+
+        return $rules;
+    }
+
+    /**
+     * Get custom messages for validator errors.
+     */
+    public function messages(): array
+    {
+        return [
+            'provider_id.required' => 'O ID do prestador é obrigatório.',
+            'provider_id.exists' => 'O prestador informado não existe.',
+        ];
+    }
+}

+ 1 - 1
app/Http/Requests/CustomScheduleRequest.php

@@ -34,7 +34,7 @@ class CustomScheduleRequest extends FormRequest
             'period_type' => 'required|in:2,4,6,8',
             'start_time' => 'required|date_format:H:i',
             'end_time' => 'required|date_format:H:i|after:start_time',
-            'quantity' => 'nullable|integer|min:1|max:10',
+            'quantity' => 'required|integer|min:1',
             'speciality_ids' => 'nullable|array',
             'speciality_ids.*' => 'exists:specialities,id',
         ];

+ 1 - 1
app/Http/Requests/ImprovementTypeRequest.php

@@ -13,7 +13,7 @@ class ImprovementTypeRequest extends FormRequest
             'description' => 'sometimes|string|max:255',
             'improvement_type' => ['sometimes', Rule::in(['client', 'provider', 'both'])],
             'is_active' => 'sometimes|boolean',
-            'origin' => ['sometimes', Rule::in(['client', 'provider'])] 
+            'origin' => ['sometimes', Rule::in(['client', 'both', 'provider'])] 
         ];
 
         if ($this->isMethod('POST')) {

+ 9 - 0
app/Services/AddressService.php

@@ -53,4 +53,13 @@ class AddressService
         $address = Address::findOrFail($id);
         return $address->delete();
     }
+
+    public function findPrimaryBySource(array $data): ?Address
+    {
+        return Address::where('source', $data['source'])
+            ->where('source_id', $data['source_id'])
+            ->whereNull('deleted_at')
+            ->orderBy('is_primary', 'desc')
+            ->first();
+    }
 }

+ 10 - 6
app/Services/ImprovementTypeService.php

@@ -10,12 +10,16 @@ class ImprovementTypeService
     public function getAll(string $origin): Collection
     {
         $improvement_types = ImprovementType::query()
-          ->orderBy('created_at', 'desc')
-          ->when($origin, function ($query) use ($origin) {
-              $query->where('improvement_type', $origin)
-                ->orWhere('improvement_type', 'both');
-          })
-          ->get();
+            ->orderBy('created_at', 'desc')
+            ->when($origin, function ($query) use ($origin) {
+                $query->when($origin === 'both', function ($query) {
+                    $query->whereIn('improvement_type', ['client', 'provider', 'both']);
+                })
+                    ->when($origin !== 'both', function ($query) use ($origin) {
+                        $query->where('improvement_type', $origin);
+                    });
+            })
+            ->get();
 
         return $improvement_types;
     }

+ 4 - 0
database/seeders/UserTypePermissionSeeder.php

@@ -71,6 +71,7 @@ class UserTypePermissionSeeder extends Seeder
             ['scope' => 'config.provider_services_types', 'bits' => 271],
             ['scope' => 'config.service_type', 'bits' => 1],
             ['scope' => 'config.schedule', 'bits' => 271],
+            ['scope' => 'config.custom_schedule', 'bits' => 271],
           ];
           $this->seedUserTypePermissions($providerPermissions, UserTypeEnum::PROVIDER->value);
           break;
@@ -88,6 +89,9 @@ class UserTypePermissionSeeder extends Seeder
             ['scope' => 'config.provider_blocked_day', 'bits' => 271],
             ['scope' => 'config.review', 'bits' => 271],
             ['scope' => 'config.schedule', 'bits' => 271],
+            ['scope' => 'config.custom_schedule', 'bits' => 271],
+            ['scope' => 'config.speciality', 'bits' => 271],
+            ['scope' => 'config.service_type', 'bits' => 271],
           ];
           $this->seedUserTypePermissions($clientPermissions, UserTypeEnum::CLIENT->value);
           break;

+ 2 - 1
routes/authRoutes/address.php

@@ -7,4 +7,5 @@ Route::get('/addresses', [AddressController::class, 'showBySource'])->middleware
 Route::get('/addresses/{id}', [AddressController::class, 'show'])->middleware('permission:config.address,view');
 Route::post('/addresses', [AddressController::class, 'store'])->middleware('permission:config.address,add');
 Route::put('/addresses/{id}', [AddressController::class, 'update'])->middleware('permission:config.address,edit');
-Route::delete('/addresses/{id}', [AddressController::class, 'destroy'])->middleware('permission:config.address,delete');
+Route::delete('/addresses/{id}', [AddressController::class, 'destroy'])->middleware('permission:config.address,delete');
+Route::get('/addresses-primary', [AddressController::class, 'showPrimaryBySource'])->middleware('permission:config.address,view');

+ 2 - 2
routes/authRoutes/custom_schedule.php

@@ -10,8 +10,8 @@ Route::put('/custom-schedule/{id}', [CustomScheduleController::class, 'update'])
 Route::delete('/custom-schedule/{id}', [CustomScheduleController::class, 'destroy'])->middleware('permission:config.custom_schedule,delete');
 Route::get('/schedules/grouped-by-client/custom', [CustomScheduleController::class, 'groupedByClientCustom']);
 
-Route::get('/custom-schedule/available', [CustomScheduleController::class, 'available'])->middleware('permission:config.custom_schedule,view');
-Route::get('/custom-schedule/provider-proposals', [CustomScheduleController::class, 'providerProposals'])->middleware('permission:config.custom_schedule,view');
+Route::get('/custom-schedule-available', [CustomScheduleController::class, 'available'])->middleware('permission:config.custom_schedule,view');
+Route::get('/custom-schedule-provider-proposals', [CustomScheduleController::class, 'providerProposals'])->middleware('permission:config.custom_schedule,view');
 Route::get('/custom-schedule/{scheduleId}/proposals', [CustomScheduleController::class, 'opportunityProposals'])->middleware('permission:config.custom_schedule,view');
 Route::post('/custom-schedule/{scheduleId}/propose', [CustomScheduleController::class, 'propose'])->middleware('permission:config.custom_schedule,add');
 Route::post('/custom-schedule/{proposalId}/accept', [CustomScheduleController::class, 'acceptProposal'])->middleware('permission:config.custom_schedule,edit');