id ?? 0); $weeklyCollection = collect($weekly); $matchedReport = $weeklyCollection->first(fn ($weeklyReport) => (int) ($weeklyReport->id ?? 0) === $reportId); if ($matchedReport) { $report = $matchedReport; } $weekStart = $report->week_start?->format('Y-m-d') ?? ''; $weekEnd = $report->week_end?->format('Y-m-d'); $sectionId = (int) ($report->class_section_id ?? 0); $sectionName = $report->class_section_name ?? $report->classSection?->class_section_name ?? ''; $weeklyReports = ClassProgressReportResource::collection($weeklyCollection); $reports = []; $reportsArray = []; foreach ($weekly as $weeklyReport) { $subject = (string) ($weeklyReport->subject ?? ''); if ($subject === '') { continue; } $reportArray = (new ClassProgressReportResource($weeklyReport))->toArray($request); $reports[$subject] = $reportArray; $reportsArray[] = $reportArray; } return [ 'id' => $reportId, 'report_id' => $reportId, 'view_url' => url('/api/v1/class-progress/'.$reportId), 'parent_view_url' => url('/api/v1/parents/progress/'.$reportId), 'report' => new ClassProgressReportResource($report), 'weekly_reports' => $weeklyReports, 'items' => $weeklyReports, 'reports_array' => $reportsArray, 'report_list' => $reportsArray, 'reports' => $reports, 'group' => [ 'id' => $reportId, 'report_id' => $reportId, 'view_url' => url('/api/v1/class-progress/'.$reportId), 'parent_view_url' => url('/api/v1/parents/progress/'.$reportId), 'week_start' => $weekStart, 'week_end' => $weekEnd, 'class_section_id' => $sectionId, 'class_section_name' => $sectionName, 'reports' => $reports, 'weekly_reports' => $weeklyReports, 'reports_array' => $reportsArray, 'report_list' => $reportsArray, 'subjects' => array_keys($reports), ], 'status_options' => $this['status_options'] ?? [], ]; } }