CustomFieldController.php 2.1 KB

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