StudentController.php 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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());
  16. return $this->successResponse(payload: StudentResource::collection($items));
  17. }
  18. public function franchisorActive(): JsonResponse
  19. {
  20. $unitIds = array_filter((array) request()->input('unit_ids', []));
  21. $items = $this->service->getFranchisorActive($unitIds);
  22. return $this->successResponse(payload: StudentResource::collection($items));
  23. }
  24. public function franchisorStudentDetail(int $id): JsonResponse
  25. {
  26. $detail = $this->service->getFranchisorStudentDetail($id);
  27. return $this->successResponse(payload: $detail);
  28. }
  29. public function franchisorSummary(): JsonResponse
  30. {
  31. $unitIds = array_filter((array) request()->input('unit_ids', []));
  32. $summary = $this->service->getFranchisorSummary($unitIds);
  33. return $this->successResponse(payload: $summary);
  34. }
  35. public function store(StudentRequest $request): JsonResponse
  36. {
  37. $item = $this->service->create(Auth::user(), $request->validated());
  38. return $this->successResponse(
  39. payload: new StudentResource($item),
  40. message: __('messages.created'),
  41. code: 201,
  42. );
  43. }
  44. public function show(int $id): JsonResponse
  45. {
  46. $item = $this->service->findById($id);
  47. return $this->successResponse(payload: new StudentResource($item));
  48. }
  49. public function update(StudentRequest $request, int $id): JsonResponse
  50. {
  51. $item = $this->service->update($id, $request->validated());
  52. return $this->successResponse(
  53. payload: new StudentResource($item),
  54. message: __('messages.updated'),
  55. );
  56. }
  57. public function destroy(int $id): JsonResponse
  58. {
  59. $this->service->delete($id);
  60. return $this->successResponse(message: __('messages.deleted'), code: 204);
  61. }
  62. }