Gustavo Zanatta 2 долоо хоног өмнө
parent
commit
113b3e7c39

+ 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,