ClassPackageUnitController.php 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Services\ClassPackageUnitService;
  4. use App\Http\Requests\ClassPackageUnitRequest;
  5. use App\Http\Resources\ClassPackageUnitResource;
  6. use Illuminate\Http\JsonResponse;
  7. use Illuminate\Support\Facades\Auth;
  8. class ClassPackageUnitController extends Controller
  9. {
  10. public function __construct(
  11. protected ClassPackageUnitService $service,
  12. ) {}
  13. public function index(): JsonResponse
  14. {
  15. $unitId = Auth::user()->load('units')->units->first()?->id;
  16. if (!$unitId) {
  17. return $this->successResponse(payload: []);
  18. }
  19. $items = $this->service->getAllByUnit($unitId);
  20. return $this->successResponse(payload: ClassPackageUnitResource::collection($items));
  21. }
  22. public function byUnit(): JsonResponse
  23. {
  24. $unitId = Auth::user()->load('units')->units->first()?->id;
  25. if (!$unitId) {
  26. return $this->successResponse(payload: []);
  27. }
  28. $items = $this->service->getByUnit($unitId);
  29. return $this->successResponse(payload: ClassPackageUnitResource::collection($items));
  30. }
  31. public function store(ClassPackageUnitRequest $request): JsonResponse
  32. {
  33. $unitId = Auth::user()->load('units')->units->first()?->id;
  34. $data = array_merge($request->validated(), ['unit_id' => $unitId]);
  35. $item = $this->service->create($data);
  36. return $this->successResponse(payload: new ClassPackageUnitResource($item), message: __('messages.created'), code: 201);
  37. }
  38. public function show(int $id): JsonResponse
  39. {
  40. $item = $this->service->findById($id);
  41. return $this->successResponse(payload: new ClassPackageUnitResource($item));
  42. }
  43. public function update(ClassPackageUnitRequest $request, int $id): JsonResponse
  44. {
  45. $item = $this->service->update($id, $request->validated());
  46. return $this->successResponse(payload: new ClassPackageUnitResource($item), message: __('messages.updated'));
  47. }
  48. public function toggleVisibility(int $id): JsonResponse
  49. {
  50. $item = $this->service->toggleVisibility($id);
  51. return $this->successResponse(payload: new ClassPackageUnitResource($item), message: __('messages.updated'));
  52. }
  53. public function destroy(int $id): JsonResponse
  54. {
  55. $this->service->delete($id);
  56. return $this->successResponse(message: __('messages.deleted'), code: 204);
  57. }
  58. }