CompanySettingController.php 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Http\Requests\CompanyBenefitRequest;
  4. use App\Http\Requests\CompanyHeroImageRequest;
  5. use App\Http\Requests\CompanySettingRequest;
  6. use App\Http\Resources\CompanyBenefitResource;
  7. use App\Http\Resources\CompanySettingResource;
  8. use App\Services\CompanyBenefitService;
  9. use App\Services\CompanySettingService;
  10. use Illuminate\Http\JsonResponse;
  11. use Illuminate\Http\Request;
  12. class CompanySettingController extends Controller
  13. {
  14. public function __construct(
  15. protected CompanySettingService $settingService,
  16. protected CompanyBenefitService $benefitService,
  17. ) {}
  18. public function show(): JsonResponse
  19. {
  20. $setting = $this->settingService->get();
  21. return $this->successResponse(payload: new CompanySettingResource($setting));
  22. }
  23. public function update(CompanySettingRequest $request): JsonResponse
  24. {
  25. $setting = $this->settingService->upsert($request->validated());
  26. return $this->successResponse(
  27. payload: new CompanySettingResource($setting),
  28. message: __('messages.updated'),
  29. );
  30. }
  31. public function uploadHeroImage(CompanyHeroImageRequest $request): JsonResponse
  32. {
  33. $setting = $this->settingService->uploadHeroBackground($request->file('image'));
  34. return $this->successResponse(
  35. payload: new CompanySettingResource($setting),
  36. message: __('messages.updated'),
  37. );
  38. }
  39. public function removeHeroImage(): JsonResponse
  40. {
  41. $setting = $this->settingService->removeHeroBackground();
  42. return $this->successResponse(
  43. payload: new CompanySettingResource($setting),
  44. message: __('messages.updated'),
  45. );
  46. }
  47. public function indexBenefits(): JsonResponse
  48. {
  49. $benefits = $this->benefitService->getAll();
  50. return $this->successResponse(payload: CompanyBenefitResource::collection($benefits));
  51. }
  52. public function storeBenefit(CompanyBenefitRequest $request): JsonResponse
  53. {
  54. $benefit = $this->benefitService->create($request->validated());
  55. return $this->successResponse(
  56. payload: new CompanyBenefitResource($benefit),
  57. message: __('messages.created'),
  58. code: 201,
  59. );
  60. }
  61. public function updateBenefit(CompanyBenefitRequest $request, int $id): JsonResponse
  62. {
  63. $benefit = $this->benefitService->update($id, $request->validated());
  64. return $this->successResponse(
  65. payload: new CompanyBenefitResource($benefit),
  66. message: __('messages.updated'),
  67. );
  68. }
  69. public function reorderBenefits(Request $request): JsonResponse
  70. {
  71. $items = $request->validate([
  72. '*.id' => 'required|integer|exists:company_benefits,id',
  73. '*.order' => 'required|integer|min:0',
  74. ]);
  75. $this->benefitService->reorder($items);
  76. return $this->successResponse(message: __('messages.updated'));
  77. }
  78. public function destroyBenefit(int $id): JsonResponse
  79. {
  80. $this->benefitService->delete($id);
  81. return $this->successResponse(message: __('messages.deleted'), code: 204);
  82. }
  83. }