Gustavo Zanatta преди 2 седмици
родител
ревизия
113b3e7c39
променени са 1 файла, в които са добавени 30 реда и са изтрити 1 реда
  1. 30 1
      app/Services/DashboardService.php

+ 30 - 1
app/Services/DashboardService.php

@@ -872,13 +872,42 @@ class DashboardService
                 : 'schedule-'.$schedule->id)
             ->values();
 
-        $pendingSchedules->each(function ($schedule) {
+        $packageSchedules = collect();
+
+        $listedPackageIds = $pendingSchedules->pluck('service_package_id')->filter()->unique();
+
+        if ($listedPackageIds->isNotEmpty()) {
+            $packageSchedules = Schedule::query()
+                ->join('service_package_items as spi', 'spi.schedule_id', '=', 'schedules.id')
+                ->whereIn('spi.service_package_id', $listedPackageIds)
+                ->whereNotIn('schedules.status', ['cancelled', 'rejected'])
+                ->orderBy('schedules.date', 'asc')
+                ->orderBy('schedules.start_time', 'asc')
+                ->select([
+                    'schedules.id',
+                    'schedules.date',
+                    'schedules.start_time',
+                    'schedules.end_time',
+                    'schedules.total_amount',
+                    'schedules.offers_meal',
+                    'schedules.status',
+                    'spi.service_package_id',
+                ])
+                ->get()
+                ->groupBy('service_package_id');
+        }
+
+        $pendingSchedules->each(function ($schedule) use ($packageSchedules) {
             $schedule->address = [
                 'address'  => $schedule->address_address,
                 'number'   => $schedule->address_number,
                 'district' => $schedule->address_district,
             ];
 
+            $schedule->package_items = $schedule->service_package_id
+                ? $packageSchedules->get($schedule->service_package_id, collect())->values()
+                : collect();
+
             unset(
                 $schedule->address_address,
                 $schedule->address_number,