CustomFieldController.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  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. $nameRuleGroups=NamingRule::query()->get()->pluck('id')->toArray();
  47. $allGroups=config("custom-field.groups");
  48. if(!empty($nameRuleGroups)){
  49. $notNameRule = [];
  50. foreach ($allGroups as $group) {
  51. if (!in_array($group, $nameRuleGroups)) {
  52. $notNameRule[] = $group;
  53. }
  54. }
  55. return $this->success([
  56. 'data' => $notNameRule
  57. ]);
  58. }
  59. return $this->success([
  60. 'data'=> $allGroups
  61. ]);
  62. }
  63. public function nameRuleGroups(Request $request)
  64. {
  65. $nameGroupId=$request->get('nameGroupId');
  66. $nameRuleGroup = NamingRule::query()->where('id',$nameGroupId)->get();
  67. $allGroups=config("custom-field.groups");
  68. if(!empty($nameRuleGroup)){
  69. if(!in_array($allGroups,$nameRuleGroup->pluck('id')->toArray())){
  70. throw new \Exception("Please contact the administrator to add the namerule configuration.");
  71. }
  72. }
  73. return NamingRuleSimpleResource::collection($nameRuleGroup);
  74. }
  75. /**
  76. * Display the specified resource.
  77. */
  78. public function show(string $id)
  79. {
  80. $field = CustomField::query()->findOrFail($id);
  81. return new CustomFieldResource($field);
  82. }
  83. /**
  84. * Update the specified resource in storage.
  85. */
  86. public function update(Request $request, string $id)
  87. {
  88. //
  89. }
  90. /**
  91. * Remove the specified resource from storage.
  92. */
  93. public function destroy(string $id)
  94. {
  95. //
  96. $field = CustomField::query()->findOrFail($id);
  97. $field->delete();
  98. return $this->noContent();
  99. }
  100. }