init commit
All checks were successful
build-api-image / build (push) Successful in 51s

This commit is contained in:
Antonio Lopes dos Santos
2026-08-04 16:52:02 -03:00
commit afec302c3e
11594 changed files with 1636728 additions and 0 deletions

View 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);
}
}