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