This commit is contained in:
149
api/app/Services/Farmacia/LivroTalidomidaService.php
Normal file
149
api/app/Services/Farmacia/LivroTalidomidaService.php
Normal file
@@ -0,0 +1,149 @@
|
||||
<?php
|
||||
|
||||
namespace App\Services\Farmacia;
|
||||
|
||||
use App\Enums\Cadastro\Material\LivroRegistro as LivroRegistroEnum;
|
||||
use App\Enums\Cadastro\Material\LivroRegistroTipo as LivroRegistroTipoEnum;
|
||||
use App\Models\Cadastro\SujeitoAtencao\Usuario;
|
||||
use App\Models\Farmacia\Livro;
|
||||
use App\Models\Farmacia\LivroPagina;
|
||||
use App\Services\Service;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Validation\Rule;
|
||||
|
||||
class LivroTalidomidaService extends Service
|
||||
{
|
||||
private static $livroRegistroIds = [
|
||||
LivroRegistroEnum::TALIDOMIDA,
|
||||
];
|
||||
|
||||
private static $livroRegistroTipoIds = [
|
||||
LivroRegistroTipoEnum::A_BASE,
|
||||
LivroRegistroTipoEnum::ESPECIFICO,
|
||||
];
|
||||
|
||||
public static function datatable()
|
||||
{
|
||||
return LivroService::datatable(self::$livroRegistroIds, self::$livroRegistroTipoIds);
|
||||
}
|
||||
|
||||
public static function list()
|
||||
{
|
||||
return LivroService::list(self::$livroRegistroIds, self::$livroRegistroTipoIds);
|
||||
}
|
||||
|
||||
public static function create()
|
||||
{
|
||||
return LivroService::create(self::$livroRegistroIds, self::$livroRegistroTipoIds);
|
||||
}
|
||||
|
||||
public static function edit($id)
|
||||
{
|
||||
$livro = Livro::findOrFail($id);
|
||||
|
||||
return LivroService::edit($livro, self::$livroRegistroIds, self::$livroRegistroTipoIds);
|
||||
}
|
||||
|
||||
public static function getLinhas($paginaId)
|
||||
{
|
||||
$pagina = LivroPagina::findOrFail($paginaId);
|
||||
|
||||
return LivroService::getLinhas($pagina);
|
||||
}
|
||||
|
||||
public static function store()
|
||||
{
|
||||
self::validate();
|
||||
|
||||
$livro = null;
|
||||
|
||||
DB::transaction(function () use (&$livro) {
|
||||
|
||||
$livro = LivroService::store(self::getStoreParams());
|
||||
});
|
||||
|
||||
return $livro;
|
||||
}
|
||||
|
||||
private static function getStoreParams()
|
||||
{
|
||||
$params = request()->except(['numero', 'status_id']);
|
||||
|
||||
$params['aberto_em'] = Carbon::createFromFormat('d/m/Y', $params['aberto_em']);
|
||||
|
||||
return $params;
|
||||
}
|
||||
|
||||
public static function update($id)
|
||||
{
|
||||
$livro = Livro::findOrFail($id);
|
||||
|
||||
DB::transaction(function () use ($livro) {
|
||||
|
||||
LivroService::updateMovimentacoes($livro);
|
||||
});
|
||||
|
||||
return $livro;
|
||||
}
|
||||
|
||||
public static function fecharLivro($id)
|
||||
{
|
||||
$livro = Livro::findOrFail($id);
|
||||
|
||||
DB::transaction(function () use ($livro) {
|
||||
|
||||
LivroService::fecharLivro($livro);
|
||||
});
|
||||
|
||||
return $livro->fresh();
|
||||
}
|
||||
|
||||
public static function validate()
|
||||
{
|
||||
$rules = [
|
||||
'aberto_em' => [
|
||||
'required',
|
||||
'date_format:d/m/Y'
|
||||
],
|
||||
'livro_registro_id' => [
|
||||
'required',
|
||||
'integer',
|
||||
Rule::in(self::$livroRegistroIds),
|
||||
],
|
||||
'livro_registro_tipo_id' => [
|
||||
'required',
|
||||
'integer',
|
||||
Rule::in(self::$livroRegistroTipoIds),
|
||||
],
|
||||
'quantidade_paginas' => [
|
||||
'required',
|
||||
'integer',
|
||||
'between:1,999',
|
||||
],
|
||||
'registro' => [
|
||||
'required',
|
||||
'string',
|
||||
'max:100',
|
||||
],
|
||||
'usuario_farmaceutico_id' => [
|
||||
'required',
|
||||
'integer',
|
||||
Rule::exists(Usuario::class, 'id'),
|
||||
],
|
||||
'inscricao_estadual' => [
|
||||
'nullable',
|
||||
'digits_between:8,14',
|
||||
],
|
||||
'autoridade_sanitaria' => [
|
||||
'required',
|
||||
'string',
|
||||
'max:100',
|
||||
],
|
||||
];
|
||||
|
||||
$messages = [];
|
||||
|
||||
request()->validate($rules, $messages);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user