activeUnitId(); abort_if(! $unitId, 404, 'Unidade não encontrada.'); $students = Student::where('unit_id', $unitId)->get(['id', 'name', 'birth_date', 'created_at']); $contracts = StudentContract::latestVersion()->where('unit_id', $unitId)->get(['id', 'status']); $unit = \App\Models\Unit::find($unitId); $studentsByStatus = Student::where('unit_id', $unitId)->get(['status']); return $this->successResponse(payload: [ 'students_count' => $students->count(), 'students_by_status' => [ 'lead' => $studentsByStatus->where('status', Student::STATUS_LEAD)->count(), 'active' => $studentsByStatus->where('status', Student::STATUS_ACTIVE)->count(), 'ex_student' => $studentsByStatus->where('status', Student::STATUS_EX_STUDENT)->count(), 'locked' => $studentsByStatus->where('status', Student::STATUS_LOCKED)->count(), ], 'unit_config' => [ 'active_students_min' => $unit->active_students_min ?? 30, 'active_students_medium' => $unit->active_students_medium ?? 50, 'active_students_max' => $unit->active_students_max ?? 80, ], 'contracts' => [ 'active' => $contracts->where('status', 'active')->count(), 'frozen' => $contracts->where('status', 'frozen')->count(), 'cancelled' => $contracts->where('status', 'cancelled')->count(), ], 'birthdays' => $students ->filter(fn (Student $student) => $student->birth_date?->month === now()->month) ->map(fn (Student $student) => [ 'day' => $student->birth_date->day, 'name' => $student->name, ]) ->sortBy('day') ->values(), 'enrollments' => $students->map(fn (Student $student) => [ 'created_at' => $student->created_at?->toISOString(), ])->values(), ]); } }