join('sigtap.procedimento', function($join) { $join->on('procedimento.codigo', 'parametrizacao_procedimento.procedimento_codigo') ->where('procedimento.competencia_id', function ($query) { $query->select('competencia.id') ->from('sigtap.competencia') ->orderByDesc('competencia.valor') ->limit(1); }); }) ->select( 'parametrizacao_procedimento.id', 'parametrizacao_procedimento.apelido', 'procedimento.codigo', 'procedimento.nome', ) ->whereNull('parametrizacao_procedimento.deleted_at'); return datatables() ->of($procedimentos) ->filterColumn('procedimento.codigo', function ($query, $keyword) { $query ->whereRaw("procedimento.codigo like ?", ["%{$keyword}%"]) ->orWhereRaw( "CONCAT( SUBSTR(procedimento.codigo,1,2), '.', SUBSTR(procedimento.codigo,3,2), '.', SUBSTR(procedimento.codigo,5,2), '.', SUBSTR(procedimento.codigo,7,3), '-', SUBSTR(procedimento.codigo,10,1) ) like ?", ["%{$keyword}%"] ); }) ->skipTotalRecords() ->make(true); } public function index() { $this->auth(__FUNCTION__); $procedimentos = $this->get(Procedimento::class)->orderBy('nome')->get(); return response()->json($procedimentos, Response::HTTP_OK); } public function create() { $this->auth(__FUNCTION__); $procedimento = new Procedimento; $procedimento->fill(array_fill_keys($procedimento->getFillable(), null)); return response()->json( [ 'model' => $procedimento->makeHidden(['id', 'procedimento_codigo']) ], Response::HTTP_OK ); } public function store(ProcedimentoRequest $request) { $this->auth(__FUNCTION__); $procedimento = Procedimento::create($request->all())->fresh(); return response()->json($procedimento, Response::HTTP_CREATED); } public function show($id) { $this->auth(__FUNCTION__); return response()->json($this->get(Procedimento::class, $id), Response::HTTP_OK); } public function edit($id) { $this->auth(__FUNCTION__); $procedimento = Procedimento::findOrFail($id); return response()->json( [ 'model' => $procedimento->makeHidden(['id', 'procedimento_codigo']), ], Response::HTTP_OK ); } public function update(ProcedimentoRequest $request, $id) { $this->auth(__FUNCTION__); $procedimento = tap(Procedimento::findOrFail($id))->update($request->except('procedimento_codigo')); return response()->json($procedimento->fresh(), Response::HTTP_OK); } public function destroy($id) { $this->auth(__FUNCTION__); Procedimento::findOrFail($id)->delete(); return response()->json(null, Response::HTTP_NO_CONTENT); } }