Gustavo Zanatta 1 päivä sitten
vanhempi
commit
06b0382ecd

+ 0 - 3
app/Http/Controllers/CustomScheduleController.php

@@ -8,9 +8,7 @@ use App\Http\Requests\CustomScheduleProposeRequest;
 use App\Http\Requests\CustomScheduleRefuseOpportunityRequest;
 use App\Http\Requests\CustomScheduleRefuseOpportunityRequest;
 use App\Http\Requests\CustomScheduleVerifyCodeRequest;
 use App\Http\Requests\CustomScheduleVerifyCodeRequest;
 use App\Http\Resources\CustomScheduleResource;
 use App\Http\Resources\CustomScheduleResource;
-use App\Models\Client;
 use App\Services\CustomScheduleService;
 use App\Services\CustomScheduleService;
-use Auth;
 use Illuminate\Http\JsonResponse;
 use Illuminate\Http\JsonResponse;
 use Illuminate\Support\Facades\Log;
 use Illuminate\Support\Facades\Log;
 
 
@@ -215,5 +213,4 @@ class CustomScheduleController extends Controller
       return $this->errorResponse($e->getMessage(), 400);
       return $this->errorResponse($e->getMessage(), 400);
     }
     }
   }
   }
-
 }
 }

+ 8 - 9
app/Services/CustomScheduleService.php

@@ -214,18 +214,18 @@ class CustomScheduleService
       ->get();
       ->get();
 
 
     $grouped = $this->formatCustomSchedules($schedules);
     $grouped = $this->formatCustomSchedules($schedules);
-
+   
     return $grouped;
     return $grouped;
   }
   }
 
 
   public function getAvailableOpportunities($providerId)
   public function getAvailableOpportunities($providerId)
   {
   {
     $opportunities = Schedule::with([
     $opportunities = Schedule::with([
-      'client.user',
-      'address',
-      'customSchedule.serviceType',
-      'customSchedule.specialities'
-    ])
+        'client.user',
+        'address',
+        'customSchedule.serviceType',
+        'customSchedule.specialities'
+      ])
       ->leftJoin('schedule_refuses', function ($join) use ($providerId) {
       ->leftJoin('schedule_refuses', function ($join) use ($providerId) {
         $join->on('schedules.id', '=', 'schedule_refuses.schedule_id')
         $join->on('schedules.id', '=', 'schedule_refuses.schedule_id')
           ->where('schedule_refuses.provider_id', $providerId);
           ->where('schedule_refuses.provider_id', $providerId);
@@ -368,12 +368,12 @@ class CustomScheduleService
     $provider_id = $providerId;
     $provider_id = $providerId;
 
 
     $date = Carbon::parse($schedule->date);
     $date = Carbon::parse($schedule->date);
-    $dayOfWeek = $date->dayOfWeek; //0-6
+    $dayOfWeek = $date->dayOfWeek;//0-6
     $startTime = $schedule->start_time;
     $startTime = $schedule->start_time;
     $endTime = $schedule->end_time;
     $endTime = $schedule->end_time;
     $date_ymd = $date->format('Y-m-d');
     $date_ymd = $date->format('Y-m-d');
     $period = $startTime < '13:00:00' ? 'morning' : 'afternoon';
     $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
     // bloqueio 2 schedules por semana para o mesmo client e provider
     ScheduleBusinessRules::validateWeeklyScheduleLimit(
     ScheduleBusinessRules::validateWeeklyScheduleLimit(
@@ -552,5 +552,4 @@ class CustomScheduleService
 
 
     return $schedule_refuse;
     return $schedule_refuse;
   }
   }
-
 }
 }

+ 45 - 33
app/Services/DashboardService.php

@@ -215,38 +215,6 @@ class DashboardService
 
 
     ->get();
     ->get();
 
 
-    //   $schedulesProposals = ScheduleProposal::query()
-    // ->leftJoin('schedules', 'schedule_proposals.schedule_id', '=', 'schedules.id')
-    // ->leftJoin('providers', 'schedule_proposals.provider_id', '=', 'providers.id')
-    // ->leftJoin('users', 'providers.user_id', '=', 'users.id')
-
-    // ->where('schedules.client_id', $cliente->id)
-    // ->where('schedules.schedule_type', 'custom')
-    // ->where('schedules.status', 'pending')
-
-    // ->orderBy('schedule_proposals.created_at', 'desc')
-
-    // ->select([
-    //     'schedule_proposals.id',
-
-
-    //     DB::raw("DATE_PART('year', AGE(providers.birth_date)) as idade"),
-    //     'providers.id as provider_id',
-    //     'schedules.id as schedule_id',
-    //     'schedules.date',
-    //     'schedules.start_time',
-    //     'schedules.end_time',
-    //     'schedules.period_type',
-    //     'schedules.total_amount',
-    //     'providers.daily_price_8h',
-    //     'providers.average_rating',
-    //     'providers.total_services',
-
-    //     'users.name as provider_name'
-    // ])
-
-    // ->get();
-
     $todaySchedules = Schedule::with('address:district,address,number,source_id,source,id,address_type')
     $todaySchedules = Schedule::with('address:district,address,number,source_id,source,id,address_type')
       ->where('schedules.client_id', $cliente->id)
       ->where('schedules.client_id', $cliente->id)
       ->whereIn('schedules.status', ['accepted', 'paid', 'started', 'finished'])
       ->whereIn('schedules.status', ['accepted', 'paid', 'started', 'finished'])
@@ -288,8 +256,52 @@ class DashboardService
       'lastDoneSchedules' => $lastDoneSchedules,
       'lastDoneSchedules' => $lastDoneSchedules,
       'favoriteProviders' => $favoriteProviders,
       'favoriteProviders' => $favoriteProviders,
       'providersClose'   => $providersClose,
       'providersClose'   => $providersClose,
-      'schedulesProposals' => $schedulesProposals,
       'todaySchedules'   => $todaySchedules,
       'todaySchedules'   => $todaySchedules,
+      'schedulesProposals' => $schedulesProposals,
+    ];
+  }
+
+  public function getScheduleClienteDetails(int $scheduleId): array
+  {
+    $user = Auth::user();
+    $cliente = Client::where('user_id', $user->id)->firstOrFail();
+
+    $schedule = Schedule::where('schedules.id', $scheduleId)
+      ->where('schedules.client_id', $cliente->id)
+      ->leftJoin('providers', 'providers.id', '=', 'schedules.provider_id')
+      ->leftJoin('users as provider_user', 'provider_user.id', '=', 'providers.user_id')
+      ->leftJoin('custom_schedules', 'custom_schedules.schedule_id', '=', 'schedules.id')
+      ->leftJoin('media', 'media.id', '=', 'providers.profile_media_id')
+      ->select(
+        'schedules.provider_id',
+        'provider_user.name as provider_name',
+        'providers.birth_date as provider_birth_date',
+        'media.url as provider_photo',
+        'custom_schedules.offers_meal',
+      )
+      ->firstOrFail();
+
+    $allSpecialities = Speciality::where('active', true)
+      ->select('id', 'description')
+      ->orderBy('description')
+      ->get();
+
+    $providerSpecialityIds = ProviderSpeciality::where('provider_id', $schedule->provider_id)
+      ->pluck('speciality_id')
+      ->all();
+
+    $specialities = $allSpecialities->map(fn($sp) => [
+      'id'             => $sp->id,
+      'description'    => $sp->description,
+      'has_speciality' => in_array($sp->id, $providerSpecialityIds),
+    ])->values();
+
+    return [
+      'provider_name'       => $schedule->provider_name,
+      'provider_birth_date' => $schedule->provider_birth_date,
+      'provider_photo'      => $schedule->provider_photo,
+      'offers_meal'         => $schedule->offers_meal,
+      'specialities'        => $specialities,
     ];
     ];
   }
   }