Ejemplo n.º 1
0
        public Usuario crearUsuario(Usuario usuario)
        {
            OracleConnection conn = null;

            try
            {
                conn = new OracleConnection(this.strCadenaConexion);
                conn.Open();
            }
            catch
            {
                throw new Exception("Error de conexión a la Base de Datos");
            }
            using (OracleCommand cmd = conn.CreateCommand())
            {
                using (OracleTransaction trx = conn.BeginTransaction())
                {
                    cmd.Transaction = trx;
                    try
                    {
                        usuario            = UsuariosBD.CrearUsuario(cmd, usuario);
                        usuario.Contrasena = Encriptacion.MD5(usuario.Contrasena);
                        int contrasenaResul = UsuariosBD.ActualizarContrasena(cmd, usuario.Id, usuario.Contrasena, usuario.User);
                        if (usuario.Id < 0 && contrasenaResul < 0)
                        {
                            throw new Exception("Ocurrió un error al guardar el usuario");
                        }
                        if (usuario.Permisos != null)
                        {
                            for (int i = 0; i < usuario.Permisos.Count; i++)
                            {
                                int resultPermXUsr = UsuariosBD.MantenimientoUsuarioXPermiso(cmd, usuario.Id, usuario.Permisos[i].Id, usuario.User, usuario.Permisos[i].Estado);
                                if (resultPermXUsr < 0)
                                {
                                    throw new Exception("Ocurrió un error al guardar el usuario");
                                }
                            }
                        }
                        if (usuario.Perfiles != null)
                        {
                            for (int i = 0; i < usuario.Perfiles.Count; i++)
                            {
                                int resultUserXPerf = UsuariosBD.MantenimientoUsuarioXPerfil(cmd, usuario.Id, usuario.Perfiles[i].Id, usuario.User, usuario.Perfiles[i].Estado);
                                if (resultUserXPerf < 0)
                                {
                                    throw new Exception("Ocurrió un error al guardar el usuario");
                                }
                            }
                        }
                        trx.Commit();
                    }
                    catch
                    {
                        trx.Rollback();
                        throw new Exception("Ocurrió un error al guardar el usuario");
                    }
                }
            }
            CerrarConexion(conn);
            return(usuario);
        }