Files
rkm-conectasus-ci-sandbox/api/app/Services/Ambulatorio/ServicoService.php
Antonio Lopes dos Santos afec302c3e
All checks were successful
build-api-image / build (push) Successful in 51s
init commit
2026-08-04 16:52:02 -03:00

101 lines
2.3 KiB
PHP

<?php
namespace App\Services\Ambulatorio;
use App\Models\Ambulatorio\Servico;
use App\Models\Ambulatorio\ServicoTipo;
use App\Services\Service;
use Illuminate\Support\Facades\DB;
use Illuminate\Validation\Rule;
class ServicoService extends Service
{
public static function datatable()
{
return DB::table('ambulatorio_servico as servico')
->leftJoin(
'ambulatorio_servico_tipo as tipo',
'tipo.id',
'servico.tipo_id'
)
->select(
'servico.id',
'servico.nome',
DB::raw('tipo.nome as tipo'),
);
}
public static function create()
{
return [
'form' => self::getForm(),
'model' => [
'nome' => null,
'tipo_id' => null,
]
];
}
public static function edit($id)
{
$servico = Servico::findOrFail($id);
return [
'form' => self::getForm(),
'model' => [
'nome' => $servico->nome,
'tipo_id' => $servico->tipo_id,
]
];
}
private static function getForm()
{
return [
'tipos' => ServicoTipo::orderBy('nome')->get(['id', 'nome']),
];
}
public static function store()
{
self::validate();
return Servico::create(request()->all())->fresh();
}
public static function update($id)
{
self::validate();
return (tap(Servico::findOrFail($id))->update(request()->all()))->fresh();
}
public static function validate()
{
$rules = [
'nome' => [
'required',
'string',
'between:3,100',
Rule::unique(Servico::class, 'nome')->ignore(request()->route('servico')),
],
'tipo_id' => [
'nullable',
'integer',
Rule::exists(ServicoTipo::class, 'id'),
],
];
$messages = [
'nome.unique' => 'O nome do Serviço já foi inserido anteriormente.',
];
request()->validate($rules, $messages);
}
public static function destroy($id)
{
Servico::findOrFail($id)->delete();
}
}