of(ProcedimentoService::datatable()) ->filterColumn('solicitacao_autorizacao.data_processamento', function ($query, $keyword) { $query->whereRaw("DATE_FORMAT(solicitacao_autorizacao.data_processamento, '%d/%m/%Y') like ?", ["%{$keyword}%"]) ->orWhereRaw( "CONCAT( SUBSTR(solicitacao_autorizacao.data_processamento, 9, 2), SUBSTR(solicitacao_autorizacao.data_processamento, 6, 2), SUBSTR(solicitacao_autorizacao.data_processamento, 1, 4) ) like ?", ["%{$keyword}%"] ); }) ->filterColumn('procedimento_principal.codigo', function ($query, $keyword) { $query->whereRaw("procedimento_principal.codigo like ?", ['%' . str_replace(['.', '-'], '', $keyword) . '%']); }) ->editColumn('procedimento_principal_codigo', fn ($sa) => MaskUtil::getProcedimentoMasked($sa->procedimento_principal_codigo)) ->skipTotalRecords() ->make(true); } public function create() { $this->auth(__FUNCTION__); return response()->json(ProcedimentoService::create(), Response::HTTP_OK); } public function store() { $this->auth(__FUNCTION__); try { return response()->json(ProcedimentoService::store(), Response::HTTP_CREATED); } catch (ProcedimentoSecundarioSemOcupacaoException $e) { return response()->json([ 'message' => 'Existem procedimentos secundários sem CBO preenchido. ' . 'Favor preencher na funcionalidade Regulação > Monitoramento de protocolos.' ], Response::HTTP_BAD_REQUEST); } } public function edit($id) { $this->auth(__FUNCTION__); return response()->json(ProcedimentoService::edit($id), Response::HTTP_OK); } public function update($id) { $this->auth(__FUNCTION__); return response()->json(ProcedimentoService::update($id), Response::HTTP_OK); } public function destroyAutomaticos($unidadeExecutanteId, $competenciaId) { $this->auth(__FUNCTION__); return response()->json(ProcedimentoService::destroyAutomaticos($unidadeExecutanteId, $competenciaId), Response::HTTP_NO_CONTENT); } public function destroy($id) { $this->auth(__FUNCTION__); return response()->json(ProcedimentoService::destroy($id), Response::HTTP_NO_CONTENT); } }