133 lines
4.0 KiB
PHP
133 lines
4.0 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Parametrizacao;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Http\Requests\Parametrizacao\ProcedimentoRequest;
|
|
use App\Models\Parametrizacao\Procedimento;
|
|
use Illuminate\Http\Response;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
class ProcedimentoController extends Controller
|
|
{
|
|
protected $modulo = 'parametrizacao';
|
|
protected $funcionalidade = 'procedimento';
|
|
|
|
public function datatable()
|
|
{
|
|
$procedimentos = DB::table('parametrizacao_procedimento')
|
|
->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);
|
|
}
|
|
}
|