Răsfoiți Sursa

feat: :sparkles: feat(redirecionamento-dashboard) Foi ajustado a exibição de dados na response do sistema

Foi ajustado na dashboard a exibição apenas das oportunidades ligadas ao prestador, tambem foi realizado um ajuste no codigo para que na response aprecesse apenas dados importantes necessarios para a listagem e consequentemente retirando os dados mais sensiveis que estavam aparecendo como no ex;. do codigo de verificação!

fase:dev | origin:escopo
kayo henrique 1 lună în urmă
părinte
comite
682fbe10d5

+ 1 - 1
app/Models/Client.php

@@ -28,7 +28,7 @@ class Client extends Model
      */
     public function user(): BelongsTo
     {
-        return $this->belongsTo(User::class);
+        return $this->belongsTo(User::class)->select('id', 'name');
     }
 
     /**

+ 1 - 1
app/Models/CustomSchedule.php

@@ -35,7 +35,7 @@ class CustomSchedule extends Model
 
     public function serviceType(): HasOne
     {
-        return $this->hasOne(ServiceType::class, 'id', 'service_type_id');
+        return $this->hasOne(ServiceType::class, 'id', 'service_type_id')->select('id', 'description');
     }
 
     public function specialities(): HasMany

+ 3 - 3
app/Models/Schedule.php

@@ -37,7 +37,7 @@ class Schedule extends Model
 
     public function client()
     {
-        return $this->belongsTo(Client::class);
+        return $this->belongsTo(Client::class)->select('id', 'user_id','average_rating');
     }
 
     public function provider()
@@ -47,12 +47,12 @@ class Schedule extends Model
 
     public function address()
     {
-        return $this->belongsTo(Address::class, 'address_id');
+        return $this->belongsTo(Address::class, 'address_id')->select('id','district');
     }
 
     public function customSchedule()
     {
-        return $this->hasOne(CustomSchedule::class);
+        return $this->hasOne(CustomSchedule::class)->select('id', 'service_type_id', 'min_price', 'max_price', 'schedule_id');
     }
 
     public function proposals()

+ 34 - 25
app/Services/CustomScheduleService.php

@@ -32,27 +32,17 @@ class CustomScheduleService
   }
 
   public function getById($id)
-{
+  {
     $customSchedule = CustomSchedule::with([
-        'schedule.client.user',
-        'schedule.address',
-        'serviceType',
-        'specialities.speciality'
+      'schedule.client.user',
+      'schedule.address',
+      'serviceType',
+      'specialities.speciality'
     ])->find($id);
 
-    if (!$customSchedule) {
-        $customSchedule = CustomSchedule::with([
-            'schedule.client.user',
-            'schedule.address',
-            'serviceType',
-            'specialities.speciality'
-        ])
-        ->where('schedule_id', $id)
-        ->firstOrFail();
-    }
 
     return $customSchedule;
-}
+  }
 
   public function create(array $data)
   {
@@ -227,18 +217,21 @@ class CustomScheduleService
       ->get();
 
     $grouped = $this->formatCustomSchedules($schedules);
-   
+
     return $grouped;
   }
 
   public function getAvailableOpportunities($providerId)
   {
+
+    $provider = Provider::find($providerId);
+
     $opportunities = Schedule::with([
-        'client.user',
-        'address',
-        'customSchedule.serviceType',
-        'customSchedule.specialities'
-      ])
+      'client.user',
+      'address',
+      'customSchedule.serviceType',
+      'customSchedule.specialities'
+    ])
       ->leftJoin('schedule_refuses', function ($join) use ($providerId) {
         $join->on('schedules.id', '=', 'schedule_refuses.schedule_id')
           ->where('schedule_refuses.provider_id', $providerId);
@@ -248,7 +241,23 @@ class CustomScheduleService
       ->where('schedules.status', 'pending')
       ->whereNull('schedules.provider_id')
       ->whereDate('schedules.date', '>=', now()->toDateString())
-      ->select('schedules.*')
+      ->select(
+        'schedules.id',
+        'schedules.client_id',
+        'schedules.address_id',
+        'schedules.date',
+        'schedules.period_type',
+        'schedules.start_time',
+        'schedules.end_time',
+        'schedules.total_amount',
+        DB::raw("CASE
+           WHEN schedules.period_type = '2' THEN {$provider->daily_price_2h}
+           WHEN schedules.period_type = '4' THEN {$provider->daily_price_4h}
+           WHEN schedules.period_type = '6' THEN {$provider->daily_price_6h}
+           WHEN schedules.period_type = '8' THEN {$provider->daily_price_8h}
+           ELSE 0
+         END as total_amount"),
+      )
       ->get();
 
     $availableOpportunities = $opportunities->filter(function ($opportunity) use ($providerId) {
@@ -386,12 +395,12 @@ class CustomScheduleService
     $provider_id = $providerId;
 
     $date = Carbon::parse($schedule->date);
-    $dayOfWeek = $date->dayOfWeek;//0-6
+    $dayOfWeek = $date->dayOfWeek; //0-6
     $startTime = $schedule->start_time;
     $endTime = $schedule->end_time;
     $date_ymd = $date->format('Y-m-d');
     $period = $startTime < '13:00:00' ? 'morning' : 'afternoon';
-    $period_type = $schedule->period_type;//2,4,6,8
+    $period_type = $schedule->period_type; //2,4,6,8
 
     // bloqueio 2 schedules por semana para o mesmo client e provider
     ScheduleBusinessRules::validateWeeklyScheduleLimit(

+ 37 - 29
app/Services/DashboardService.php

@@ -12,6 +12,7 @@ use App\Models\Schedule;
 use App\Models\ScheduleProposal;
 use App\Models\Speciality;
 use App\Rules\ScheduleBusinessRules;
+use App\Services\CustomScheduleService;
 use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\DB;
 use Illuminate\Support\Facades\Log;
@@ -49,7 +50,7 @@ class DashboardService
     $nextSchedules = Schedule::with('address:district,address,complement,number,source_id,source,id,address_type')
       ->where('schedules.client_id', $cliente->id)
       ->whereIn('schedules.status', ['accepted', 'paid'])
-       ->whereDate('schedules.date', '>=', now()->toDateString())
+      ->whereDate('schedules.date', '>=', now()->toDateString())
       ->leftJoin('users as provider_user', 'provider_user.id', '=', 'providers.user_id')
       ->leftJoin('custom_schedules', 'custom_schedules.schedule_id', '=', 'schedules.id')
       ->where('schedules.date', '>=', now()->toDateString())
@@ -424,34 +425,41 @@ class DashboardService
       ->orderBy('schedules.date', 'asc')
       ->get();
 
-    $opportunities = Schedule::with('address:district,source_id,source,id')
-      ->where('schedules.schedule_type', 'custom')
-      ->where('schedules.status', 'pending')
-      ->whereDate('schedules.date', '>=', now()->toDateString())
-      ->leftJoin('clients', 'clients.id', '=', 'schedules.client_id')
-      ->leftJoin('users as client_user', 'client_user.id', '=', 'clients.user_id')
-      ->leftJoin('custom_schedules', 'custom_schedules.schedule_id', '=', 'schedules.id')
-      ->select(
-        'schedules.id',
-        'client_user.name as client_name',
-        'clients.average_rating',
-        'schedules.date',
-        'schedules.start_time',
-        'schedules.end_time',
-        'schedules.period_type',
-        'schedules.schedule_type',
-        'schedules.address_id',
-        'custom_schedules.address_type',
-        DB::raw("CASE
-          WHEN schedules.period_type = '2' THEN {$provider->daily_price_2h}
-          WHEN schedules.period_type = '4' THEN {$provider->daily_price_4h}
-          WHEN schedules.period_type = '6' THEN {$provider->daily_price_6h}
-          WHEN schedules.period_type = '8' THEN {$provider->daily_price_8h}
-          ELSE 0
-        END as total_amount"),
-      )
-      ->orderBy('schedules.date', 'asc')
-      ->get();
+    // $opportunities = Schedule::with('address:district,source_id,source,id')
+    //   ->where('schedules.schedule_type', 'custom')
+    //   ->where('schedules.status', 'pending')
+    //   ->whereDate('schedules.date', '>=', now()->toDateString())
+    //   ->leftJoin('clients', 'clients.id', '=', 'schedules.client_id')
+    //   ->leftJoin('users as client_user', 'client_user.id', '=', 'clients.user_id')
+    //   ->leftJoin('custom_schedules', 'custom_schedules.schedule_id', '=', 'schedules.id')
+    //   ->select(
+    //     'schedules.id',
+    //     'custom_schedules.id as custom_schedule_id',
+    //     'client_user.name as client_name',
+    //     'clients.average_rating',
+    //     'schedules.date',
+    //     'schedules.start_time',
+    //     'schedules.end_time',
+    //     'schedules.period_type',
+    //     'schedules.schedule_type',
+    //     'schedules.address_id',
+    //     'custom_schedules.address_type',
+    //     DB::raw("CASE
+    //       WHEN schedules.period_type = '2' THEN {$provider->daily_price_2h}
+    //       WHEN schedules.period_type = '4' THEN {$provider->daily_price_4h}
+    //       WHEN schedules.period_type = '6' THEN {$provider->daily_price_6h}
+    //       WHEN schedules.period_type = '8' THEN {$provider->daily_price_8h}
+    //       ELSE 0
+    //     END as total_amount"),
+    //   )
+    //   ->orderBy('schedules.date', 'asc')
+    //   ->get();
+
+    $customScheduleService = new CustomScheduleService();
+
+    $opportunities = $customScheduleService->getAvailableOpportunities($provider->id);
+
+    
 
     return [
       'headerBar' => $headerBar,