/// <summary>
        /// Método para actualizar el password de un Usuario en la base de datos.
        /// </summary>
        /// <param name="infoUsuario"></param>
        /// <returns></returns>
        public MensajesUsuarios ActualizacionPasswordUsuario(Usuarios infoUsuario)
        {
            MensajesUsuarios msjUsuarios = new MensajesUsuarios();

            try
            {
                string            pwdUsuario = ConfigEncryption.EncriptarValor(infoUsuario.PasswordUsuario);
                NpgsqlTransaction tran       = conn_BD.BeginTransaction();
                using (NpgsqlCommand cmd = new NpgsqlCommand("UPDATE dcicc_usuarios set password_usuario = @pu where id_usuario = @iu", conn_BD))
                {
                    cmd.Parameters.Add("pu", NpgsqlTypes.NpgsqlDbType.Varchar).Value = pwdUsuario.Trim();
                    cmd.Parameters.Add("iu", NpgsqlTypes.NpgsqlDbType.Integer).Value = infoUsuario.IdUsuario;
                    cmd.ExecuteNonQuery();
                }
                string query = string.Format("ALTER USER {0} with password '{1}';", infoUsuario.NickUsuario.Trim(), pwdUsuario.Trim());
                using (var cmd = new NpgsqlCommand(query, conn_BD))
                {
                    cmd.ExecuteNonQuery();
                }
                tran.Commit();
                conn_BD.Close();
                msjUsuarios.OperacionExitosa = true;
            }
            catch (Exception e)
            {
                conn_BD.Close();
                msjUsuarios.OperacionExitosa = false;
                msjUsuarios.MensajeError     = e.Message;
            }
            return(msjUsuarios);
        }
        public MensajesUsuarios RecuperarPassword([FromBody] string infoCorreo)
        {
            MensajesUsuarios msjUsuarios  = new MensajesUsuarios();
            Usuarios         datosUsuario = new Usuarios();

            try
            {
                if (infoCorreo != null)
                {
                    ConsultasUsuarios objConsultasUsuariosBD = new ConsultasUsuarios();
                    datosUsuario = objConsultasUsuariosBD.ObtenerUsuarios("usuarioshabilitados").ListaObjetoInventarios.Find(x => x.CorreoUsuario == infoCorreo);
                    if (datosUsuario != null)
                    {
                        datosUsuario.PasswordUsuario  = ConfigEncryption.EncriptarValor(datosUsuario.PasswordUsuario);
                        msjUsuarios.ObjetoInventarios = datosUsuario;
                        msjUsuarios.OperacionExitosa  = true;
                        Logs.Info(string.Format("Solicitud de datos exitosa para recuperación de contraseña para el correo: {0}.", infoCorreo));
                    }
                    else
                    {
                        msjUsuarios.ObjetoInventarios = null;
                        msjUsuarios.OperacionExitosa  = false;
                        Logs.Error(string.Format("Solicitud de datos fallida para recuperación de contraseña para el correo: {0}.", infoCorreo));
                    }
                }
            }
            catch (Exception e)
            {
                Logs.Error(string.Format("Solicitud de datos fallida para recuperación de contraseña para el correo: {0}: {1}", infoCorreo, e.Message));
                msjUsuarios.ObjetoInventarios = null;
                msjUsuarios.OperacionExitosa  = false;
            }
            return(msjUsuarios);
        }
示例#3
0
        /// <summary>
        /// Constructor para inicializar el Web Service, en donde de paso se inicializa la llave de encriptación para sus métodos.
        /// </summary>
        /// <param name="configuration"></param>
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
            ConfigSeguridad confServSeguridad = new ConfigSeguridad();

            ConfigEncryption.SetEncryptKey(confServSeguridad.ObtenerEncryptionKey());
            ConfigBaseDatos.SetCadenaConexion(confServSeguridad.ObtenerCadenaConexion());
        }
 public string Desencriptar([FromBody] string valorEncriptado)
 {
     try
     {
         return(ConfigEncryption.DesencriptarValor(valorEncriptado));
     }
     catch (Exception e)
     {
         Logs.Error(string.Format("No se pudo desencriptar la cadena: {0}.", e.Message));
         return(null);
     }
 }
示例#5
0
        /// <summary>
        /// Método para ingresar un nuevo Usuario en la base de datos.
        /// </summary>
        /// <param name="infoUsuario"></param>
        /// <returns></returns>
        public MensajesUsuarios RegistroUsuario(Usuarios infoUsuario)
        {
            string           pwdUsuario  = ConfigEncryption.EncriptarValor(infoUsuario.PasswordUsuario);
            MensajesUsuarios msjUsuarios = new MensajesUsuarios();

            try
            {
                NpgsqlTransaction tran = conn_BD.BeginTransaction();
                using (NpgsqlCommand cmd = new NpgsqlCommand("insert into dcicc_usuarios (id_rol,nombres_usuario,nick_usuario,password_usuario,correo_usuario,telefono_usuario,telefonocelular_usuario,direccion_usuario,habilitado_usuario) VALUES (@ir,@nu,@niu,@pu,@cu,@tu,@tcu,@du,@hu)", conn_BD))
                {
                    cmd.Parameters.Add("ir", NpgsqlTypes.NpgsqlDbType.Integer).Value  = infoUsuario.IdRol;
                    cmd.Parameters.Add("nu", NpgsqlTypes.NpgsqlDbType.Varchar).Value  = infoUsuario.NombresUsuario.Trim();
                    cmd.Parameters.Add("niu", NpgsqlTypes.NpgsqlDbType.Varchar).Value = infoUsuario.NickUsuario.Trim();
                    cmd.Parameters.Add("pu", NpgsqlTypes.NpgsqlDbType.Text).Value     = pwdUsuario.Trim();
                    cmd.Parameters.Add("cu", NpgsqlTypes.NpgsqlDbType.Varchar).Value  = infoUsuario.CorreoUsuario.Trim();
                    cmd.Parameters.Add("tu", NpgsqlTypes.NpgsqlDbType.Varchar).Value  = !string.IsNullOrEmpty(infoUsuario.TelefonoUsuario) ? (object)infoUsuario.TelefonoUsuario.Trim() : DBNull.Value;
                    cmd.Parameters.Add("tcu", NpgsqlTypes.NpgsqlDbType.Varchar).Value = !string.IsNullOrEmpty(infoUsuario.TelefonoCelUsuario) ? (object)infoUsuario.TelefonoCelUsuario.Trim() : DBNull.Value;
                    cmd.Parameters.Add("du", NpgsqlTypes.NpgsqlDbType.Varchar).Value  = !string.IsNullOrEmpty(infoUsuario.DireccionUsuario) ? (object)infoUsuario.DireccionUsuario.Trim().Trim() : DBNull.Value;
                    cmd.Parameters.Add("hu", NpgsqlTypes.NpgsqlDbType.Boolean).Value  = infoUsuario.HabilitadoUsuario;
                    cmd.ExecuteNonQuery();
                }
                string         query            = string.Empty;
                ConsultasRoles objConsultaRoles = new ConsultasRoles();
                infoUsuario.NombreRol = objConsultaRoles.ObtenerRolPorId(infoUsuario.IdRol).ObjetoInventarios.NombreRol;
                if (infoUsuario.NombreRol == "administrador")
                {
                    query = string.Format("create user {0} with password '{1}' LOGIN CREATEROLE CREATEUSER in group {2};", infoUsuario.NickUsuario.Trim(), pwdUsuario.Trim(), infoUsuario.NombreRol.Trim());
                }
                else
                {
                    query = string.Format("create user {0} with password '{1}' NOCREATEROLE NOCREATEUSER in group {2};", infoUsuario.NickUsuario.Trim(), pwdUsuario.Trim(), infoUsuario.NombreRol.Trim());
                }
                using (NpgsqlCommand cmd = new NpgsqlCommand(query, conn_BD))
                {
                    cmd.ExecuteNonQuery();
                }
                tran.Commit();
                conn_BD.Close();
                msjUsuarios.OperacionExitosa = true;
            }
            catch (Exception e)
            {
                conn_BD.Close();
                msjUsuarios.OperacionExitosa = false;
                msjUsuarios.MensajeError     = e.Message;
            }
            return(msjUsuarios);
        }
        public IActionResult ObtenerTokenTransacciones([FromBody] string infoUsuarioSesion)
        {
            JwtToken token = null;

            try
            {
                if (infoUsuarioSesion != null)
                {
                    ConsultasUsuarios objConsultasUsuariosBD = new ConsultasUsuarios();
                    MensajesUsuarios  msjUsuarios            = new MensajesUsuarios();
                    msjUsuarios = objConsultasUsuariosBD.ObtenerUsuarios("usuarioshabilitados");
                    if (msjUsuarios.OperacionExitosa)
                    {
                        Usuarios infoUsuario = msjUsuarios.ListaObjetoInventarios.Find(x => x.NickUsuario == infoUsuarioSesion);
                        if (infoUsuario != null)
                        {
                            token = ConfiguracionToken();
                            ConfigBaseDatos.SetCadenaConexion(string.Format("Server=localhost;Port=5432;User Id={0};Password={1};Database=DCICC_BDInventario; CommandTimeout=3020;", infoUsuario.NickUsuario.ToLower(), ConfigEncryption.EncriptarValor(infoUsuario.PasswordUsuario)));
                        }
                        else
                        {
                            return(Unauthorized());
                        }
                    }
                    else
                    {
                        return(Unauthorized());
                    }
                }
                else
                {
                    return(Unauthorized());
                }
            }
            catch (Exception e)
            {
                Logs.Error(string.Format("No se pudo generar el token de autorización para transacciones del usuario: {0}: {1}", infoUsuarioSesion, e.Message));
                return(Unauthorized());
            }
            return(Ok(token.Value));
        }
        /// <summary>
        /// Método para obtener los Usuarios de la base de datos.
        /// </summary>
        /// <param name="nombreFuncion">Tipo de función a llamar: consultausuarios o usuarioshabilitados</param>
        /// <returns></returns>
        public MensajesUsuarios ObtenerUsuarios(string nombreFuncion)
        {
            MensajesUsuarios msjUsuarios = new MensajesUsuarios();
            List <Usuarios>  lstUsuarios = new List <Usuarios>();

            try
            {
                using (NpgsqlCommand cmd = new NpgsqlCommand(nombreFuncion, conn_BD))
                {
                    cmd.CommandType = CommandType.StoredProcedure;
                    using (NpgsqlDataReader dr = cmd.ExecuteReader())
                    {
                        if (nombreFuncion == "consultausuarios")
                        {
                            while (dr.Read())
                            {
                                Usuarios objUsuarios = new Usuarios
                                {
                                    IdUsuario          = (int)dr[0],
                                    IdRol              = (int)dr[1],
                                    NombresUsuario     = dr[2].ToString().Trim(),
                                    NickUsuario        = dr[3].ToString().Trim(),
                                    PasswordUsuario    = ConfigEncryption.DesencriptarValor(dr[4].ToString().Trim()),
                                    CorreoUsuario      = dr[5].ToString().Trim(),
                                    TelefonoUsuario    = dr[6].ToString().Trim(),
                                    TelefonoCelUsuario = dr[7].ToString().Trim(),
                                    DireccionUsuario   = dr[8].ToString().Trim(),
                                    HabilitadoUsuario  = (bool)dr[9],
                                };
                                lstUsuarios.Add(objUsuarios);
                            }
                        }
                        else if (nombreFuncion == "responsablestickets")
                        {
                            while (dr.Read())
                            {
                                Usuarios objUsuarios = new Usuarios
                                {
                                    IdUsuario      = (int)dr[0],
                                    NombresUsuario = dr[1].ToString().Trim(),
                                };
                                lstUsuarios.Add(objUsuarios);
                            }
                        }
                        else
                        {
                            while (dr.Read())
                            {
                                Usuarios objUsuarios = new Usuarios
                                {
                                    IdUsuario          = (int)dr[0],
                                    IdRol              = (int)dr[1],
                                    NombresUsuario     = dr[2].ToString().Trim(),
                                    NickUsuario        = dr[3].ToString().Trim(),
                                    PasswordUsuario    = ConfigEncryption.DesencriptarValor(dr[4].ToString().Trim()),
                                    CorreoUsuario      = dr[5].ToString().Trim(),
                                    TelefonoUsuario    = dr[6].ToString().Trim(),
                                    TelefonoCelUsuario = dr[7].ToString().Trim(),
                                    DireccionUsuario   = dr[8].ToString().Trim(),
                                    HabilitadoUsuario  = (bool)dr[9],
                                    NombreRol          = dr[10].ToString().Trim()
                                };
                                lstUsuarios.Add(objUsuarios);
                            }
                        }
                        conn_BD.Close();
                        msjUsuarios.ListaObjetoInventarios = lstUsuarios;
                        msjUsuarios.OperacionExitosa       = true;
                    }
                }
            }
            catch (Exception e)
            {
                conn_BD.Close();
                msjUsuarios.OperacionExitosa       = false;
                msjUsuarios.MensajeError           = e.Message;
                msjUsuarios.ListaObjetoInventarios = null;
            }
            return(msjUsuarios);
        }
示例#8
0
        static void Main(string[] args)
        {
            ConfigEncryption.ToggleConfigEncryption();

            Const.CheckIsSingleInstance();
            //System.Threading.Thread.Sleep(600000);

            CultureInfo ci = new CultureInfo("en-us");

            Thread.CurrentThread.CurrentCulture   = ci;
            Thread.CurrentThread.CurrentUICulture = ci;
            //WorkMethods.ReturnReception();
            //WorkMethods.PrepareOutgoingConsignmentOperation("C:\\Projects\\OMKS\\mercury\\Работы\\avans\\241601.xml");
            //return;
            Logs.Log(string.Format("----------------------------Начало работы {0}------------------------------------", Const.FTPServer));
            Const.DoubleNotice = new List <string>();
            Const.InitCheeseAndButter();
            Const.InitProductItems();
            while (Const.GlobalProductItemList.Count == 0)
            {
                Const.InitProductItems();
            }

            //TODO: РАСКОММЕНТИРОВАТЬ!!!!!!!!!!!!!!!!!!!!!!!!!
            Const.InitStockEntrys();
            while (Const.GlobalStockEntryList.Count == 0)
            {
                Const.InitStockEntrys();
            }
            Enterprise enterprise = new Enterprise(); enterprise.guid = Const.EnterpriseId; //OMK
            //StockEntrys.MergeAll(RegisterModificationType.MERGE);
            //fileNames.AddRange(FTP.GetFilesByRootPath(Const.FTPPathRegisterProductionOperationRequest, Enum.RequestTypes.registerProductionOperationRequest, -1));
            //fileNames.AddRange(FTP.GetFilesByRootPath(Const.FTPPathPrepareOutgoingConsignmentRequest, Enum.RequestTypes.prepareOutgoingConsignmentRequest, -1));

            Thread threadRegisterProductionOperation = null;

            #region ProductItemThread
            //FTP.GetFiles4ProductItems();
            //return;
            Thread threadProductItem = null;
            threadProductItem      = new Thread(ProductItemThread);
            threadProductItem.Name = "ProductItemThread";
            //threadProductItem.Start();
            #endregion ProductItemThread
            #region ReturnThread
            //WorkMethods.ReturnReception();
            //return;
            Thread threadReturn = null;
            threadReturn      = new Thread(ReturnThread);
            threadReturn.Name = "ReturnThread";
            threadReturn.Start();
            #endregion ReturnThread
            #region IncomingThread
            //для теста
            //WorkMethods.IncomingReception();
            //return;
            //для теста
            Thread threadIncoming = null;
            threadIncoming      = new Thread(IncomingThread);
            threadIncoming.Name = "IncomingThread";
            threadIncoming.Start();
            #endregion IncomingThread
            #region ErrorThread
            //FTP.GetFiles4Error(Const.FTPPathPrepareOutgoingConsignmentRequest, -2);
            //return;
            Thread threadError = null;
            threadError      = new Thread(ErrorThread);
            threadError.Name = "ErrorThread";
            //threadError.Start();
            #endregion ErrorThread
            #region ReportThread
            Thread threadReport = null;
            threadRegisterProductionOperation      = new Thread(RegisterProductionOperationThread);
            threadRegisterProductionOperation.Name = "ReportThread";
            //threadRegisterProductionOperation.Start();
            threadReport      = new Thread(ReportThread);
            threadReport.Name = "ReportThread";
            threadReport.Start(); //Const.FTPPathRegisterProductionOperationRequest, Enum.RequestTypes.prepareOutgoingConsignmentRequest
            #endregion ReportThread
            #region WhatsAppThread
            //Thread threadWhatsApp = null;
            //threadWhatsApp = new Thread(WhatsAppThread);
            //threadWhatsApp.Name = "WhatsAppThread";
            //threadWhatsApp.Start();
            //threadWhatsApp.Abort();
            #endregion WhatsAppThread
            System.Object lockThis = new System.Object();
            while (true)
            {
                try
                {
                    lock (lockThis)
                    {
                        //Logs.Log(string.Format("------------------------------------Начало работы------------------------------------"));
                        //Console.WriteLine("{0} Поток отгрузки", DateTime.Now.ToString("F"));
                        #region проверка лицензии
                        //bool isLicensed = false;
                        //isLicensed = ServiceDB.CheckLicense(Const.IssuerId);
                        //if (!isLicensed)
                        //{
                        //    Logs.Log(string.Format("!!!Проблема соединения с интернетом, ИР {0}", Const.FTPServer));
                        //    System.Threading.Thread.Sleep(60000);
                        //    isLicensed = ServiceDB.CheckLicense(Const.IssuerId);
                        //}
                        //if (!isLicensed)
                        //{
                        //    #region запись в БД для рассылки Телеграмм
                        //    ApplicationResponse ar = new ApplicationResponse(Guid.NewGuid().ToString());
                        //    ar.Status = Enum.ApplicationStatus.REJECTED;
                        //    ar.RcvDate = DateTime.Now;
                        //    ar.ErrorList = new List<Error>();
                        //    Error error = new Error("ADM00001", "!!!Проблема соединения с интернетом, работа ИР ЗАВЕРШЕНА!!!");
                        //    ar.ErrorList.Add(error);
                        //    ar.Save();
                        //    #endregion запись в БД для рассылки Телеграмм
                        //    Logs.Log(string.Format("!!!Проблема соединения с интернетом, работа ИР {0} ЗАВЕРШЕНА!!!", Const.FTPServer));
                        //    Environment.Exit(0);
                        //}
                        #endregion проверка лицензии
                        Const.CheckLicense();
                        if (DateTime.Now.Hour == 23 && DateTime.Now.Minute > 57)
                        {
                            int bufPause = (86400 - (int)((DateTime.Now - DateTime.Today).TotalSeconds));
                            Logs.Log(string.Format("Буферная пауза перед полуночью длительнотью {0} секунд", bufPause));
                            System.Threading.Thread.Sleep(bufPause * 1000);
                        }
                        FTP.GetFilesByRootPath(Const.FTPPathRegisterProductionOperationRequest, Enum.RequestTypes.registerProductionOperationRequest, -30); //-5
                        System.Threading.Thread.Sleep(1000);
                        StockEntrys.MergeAll();
                        FTP.GetFilesByRootPath(Const.FTPPathPrepareOutgoingConsignmentRequest, Enum.RequestTypes.prepareOutgoingConsignmentRequest, -1); //-30
                        System.Threading.Thread.Sleep(1000);
                        FTP.GetFilesByRootPath(Const.FTPPathInvalidate, Enum.RequestTypes.InvalidateRequest, -6);
                        System.Threading.Thread.Sleep(1000);
                        FTP.GetFilesByRootPath(Const.FTPPathDeleteTTN, Enum.RequestTypes.DeleteTTNRequest, -1);
                        System.Threading.Thread.Sleep(1000);

                        //FTP.GetFiles4Reports();
                        //System.Threading.Thread.Sleep(1000);
                        //Logs.Log(string.Format("------------------------------------Окончание работы------------------------------------"));
                        //System.Threading.Thread.Sleep(60000);
                        if (DateTime.Now.Hour > 8 && DateTime.Now.Hour < 19 && DateTime.Now.Minute > 0 && DateTime.Now.Minute < 5 &&
                            DateTime.Now.Hour != lastUpHour)
                        {
                            Const.InitProductItems();
                            while (Const.GlobalProductItemList.Count == 0)
                            {
                                Const.InitProductItems();
                            }
                            lastUpHour = DateTime.Now.Hour;
                        }
                        if ((DateTime.Now.Hour == 10 || DateTime.Now.Hour == 17) && DateTime.Now.Minute > 5 && DateTime.Now.Minute < 10 && DateTime.Now.Hour != lastUpHourSE)
                        {
                            Const.InitStockEntrys();
                            while (Const.GlobalStockEntryList.Count == 0)
                            {
                                Const.InitStockEntrys();
                            }
                            lastUpHourSE = DateTime.Now.Hour;
                        }
                        if (Const.DoubleNotice != null && DateTime.Now.Minute > 0 && DateTime.Now.Minute < 5 && DateTime.Now.Hour != lastUpHourDN)
                        {
                            Const.DoubleNotice.Clear();
                            lastUpHourDN = DateTime.Now.Hour;
                        }
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine("{0} Exception caught.", ex);
                    Logs.ErrorLog(ex.ToString());
                }
            }
        }
        /// <summary>
        /// Método para actualizar un Usuario en la base de datos.
        /// </summary>
        /// <param name="infoUsuario"></param>
        /// <returns></returns>
        public MensajesUsuarios ActualizacionUsuario(Usuarios infoUsuario)
        {
            MensajesUsuarios msjUsuarios = new MensajesUsuarios();

            try
            {
                NpgsqlTransaction tran                = conn_BD.BeginTransaction();
                string            pwdUsuario          = ConfigEncryption.EncriptarValor(infoUsuario.PasswordUsuario);
                ConsultasUsuarios objConsultaUsuarios = new ConsultasUsuarios();
                if (objConsultaUsuarios.ObtenerUsuarioPorNick(infoUsuario.NickUsuario).ObjetoInventarios == null)
                {
                    using (NpgsqlCommand cmd = new NpgsqlCommand("UPDATE dcicc_usuarios set id_rol = @ir,nombres_usuario = @nu,password_usuario = @pu,correo_usuario = @cu,telefono_usuario = @tu,telefonocelular_usuario = @tcu,direccion_usuario = @du,habilitado_usuario = @hu where id_usuario = @iu", conn_BD))
                    {
                        cmd.Parameters.Add("ir", NpgsqlTypes.NpgsqlDbType.Integer).Value  = infoUsuario.IdRol;
                        cmd.Parameters.Add("nu", NpgsqlTypes.NpgsqlDbType.Varchar).Value  = infoUsuario.NombresUsuario.Trim();
                        cmd.Parameters.Add("pu", NpgsqlTypes.NpgsqlDbType.Text).Value     = pwdUsuario.Trim();
                        cmd.Parameters.Add("cu", NpgsqlTypes.NpgsqlDbType.Varchar).Value  = infoUsuario.CorreoUsuario.Trim();
                        cmd.Parameters.Add("tu", NpgsqlTypes.NpgsqlDbType.Varchar).Value  = !string.IsNullOrEmpty(infoUsuario.TelefonoUsuario) ? (object)infoUsuario.TelefonoUsuario.Trim() : DBNull.Value;
                        cmd.Parameters.Add("tcu", NpgsqlTypes.NpgsqlDbType.Varchar).Value = !string.IsNullOrEmpty(infoUsuario.TelefonoCelUsuario) ? (object)infoUsuario.TelefonoCelUsuario.Trim() : DBNull.Value;
                        cmd.Parameters.Add("du", NpgsqlTypes.NpgsqlDbType.Varchar).Value  = !string.IsNullOrEmpty(infoUsuario.DireccionUsuario) ? (object)infoUsuario.DireccionUsuario.Trim() : DBNull.Value;
                        cmd.Parameters.Add("hu", NpgsqlTypes.NpgsqlDbType.Boolean).Value  = infoUsuario.HabilitadoUsuario;
                        cmd.Parameters.Add("iu", NpgsqlTypes.NpgsqlDbType.Integer).Value  = infoUsuario.IdUsuario;
                        cmd.ExecuteNonQuery();
                    }
                    tran.Commit();
                    msjUsuarios = ActualizacionNickUsuario(infoUsuario);
                    if (infoUsuario.NombreRolAntiguo != null)
                    {
                        ActualizarRolUsuario(infoUsuario.NombreRolAntiguo.Trim(), infoUsuario.NombreRol.Trim(), infoUsuario.NickUsuario.Trim());
                    }
                    conn_BD.Close();
                }
                else
                {
                    using (NpgsqlCommand cmd = new NpgsqlCommand("UPDATE dcicc_usuarios set id_rol = @ir,nombres_usuario = @nu,nick_usuario = @niu,password_usuario = @pu,correo_usuario = @cu,telefono_usuario = @tu,telefonocelular_usuario = @tcu,direccion_usuario = @du,habilitado_usuario = @hu where id_usuario = @iu", conn_BD))
                    {
                        cmd.Parameters.Add("ir", NpgsqlTypes.NpgsqlDbType.Integer).Value  = infoUsuario.IdRol;
                        cmd.Parameters.Add("nu", NpgsqlTypes.NpgsqlDbType.Varchar).Value  = infoUsuario.NombresUsuario.Trim();
                        cmd.Parameters.Add("niu", NpgsqlTypes.NpgsqlDbType.Varchar).Value = infoUsuario.NickUsuario.Trim();
                        cmd.Parameters.Add("pu", NpgsqlTypes.NpgsqlDbType.Varchar).Value  = pwdUsuario.Trim();
                        cmd.Parameters.Add("cu", NpgsqlTypes.NpgsqlDbType.Varchar).Value  = infoUsuario.CorreoUsuario.Trim();
                        cmd.Parameters.Add("tu", NpgsqlTypes.NpgsqlDbType.Varchar).Value  = !string.IsNullOrEmpty(infoUsuario.TelefonoUsuario) ? (object)infoUsuario.TelefonoUsuario.Trim() : DBNull.Value;
                        cmd.Parameters.Add("tcu", NpgsqlTypes.NpgsqlDbType.Varchar).Value = !string.IsNullOrEmpty(infoUsuario.TelefonoCelUsuario) ? (object)infoUsuario.TelefonoCelUsuario.Trim() : DBNull.Value;
                        cmd.Parameters.Add("du", NpgsqlTypes.NpgsqlDbType.Varchar).Value  = !string.IsNullOrEmpty(infoUsuario.DireccionUsuario) ? (object)infoUsuario.DireccionUsuario.Trim() : DBNull.Value;
                        cmd.Parameters.Add("hu", NpgsqlTypes.NpgsqlDbType.Boolean).Value  = infoUsuario.HabilitadoUsuario;
                        cmd.Parameters.Add("iu", NpgsqlTypes.NpgsqlDbType.Integer).Value  = infoUsuario.IdUsuario;
                        cmd.ExecuteNonQuery();
                    }
                    if (infoUsuario.NombreRolAntiguo != null)
                    {
                        ActualizarRolUsuario(infoUsuario.NombreRolAntiguo.Trim(), infoUsuario.NombreRol.Trim(), infoUsuario.NickUsuario.Trim());
                    }
                    string query = string.Format("ALTER USER {0} with password '{1}';", infoUsuario.NickUsuario.Trim(), pwdUsuario.Trim());
                    using (var cmd = new NpgsqlCommand(query, conn_BD))
                    {
                        cmd.ExecuteNonQuery();
                    }
                    tran.Commit();
                    conn_BD.Close();
                    msjUsuarios.OperacionExitosa = true;
                }
            }
            catch (Exception e)
            {
                conn_BD.Close();
                msjUsuarios.OperacionExitosa = false;
                msjUsuarios.MensajeError     = e.Message;
            }
            return(msjUsuarios);
        }
        /// <summary>
        /// Método para actualizar el Nick de un Usuario en la base de datos.
        /// </summary>
        /// <param name="infoUsuario"></param>
        /// <returns></returns>
        public MensajesUsuarios ActualizacionNickUsuario(Usuarios infoUsuario)
        {
            MensajesUsuarios msjUsuarios = new MensajesUsuarios();

            try
            {
                ConsultasUsuarios objConsultaUsuarios = new ConsultasUsuarios();
                Usuarios          infoUsuarioBD       = objConsultaUsuarios.ObtenerUsuarioPorId(infoUsuario.IdUsuario).ObjetoInventarios;
                string            nickAnterior        = infoUsuarioBD.NickUsuario;
                NpgsqlTransaction tran = conn_BD.BeginTransaction();
                using (NpgsqlCommand cmd = new NpgsqlCommand("UPDATE dcicc_usuarios set nick_usuario = @niu where id_usuario = @iu", conn_BD))
                {
                    cmd.Parameters.Add("niu", NpgsqlTypes.NpgsqlDbType.Varchar).Value = infoUsuario.NickUsuario.Trim();
                    cmd.Parameters.Add("iu", NpgsqlTypes.NpgsqlDbType.Integer).Value  = infoUsuario.IdUsuario;
                    cmd.ExecuteNonQuery();
                }
                string queryUser = string.Format("ALTER USER {0} RENAME TO {1};", nickAnterior, infoUsuario.NickUsuario.Trim());
                using (var cmd = new NpgsqlCommand(queryUser, conn_BD))
                {
                    cmd.ExecuteNonQuery();
                }
                string queryPwd = string.Format("ALTER USER {0} with password '{1}';", infoUsuario.NickUsuario, ConfigEncryption.EncriptarValor(infoUsuario.PasswordUsuario.Trim()));
                using (var cmd = new NpgsqlCommand(queryPwd, conn_BD))
                {
                    cmd.ExecuteNonQuery();
                }
                tran.Commit();
                msjUsuarios.OperacionExitosa = true;
            }
            catch (Exception e)
            {
                conn_BD.Close();
                msjUsuarios.OperacionExitosa = false;
                msjUsuarios.MensajeError     = e.Message;
            }
            return(msjUsuarios);
        }
        /// <summary>
        /// Método para actualizar el perfil de un Usuario en la base de datos.
        /// </summary>
        /// <param name="infoUsuario"></param>
        /// <returns></returns>
        public MensajesUsuarios ActualizacionPerfilUsuario(Usuarios infoUsuario)
        {
            MensajesUsuarios msjUsuarios = new MensajesUsuarios();

            try
            {
                NpgsqlTransaction tran = conn_BD.BeginTransaction();
                using (NpgsqlCommand cmd = new NpgsqlCommand("UPDATE dcicc_usuarios set nombres_usuario = @nu,correo_usuario = @cu,telefono_usuario = @tu,telefonocelular_usuario = @tcu,direccion_usuario = @du where id_usuario = @iu", conn_BD))
                {
                    cmd.Parameters.Add("nu", NpgsqlTypes.NpgsqlDbType.Varchar).Value  = infoUsuario.NombresUsuario.Trim();
                    cmd.Parameters.Add("cu", NpgsqlTypes.NpgsqlDbType.Varchar).Value  = infoUsuario.CorreoUsuario.Trim();
                    cmd.Parameters.Add("tu", NpgsqlTypes.NpgsqlDbType.Varchar).Value  = !string.IsNullOrEmpty(infoUsuario.TelefonoUsuario) ? (object)infoUsuario.TelefonoUsuario.Trim() : DBNull.Value;
                    cmd.Parameters.Add("tcu", NpgsqlTypes.NpgsqlDbType.Varchar).Value = !string.IsNullOrEmpty(infoUsuario.TelefonoCelUsuario) ? (object)infoUsuario.TelefonoCelUsuario.Trim() : DBNull.Value;
                    cmd.Parameters.Add("du", NpgsqlTypes.NpgsqlDbType.Varchar).Value  = !string.IsNullOrEmpty(infoUsuario.DireccionUsuario) ? (object)infoUsuario.DireccionUsuario.Trim() : DBNull.Value;
                    cmd.Parameters.Add("iu", NpgsqlTypes.NpgsqlDbType.Integer).Value  = infoUsuario.IdUsuario;
                    cmd.ExecuteNonQuery();
                }
                ConsultasUsuarios objConsultaUsuarios = new ConsultasUsuarios();
                if (objConsultaUsuarios.ObtenerUsuarioPorNick(infoUsuario.NickUsuario).ObjetoInventarios == null)
                {
                    ConsultasUsuarios objConsultaUsuariosBD = new ConsultasUsuarios();
                    Usuarios          infoUsuarioBD         = objConsultaUsuariosBD.ObtenerUsuarioPorId(infoUsuario.IdUsuario).ObjetoInventarios;
                    string            nickAnterior          = infoUsuarioBD.NickUsuario.Trim();
                    using (NpgsqlCommand cmd = new NpgsqlCommand("UPDATE dcicc_usuarios set nick_usuario = @niu where id_usuario = @iu", conn_BD))
                    {
                        cmd.Parameters.Add("niu", NpgsqlTypes.NpgsqlDbType.Varchar).Value = infoUsuario.NickUsuario.Trim();
                        cmd.Parameters.Add("iu", NpgsqlTypes.NpgsqlDbType.Integer).Value  = infoUsuario.IdUsuario;
                        cmd.ExecuteNonQuery();
                    }
                    tran.Commit();
                    conn_BD.Close();
                    NpgsqlConnection connBD = new NpgsqlConnection("Server=localhost;Port=5432;User Id=postgres;Password=Admin*1234;Database=DCICC_BDInventario; CommandTimeout=3020;");
                    connBD.Open();
                    NpgsqlTransaction tranBD    = connBD.BeginTransaction();
                    string            queryUser = string.Format("ALTER USER {0} RENAME TO {1};", nickAnterior.Trim(), infoUsuario.NickUsuario.Trim());
                    using (var cmd = new NpgsqlCommand(queryUser, connBD))
                    {
                        cmd.ExecuteNonQuery();
                    }
                    string queryPwd = string.Format("ALTER USER {0} with password '{1}';", infoUsuario.NickUsuario.Trim(), ConfigEncryption.EncriptarValor(infoUsuario.PasswordUsuario.Trim()));
                    using (var cmd = new NpgsqlCommand(queryPwd, connBD))
                    {
                        cmd.ExecuteNonQuery();
                    }
                    tranBD.Commit();
                    connBD.Close();
                }
                else
                {
                    tran.Commit();
                    conn_BD.Close();
                }
                msjUsuarios.OperacionExitosa = true;
            }
            catch (Exception e)
            {
                conn_BD.Close();
                msjUsuarios.OperacionExitosa = false;
                msjUsuarios.MensajeError     = e.Message;
            }
            return(msjUsuarios);
        }