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

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,149 @@
<?php
namespace App\Services\Regulacao;
use App\Models\Regulacao\Status;
use App\Models\Regulacao\StatusTipo;
use App\Services\Service;
use App\Exceptions\Regulacao\StatusVinculadoException;
use Illuminate\Support\Facades\DB;
use Illuminate\Validation\Rule;
class StatusService extends Service
{
public static function datatable()
{
return DB::table('regulacao_status as status')
->join('regulacao_status_tipo as status_tipo', 'status_tipo.id', 'status.tipo_id')
->leftJoin('regulacao_status_status as statu_status', 'statu_status.status_de_id', 'status.id')
->leftJoin('regulacao_status as status_para', 'status_para.id', 'statu_status.status_para_id')
->selectRaw("
status.id,
status.nome,
status_tipo.nome as tipo_nome,
GROUP_CONCAT(status_para.nome separator ', ') as status_para
")
->groupByRaw("
status.id,
status.nome,
status_tipo.nome
");
}
public static function create()
{
return [
'form' => self::getFormData(),
'model' => self::getModelData(),
];
}
public static function edit($id)
{
$status = Status::findOrFail($id);
return [
'form' => self::getFormData($status),
'model' => self::getModelData($status),
];
}
private static function getFormData($status = null)
{
return [
'tipos' => StatusTipo::orderBy('nome')->get(['id', 'nome']),
'status' => Status::when($status, fn ($q) => $q->where('id', '<>', $status->id))
->orderBy('nome')
->get(['id', 'nome']),
];
}
private static function getModelData($status = null)
{
return [
'tipo_id' => $status->tipo_id ?? null,
'nome' => $status->nome ?? null,
'ativo' => $status->ativo ?? true,
'status_para' => is_null($status) ? collect() : $status->statusPara()->get(['id', 'nome']),
];
}
public static function store()
{
self::validate();
$status = new Status();
DB::transaction(function () use ($status) {
$status->fill(request()->except('status_para'));
$status->save();
$status->statusPara()->sync(request()->status_para);
});
return $status;
}
public static function update($id)
{
$status = Status::findOrFail($id);
self::validate();
DB::transaction(function () use ($status) {
$status->update(request()->except('status_para'));
$status->refresh();
$status->statusPara()->sync(request()->status_para);
});
return $status;
}
public static function validate()
{
return request()->validate([
'tipo_id' => [
'required',
'integer',
Rule::exists(StatusTipo::class, 'id'),
],
'nome' => [
'required',
'string',
'between:3,100',
Rule::unique(Status::class, 'nome')->ignore(request()->route('status')),
],
'ativo' => [
'required',
'boolean',
],
'status_para' => [
'present',
'array',
],
'status_para.*' => [
'required',
'integer',
Rule::exists(Status::class, 'id'),
]
], [
'nome.unique' => 'O nome do Status já foi inserido anteriormente.'
]);
}
public static function destroy($id)
{
$status = Status::findOrFail($id);
$statusStatus = DB::table('regulacao_status_status')->where('status_para_id', $id)->exists();
if($statusStatus){
throw new StatusVinculadoException();
};
$status->delete();
}
}

View File

@@ -0,0 +1,16 @@
<?php
namespace App\Services\Regulacao;
use App\Models\Regulacao\ParametrizacaoSupervisor;
use App\Services\Service;
class SupervisorService extends Service
{
public static function isSupervisor($usuarioId)
{
return ParametrizacaoSupervisor::where('usuario_id', $usuarioId)
->exists();
}
}

View File

@@ -0,0 +1,150 @@
<?php
namespace App\Services\Regulacao;
use App\Models\Cadastro\SujeitoAtencao\Lotacao;
use App\Models\Regulacao\Upload;
use App\Services\Service;
use Carbon\Carbon;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Storage;
class UploadService extends Service
{
public static function store()
{
$request = request()->all();
DB::transaction(function () use ($request) {
if ($request['multiple'] == 'true') {
self::saveMultiple($request);
} else {
self::saveUpload($request);
}
});
return self::show($request);
}
public static function saveUpload($request)
{
if(!empty($request['upload'])){
foreach ($request['upload'] as $file) {
$upload = new Upload();
$solicitacaoId = $request['solicitacao_id'];
$arquivo = request()->get('nome_arquivo');
$arquivo = $request['upload'][0];
$extensao = $arquivo->getClientOriginalExtension();
$nomeCompletoReal = $arquivo->getClientOriginalName();
$nomeCompletoRealSemExtensao = pathinfo($nomeCompletoReal, PATHINFO_FILENAME);
$nomeArquivo = $file->hashName();
$upload->solicitacao_id = $solicitacaoId;
$upload->usuario_id = self::getCurrentLotacao()->usuario_id;
$upload->extensao_arquivo = strtoupper($extensao);
$upload->arquivo = $nomeArquivo;
$upload->nome_arquivo_real = strtoupper($nomeCompletoRealSemExtensao);
$upload->save();
$pasta = storage_path('app' . DIRECTORY_SEPARATOR . 'regulacao' . DIRECTORY_SEPARATOR . 'uploads' . DIRECTORY_SEPARATOR . app('config')->get('database.default'));
$file->move($pasta, $nomeArquivo);
}
}
}
public static function saveMultiple($request, $solicitacaoId = null)
{
if (!empty($request['upload'])) {
foreach ($request['upload'] as $file) {
$upload = new Upload();
$solicitacaoId = $request['solicitacao_id'] ?? $solicitacaoId;
$nomeCompletoReal = $file->getClientOriginalName();
$extensao = $file->getClientOriginalExtension();
$nomeCompletoRealSemExtensao = pathinfo($nomeCompletoReal, PATHINFO_FILENAME);
$nomeArquivo = $file->hashName();
$upload->solicitacao_id = $solicitacaoId;
$upload->usuario_id = self::getCurrentLotacao()->usuario_id;
$upload->extensao_arquivo = strtoupper($extensao);
$upload->arquivo = $nomeArquivo;
$upload->nome_arquivo_real = strtoupper($nomeCompletoRealSemExtensao);
$upload->save();
$pasta = storage_path('app' . DIRECTORY_SEPARATOR . 'regulacao' . DIRECTORY_SEPARATOR . 'uploads' . DIRECTORY_SEPARATOR . app('config')->get('database.default'));
$file->move($pasta, $nomeArquivo);
}
}
}
public static function show($request = null)
{
if ($request == null) {
$request = request()->all();
}
return Upload::where('solicitacao_id', $request['solicitacao_id'])
->orderBy('arquivo', 'ASC')
->get()
->map(function($query) {
return [
'id' => $query->id ?? null,
'usuario' => Lotacao::withTrashed()->findOrFail($query->created_lotacao_id)->usuario->cidadao->nome ?? null,
'data' => (new Carbon($query->created_at))->format('d/m/Y') ?? null,
'arquivo' => $query->nome_arquivo_real.'.'.strtolower($query->extensao_arquivo) ?? null,
];
});
}
public static function destroy($id)
{
$upload = Upload::findOrFail($id);
if(Storage::exists('regulacao' . DIRECTORY_SEPARATOR . 'uploads' . DIRECTORY_SEPARATOR . app('config')->get('database.default') . DIRECTORY_SEPARATOR . $upload->arquivo)){
Storage::delete('regulacao' . DIRECTORY_SEPARATOR . 'uploads' . DIRECTORY_SEPARATOR . app('config')->get('database.default') . DIRECTORY_SEPARATOR . $upload->arquivo);
}
Upload::findOrFail($id)->delete();
}
public static function download($id)
{
$upload = Upload::findOrFail($id);
return [
'nome' => $upload->arquivo,
'arquivo' => Storage::path('regulacao' . DIRECTORY_SEPARATOR . 'uploads' . DIRECTORY_SEPARATOR . app('config')->get('database.default') . DIRECTORY_SEPARATOR . $upload->arquivo),
];
}
public static function view($id)
{
$upload = Upload::findOrFail($id);
$path = Storage::path('regulacao' . DIRECTORY_SEPARATOR . 'uploads' . DIRECTORY_SEPARATOR . app('config')->get('database.default') . DIRECTORY_SEPARATOR . $upload->arquivo);
$mimeType = mime_content_type($path);
return [
'path' => $path,
'mimeType' => $mimeType,
];
}
}