Files
rkm-conectasus-ci-sandbox/api/database/seeders/base/FuncionalidadeSub.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

198 lines
5.8 KiB
PHP

<?php
namespace Database\Seeders\Base;
use App\Models\Administracao\Modulo;
use Illuminate\Support\Facades\DB;
class FuncionalidadeSub
{
public static function run()
{
DB::table('administracao_funcionalidade_funcionalidade_sub')->truncate();
self::administracao();
self::cadastro();
self::prontoAtendimento();
self::almoxarifado();
self::farmacia();
}
public static function administracao()
{
$modulo = 'administracao';
$funcionalidades = [
'permissao' => [
[
'identificador_modulo' => 'cadastro',
'identificador_funcionalidade' => 'usuario',
],
],
];
self::add($modulo, $funcionalidades);
}
public static function cadastro()
{
$modulo = 'cadastro';
$funcionalidades = [
'unidade' => [
[
'identificador_modulo' => 'cadastro',
'identificador_funcionalidade' => 'setor',
],
],
'logradouro' => [
[
'identificador_modulo' => 'cadastro',
'identificador_funcionalidade' => 'bairro',
],
],
'paciente' => [
[
'identificador_modulo' => 'cadastro',
'identificador_funcionalidade' => 'convenio-medico',
],
[
'identificador_modulo' => 'cadastro',
'identificador_funcionalidade' => 'logradouro',
],
[
'identificador_modulo' => 'cadastro',
'identificador_funcionalidade' => 'loteamento',
],
],
'usuario' => [
[
'identificador_modulo' => 'cadastro',
'identificador_funcionalidade' => 'convenio-medico',
],
[
'identificador_modulo' => 'cadastro',
'identificador_funcionalidade' => 'logradouro',
],
[
'identificador_modulo' => 'cadastro',
'identificador_funcionalidade' => 'loteamento',
],
],
];
self::add($modulo, $funcionalidades);
}
public static function prontoAtendimento()
{
$modulo = 'pronto-atendimento';
$funcionalidades = [
'atendimento-medico' => [
[
'identificador_modulo' => 'cadastro',
'identificador_funcionalidade' => 'alergia',
],
[
'identificador_modulo' => 'cadastro',
'identificador_funcionalidade' => 'medicamento',
],
],
'atendimento-recepcao' => [
[
'identificador_modulo' => 'cadastro',
'identificador_funcionalidade' => 'unidade-externa',
],
],
'atendimento-triagem' => [
[
'identificador_modulo' => 'cadastro',
'identificador_funcionalidade' => 'alergia',
],
],
];
self::add($modulo, $funcionalidades);
}
public static function almoxarifado()
{
$modulo = 'almoxarifado';
$funcionalidades = [
'entrada' => [
[
'identificador_modulo' => 'cadastro',
'identificador_funcionalidade' => 'fabricante',
],
[
'identificador_modulo' => 'cadastro',
'identificador_funcionalidade' => 'fornecedor',
],
],
'entrada-inicial' => [
[
'identificador_modulo' => 'cadastro',
'identificador_funcionalidade' => 'fabricante',
],
[
'identificador_modulo' => 'cadastro',
'identificador_funcionalidade' => 'fornecedor',
],
],
];
self::add($modulo, $funcionalidades);
}
public static function farmacia()
{
$modulo = 'farmacia';
$funcionalidades = [
'dispensacao' => [
[
'identificador_modulo' => 'cadastro',
'identificador_funcionalidade' => 'usuario',
],
],
'alto-custo-gerenciamento-processo' => [
[
'identificador_modulo' => 'cadastro',
'identificador_funcionalidade' => 'usuario',
],
],
];
self::add($modulo, $funcionalidades);
}
public static function add($modulo, $funcionalidades)
{
$modulo = Modulo::where('identificador', $modulo)->firstOrFail();
foreach ($funcionalidades as $identificadorFuncionalidade => $funcionalidadesSub) {
$funcionalidade = $modulo->funcionalidades()
->where('identificador', $identificadorFuncionalidade)
->firstOrFail();
$idsFuncionalidadesSub = [];
foreach ($funcionalidadesSub as $funcionalidadeSub) {
$moduloSub = Modulo::where('identificador', $funcionalidadeSub['identificador_modulo'])
->firstOrFail();
$idsFuncionalidadesSub[] = ($moduloSub->funcionalidades()
->where('identificador', $funcionalidadeSub['identificador_funcionalidade'])
->firstOrFail()
)->id;
}
$funcionalidade->funcionalidadesSub()->sync($idsFuncionalidadesSub);
}
}
}