CustomFieldController.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  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. class CustomFieldController extends Controller
  12. {
  13. /**
  14. * Display a listing of the resource.
  15. */
  16. public function index(Request $request)
  17. {
  18. $customFields = CustomField::query()->filter($request->all())->get();
  19. return CustomFieldResource::collection($customFields);
  20. }
  21. /**
  22. * Store a newly created resource in storage.
  23. */
  24. public function store(CreateOrUpdateRequest $request)
  25. {
  26. if (Auth::user()->super_admin) {
  27. $namingRule = NamingRule::query()->where("id", $request->group)->first();
  28. if (!in_array($request->group, config("custom-field.groups")) && !$namingRule) {
  29. return $this->forbidden("Operation without permission");
  30. }
  31. } else {
  32. $namingRule = NamingRule::query()->where("company_id", Auth::user()->company_id)->where("id", $request->group)->first();
  33. if (! $namingRule) {
  34. return $this->forbidden('Naming rule does not exist');
  35. }
  36. }
  37. CustomField::query()->updateOrCreate([
  38. 'group' => $request->group,
  39. 'key' => $request->key,
  40. ], $request->all());
  41. return $this->created();
  42. }
  43. public function groups()
  44. {
  45. $nameRuleGroups=NamingRule::query()->get()->pluck('id')->toArray();
  46. $allGroups=config("custom-field.groups");
  47. if(!empty($nameRuleGroups)){
  48. $notNameRule = [];
  49. foreach ($allGroups as $group) {
  50. if (!in_array($group, $nameRuleGroups)) {
  51. $notNameRule[] = $group;
  52. }
  53. }
  54. return $this->success([
  55. 'data' => $notNameRule
  56. ]);
  57. }
  58. return $this->success([
  59. 'data'=> $allGroups
  60. ]);
  61. }
  62. public function nameRuleGroups()
  63. {
  64. $nameRuleGroupsIds = NamingRule::query()->pluck('id')->toArray();
  65. $allGroups = config("custom-field.groups");
  66. $intersectIds = array_intersect($allGroups, $nameRuleGroupsIds);
  67. if (empty($intersectIds)) {
  68. return $this->success([]);
  69. }
  70. $inGroups = NamingRule::query()->whereIn('id', $intersectIds)->get();
  71. return NamingRuleSimpleResource::collection($inGroups);
  72. }
  73. /**
  74. * Display the specified resource.
  75. */
  76. public function show(string $id)
  77. {
  78. $field = CustomField::query()->findOrFail($id);
  79. return new CustomFieldResource($field);
  80. }
  81. /**
  82. * Update the specified resource in storage.
  83. */
  84. public function update(Request $request, string $id)
  85. {
  86. //
  87. }
  88. /**
  89. * Remove the specified resource from storage.
  90. */
  91. public function destroy(string $id)
  92. {
  93. //
  94. }
  95. }