FranchisorDashboardController.php 1.1 KB

1234567891011121314151617181920212223242526272829303132
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Services\FranchisorDashboardService;
  4. use Illuminate\Http\JsonResponse;
  5. use Illuminate\Support\Carbon;
  6. class FranchisorDashboardController extends Controller
  7. {
  8. public function __construct(
  9. protected FranchisorDashboardService $service,
  10. ) {}
  11. public function overview(): JsonResponse
  12. {
  13. $data = request()->validate([
  14. 'unit_ids' => ['sometimes', 'array'],
  15. 'unit_ids.*' => ['integer', 'exists:units,id'],
  16. 'start_date' => ['nullable', 'date'],
  17. 'end_date' => ['nullable', 'date', 'after_or_equal:start_date'],
  18. ]);
  19. $unitIds = array_values(array_filter((array) ($data['unit_ids'] ?? [])));
  20. $startDate = isset($data['start_date']) ? Carbon::parse($data['start_date'])->startOfDay() : null;
  21. $endDate = isset($data['end_date']) ? Carbon::parse($data['end_date'])->endOfDay() : null;
  22. return $this->successResponse(
  23. payload: $this->service->overview($unitIds, $startDate, $endDate),
  24. );
  25. }
  26. }