auth(__FUNCTION__); return response()->json( [ 'form' => [ 'unidades' => Unidade::orderBy('nome_fantasia')->get(['id', 'nome_fantasia']), 'infraestruturas' => [], 'modulos' => Modulo::orderBy('nome')->get(['id', 'nome']), ], 'model' => [ 'infraestruturas' => ParametrizacaoInfraestrutura::get(['id', 'infraestrutura_id']) ->map(fn ($parametrizacao) => [ 'id' => $parametrizacao->infraestrutura_id, 'nome' => $parametrizacao->infraestrutura->nome, 'unidade_id' => $parametrizacao->infraestrutura->unidade->id, 'unidade_nome_fantasia' => $parametrizacao->infraestrutura->unidade->nome_fantasia, 'modulos' => $parametrizacao->modulos->map(fn ($modulo) => [ 'id' => $modulo->id, 'nome' => $modulo->nome, ]), ]), ] ], Response::HTTP_OK ); } public function list() { $data = null; switch (request()->listar) { case 'infraestruturas': { return Infraestrutura::setEagerLoads([]) ->where('unidade_id', request()->unidade_id) ->get(['id', 'nome', 'principal', 'unidade_id']) ->map(fn ($infraestrutura) => [ 'id' => $infraestrutura->id, 'nome' => $infraestrutura->nome, ]) ->sortBy('nome') ->values(); } } return response()->json($data, Response::HTTP_OK); } public function store(ParametrizacaoRequest $request) { $this->auth(__FUNCTION__); DB::transaction(function () use ($request) { ParametrizacaoInfraestrutura::whereNotIn('id', collect($request->infraestruturas)->pluck('id'))->delete(); collect($request->infraestruturas)->each(function ($infraestrutura) { $parametrizacao = ParametrizacaoInfraestrutura::updateOrCreate([ 'infraestrutura_id' => $infraestrutura['id'] ]); $parametrizacao->modulos()->sync($infraestrutura['modulos']); }); }); return response()->json(null, Response::HTTP_CREATED); } }