<?php namespace App\Http\Controllers\API; use App\Http\Controllers\Controller; use App\Http\Requests\API\CustomField\CreateOrUpdateRequest; use App\Http\Resources\API\CustomFieldResource; use App\Http\Resources\API\NamingRuleSimpleResource; use App\Models\CustomField; use App\Models\NamingRule; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use function Nette\Utils\isEmpty; class CustomFieldController extends Controller { /** * Display a listing of the resource. */ public function index(Request $request) { $customFields = CustomField::query()->filter($request->all())->get(); return CustomFieldResource::collection($customFields); } /** * Store a newly created resource in storage. */ public function store(CreateOrUpdateRequest $request) { if (Auth::user()->super_admin) { $namingRule = NamingRule::query()->where("id", $request->group)->first(); if (!in_array($request->group, config("custom-field.groups")) && !$namingRule) { return $this->forbidden("Operation without permission"); } } else { $namingRule = NamingRule::query()->where("company_id", Auth::user()->company_id)->where("id", $request->group)->first(); if (! $namingRule) { return $this->forbidden('Naming rule does not exist'); } } CustomField::query()->updateOrCreate([ 'group' => $request->group, 'key' => $request->key, ], $request->all()); return $this->created(); } public function groups() { $allGroups=config("custom-field.groups"); return $this->success([ 'data'=> $allGroups ]); } public function nameRuleGroups(Request $request) { $nameGroupId=$request->get('nameGroupId'); $nameRuleGroup = NamingRule::query()->where('id',$nameGroupId)->get(); return NamingRuleSimpleResource::collection($nameRuleGroup); } /** * Display the specified resource. */ public function show(string $id) { $field = CustomField::query()->findOrFail($id); return new CustomFieldResource($field); } /** * Update the specified resource in storage. */ public function update(Request $request, string $id) { // } /** * Remove the specified resource from storage. */ public function destroy(string $id) { // $field = CustomField::query()->findOrFail($id); $field->delete(); return $this->noContent(); } }