CustomFieldController.php 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. <?php
  2. namespace App\Http\Controllers\API;
  3. use App\Http\Controllers\Controller;
  4. use App\Http\Requests\API\CustomField\CreateOrUpdateRequest;
  5. use App\Http\Resources\API\CustomFieldResource;
  6. use App\Http\Resources\API\NamingRuleSimpleResource;
  7. use App\Models\CustomField;
  8. use App\Models\NamingRule;
  9. use Illuminate\Http\Request;
  10. use Illuminate\Support\Facades\Auth;
  11. use function Nette\Utils\isEmpty;
  12. class CustomFieldController extends Controller
  13. {
  14. /**
  15. * Display a listing of the resource.
  16. */
  17. public function index(Request $request)
  18. {
  19. $customFields = CustomField::query()->filter($request->all())->get();
  20. return CustomFieldResource::collection($customFields);
  21. }
  22. /**
  23. * Store a newly created resource in storage.
  24. */
  25. public function store(CreateOrUpdateRequest $request)
  26. {
  27. if (Auth::user()->super_admin) {
  28. $namingRule = NamingRule::query()->where("id", $request->group)->first();
  29. if (!in_array($request->group, config("custom-field.groups")) && !$namingRule) {
  30. return $this->forbidden("Operation without permission");
  31. }
  32. } else {
  33. $namingRule = NamingRule::query()->where("company_id", Auth::user()->company_id)->where("id", $request->group)->first();
  34. if (! $namingRule) {
  35. return $this->forbidden('Naming rule does not exist');
  36. }
  37. }
  38. CustomField::query()->updateOrCreate([
  39. 'group' => $request->group,
  40. 'key' => $request->key,
  41. ], $request->all());
  42. return $this->created();
  43. }
  44. public function groups()
  45. {
  46. $allGroups=config("custom-field.groups");
  47. return $this->success([
  48. 'data'=> $allGroups
  49. ]);
  50. }
  51. public function nameRuleGroups(Request $request)
  52. {
  53. $nameGroupId=$request->get('nameGroupId');
  54. $nameRuleGroup = NamingRule::query()->where('id',$nameGroupId)->get();
  55. return NamingRuleSimpleResource::collection($nameRuleGroup);
  56. }
  57. /**
  58. * Display the specified resource.
  59. */
  60. public function show(string $id)
  61. {
  62. $field = CustomField::query()->findOrFail($id);
  63. return new CustomFieldResource($field);
  64. }
  65. /**
  66. * Update the specified resource in storage.
  67. */
  68. public function update(Request $request, string $id)
  69. {
  70. //
  71. }
  72. /**
  73. * Remove the specified resource from storage.
  74. */
  75. public function destroy(string $id)
  76. {
  77. //
  78. $field = CustomField::query()->findOrFail($id);
  79. $field->delete();
  80. return $this->noContent();
  81. }
  82. }