| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- <?php
- namespace App\Http\Controllers;
- use App\Http\Controllers\Concerns\ResolvesActiveUnit;
- use App\Models\Student;
- use App\Models\StudentContract;
- use Illuminate\Http\JsonResponse;
- class FranchiseeDashboardController extends Controller
- {
- use ResolvesActiveUnit;
- public function summary(): JsonResponse
- {
- $unitId = $this->activeUnitId();
- abort_if(!$unitId, 404, 'Unidade não encontrada.');
- $students = Student::where('unit_id', $unitId)->get(['id', 'name', 'birth_date', 'created_at']);
- $contracts = StudentContract::where('unit_id', $unitId)->get(['id', 'status']);
- return $this->successResponse(payload: [
- 'students_count' => $students->count(),
- '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(),
- ]);
- }
- }
|