StudentController.php 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Services\StudentService;
  4. use App\Http\Requests\StudentRequest;
  5. use App\Http\Resources\StudentResource;
  6. use Illuminate\Http\JsonResponse;
  7. use Illuminate\Support\Facades\Auth;
  8. class StudentController extends Controller
  9. {
  10. public function __construct(
  11. protected StudentService $service,
  12. ) {}
  13. public function index(): JsonResponse
  14. {
  15. $items = $this->service->getAll(Auth::user(), request()->only([
  16. 'contract_start_date',
  17. 'contract_end_date',
  18. ]));
  19. return $this->successResponse(payload: StudentResource::collection($items));
  20. }
  21. public function franchisorActive(): JsonResponse
  22. {
  23. $unitIds = array_filter((array) request()->input('unit_ids', []));
  24. $items = $this->service->getFranchisorActive($unitIds);
  25. return $this->successResponse(payload: StudentResource::collection($items));
  26. }
  27. public function franchisorStudentDetail(int $id): JsonResponse
  28. {
  29. $detail = $this->service->getFranchisorStudentDetail($id);
  30. return $this->successResponse(payload: $detail);
  31. }
  32. public function franchisorSummary(): JsonResponse
  33. {
  34. $unitIds = array_filter((array) request()->input('unit_ids', []));
  35. $summary = $this->service->getFranchisorSummary($unitIds);
  36. return $this->successResponse(payload: $summary);
  37. }
  38. public function store(StudentRequest $request): JsonResponse
  39. {
  40. $item = $this->service->create(Auth::user(), $request->validated());
  41. return $this->successResponse(
  42. payload: new StudentResource($item),
  43. message: __('messages.created'),
  44. code: 201,
  45. );
  46. }
  47. public function show(int $id): JsonResponse
  48. {
  49. $item = $this->service->findById($id);
  50. return $this->successResponse(payload: new StudentResource($item));
  51. }
  52. public function update(StudentRequest $request, int $id): JsonResponse
  53. {
  54. $item = $this->service->update($id, $request->validated());
  55. return $this->successResponse(
  56. payload: new StudentResource($item),
  57. message: __('messages.updated'),
  58. );
  59. }
  60. public function destroy(int $id): JsonResponse
  61. {
  62. $this->service->delete($id);
  63. return $this->successResponse(message: __('messages.deleted'), code: 204);
  64. }
  65. }