Example #1
0
        public int ClienteUpdatePassword(ActivarCliente model)
        {
            int           resultado = -1;
            object        obj       = new object();
            SqlConnection Conexion  = new SqlConnection(cadenaConexion);
            SqlCommand    command   = new SqlCommand("Sp_PutPassword", Conexion);

            try
            {
                using (Conexion)
                {
                    Conexion.Open();
                    command.CommandType = CommandType.StoredProcedure;
                    command.Parameters.Clear();
                    command.Parameters.AddWithValue("@Email", model.Email);
                    command.Parameters.AddWithValue("@Password", model.Password);
                    obj = command.ExecuteScalar();
                    Conexion.Close();
                }
                if (obj != DBNull.Value && obj != null)
                {
                    resultado = Convert.ToInt32(obj);
                }
            }
            catch (Exception ex)
            {
                Conexion.Close();
                InsertarSucesoLog(Funcion.ConstruirSucesoLog(ex.ToString().Substring(0, 300) + "*EngineDb/ClienteUpdatePassword*" + model.Email));
            }
            return(resultado);
        }
        public ActivarCliente ConstruirActivarCliente(IEngineDb Metodo, string email, string password)
        {
            Guid           guid = Metodo.ObtenerIdentidadCliente(email);
            ActivarCliente R    = new ActivarCliente()
            {
                Email           = email,
                Password        = password,
                FechaActivacion = DateTime.UtcNow,
                Estatus         = true,
                Identidad       = guid
            };

            return(R);
        }
        public ActionResult EditPassword(ActivarCliente model)
        {
            Respuesta R = new Respuesta();

            if (model == null)
            {
                return(View(R));
            }
            if (model.Email == null || model.Password == null || model.Password2 == null)
            {
                return(View(R));
            }

            bool   resultado   = Funcion.EmailEsValido(model.Email);
            string emailCode64 = Funcion.ConvertirBase64(model.Email);

            if (!resultado)
            {
                //Email no valido
                R = Funcion.RespuestaProceso("EditPassword", emailCode64, null, model.Email + EngineData.EmailNoValido());
                return(RedirectToAction("State", "Home", R));
            }
            resultado = Funcion.CompareString(model.Password, model.Password2);
            if (!resultado)
            {
                //Las contraseñas deben ser identicas
                R = Funcion.RespuestaProceso("EditPassword", emailCode64, null, model.Email + EngineData.PasswordNoIdenticos());
                return(RedirectToAction("State", "Home", R));
            }
            model.Estatus       = false;
            model.FechaRegistro = DateTime.UtcNow;
            model.Password      = Funcion.ConvertirBase64(model.Email + model.Password);
            int result = Metodo.ClienteUpdatePassword(model);

            if (result <= 0)
            {
                //Fallo modificar contraseña
                R = Funcion.RespuestaProceso("EditPassword", emailCode64, null, model.Email + EngineData.RestablecerContraseñaFallida());
                return(RedirectToAction("State", "Home", R));
            }
            System.Web.HttpContext.Current.Session["Email"] = model.Email;
            R = Funcion.RespuestaProceso("Login", emailCode64, null, model.Email + EngineData.RestablecerContraseñaExito());
            return(RedirectToAction("State", "Home", R));
        }
        public ActionResult State(int Id = 0, string email = "", string identidad = "", string date = "", string status = "", string ide = "", string type = "", string cultureInfo = "", Respuesta K = null)
        {
            System.Web.HttpContext.Current.Session["Usuario"] = EngineData.usuarioTemporal;
            Respuesta R           = new Respuesta();
            bool      resultado   = false;
            Guid      guidCliente = Guid.Empty;
            string    emailCode64 = string.Empty;

            //Validar email
            if (email != string.Empty && email != null)
            {
                if (Funcion.CadenaBase64Valida(email))
                {
                    email = Funcion.DecodeBase64(email);
                }

                resultado   = Funcion.EmailEsValido(email);
                emailCode64 = Funcion.ConvertirBase64(email);
                if (!resultado)
                {
                    if (K.RespuestaAccion != string.Empty && K.RespuestaAccion != null)
                    {
                        R = Funcion.RespuestaProceso(K.RespuestaAccion, emailCode64, null, email + EngineData.EmailNoValido());
                    }
                    else if (type != string.Empty && type != null)
                    {
                        R = Funcion.RespuestaProceso("Index", emailCode64, null, email + EngineData.EmailNoValido());
                    }
                    return(View(R));
                }
            }

            //Validar GUID de identidad
            if (identidad != string.Empty && identidad != null && type != string.Empty && type != null)
            {
                if (type == EngineData.RegisterManager)
                {
                    guidCliente = Metodo.ObtenerIdentidadGerente(email);
                }
                else
                {
                    guidCliente = Metodo.ObtenerIdentidadCliente(email);
                }

                string identificador = Funcion.EncodeMd5(guidCliente.ToString());
                resultado = Funcion.CompareString(identidad, identificador);
                if (!resultado)
                {
                    R = Funcion.RespuestaProceso("Open", emailCode64, null, EngineData.ErrorInternoServidor());
                    Funcion.ConstruirSucesoLog("GUID no concuerda*Home/State*" + email, Metodo);
                    return(View(R));
                }
            }

            //validar tiempo de expiracion del link
            if (date != string.Empty && date != null && type != string.Empty && type != null)
            {
                date = date.Replace('*', ' ');
                date = date.Replace('+', ' ');
                date = date.Replace('a', ' ');
                date = date.Replace('p', ' ');
                date = date.Replace('m', ' ');
                date = date.Trim();
                Funcion.SetCultureInfo(cultureInfo);
                //CultureInfo ci = new CultureInfo(cultureInfo);
                //Thread.CurrentThread.CurrentUICulture = ci;
                //Thread.CurrentThread.CurrentCulture = ci;
                DateTime fechaEnvio      = Convert.ToDateTime(date);
                DateTime fechaActivacion = DateTime.UtcNow;
                resultado = Funcion.EstatusLink(fechaEnvio, fechaActivacion);
                if (!resultado)
                {
                    if (type == EngineData.Register)
                    {
                        string contraseña = Metodo.ObtenerPasswordCliente(email);
                        contraseña = contraseña.Replace(email, "");
                        resultado  = Funcion.EnviarNuevaNotificacion(Notificacion, Metodo, email, EngineData.Register, contraseña);
                    }
                    else if (type == EngineData.Test)
                    {
                        resultado = Funcion.EnviarNuevaNotificacion(Notificacion, Metodo, email, EngineData.Test);
                    }
                    else if (type == EngineData.RegisterManager)
                    {
                        resultado = Funcion.EnviarNuevaNotificacion(Notificacion, Metodo, email, EngineData.RegisterManager);
                    }

                    R = Funcion.RespuestaProceso("Index", emailCode64, null, EngineData.TiempoLinkExpiro());
                    return(View(R));
                }
            }

            //Activacion tiempo de prueba
            if (type == EngineData.Test)
            {
                Cliente client = Funcion.ConstruirActualizarClienteTest(Metodo, email, identidad);
                int     act    = Metodo.UpdateClienteTest(client);
                if (act > 0)
                {
                    R = Funcion.RespuestaProceso("Contact", emailCode64, null, EngineData.ActivacionExitosa());
                }
                else
                {
                    R = Funcion.RespuestaProceso("Index", emailCode64, null, EngineData.ActivacionFallida());
                }
            }
            //Activacion cuenta del cliente
            else if (type == EngineData.Register)
            {
                string         password = ide;
                ActivarCliente model    = new ActivarCliente();
                model = Funcion.ConstruirActivarCliente(Metodo, email, password);
                int act = Metodo.ClienteRegistroActivacion(model);
                if (act >= 1)
                {
                    R = Funcion.RespuestaProceso("Login", emailCode64, null, EngineData.ActivacionExitosa());
                }
                else
                {
                    R = Funcion.RespuestaProceso("Login", emailCode64, null, EngineData.ActivacionFallida());
                }
            }
            // Enviar a restablecer password
            else if (type == EngineData.ResetPassword)
            {
                if (ide == string.Empty || ide == null)
                {
                    R = Funcion.RespuestaProceso("Open", emailCode64, null, EngineData.ErrorInternoServidor());
                    Funcion.ConstruirSucesoLog("CODIGO restablecer password vacio*Home/State*" + email, Metodo);
                    return(View(R));
                }
                string codigo = Funcion.DecodeBase64(ide);
                string code   = Metodo.ObtenerCodigoRestablecerPassword(email);
                resultado = Funcion.CompareString(codigo, code);
                if (!resultado)
                {
                    R = Funcion.RespuestaProceso("Open", emailCode64, null, EngineData.ErrorInternoServidor());
                    Funcion.ConstruirSucesoLog("CODIGO restablecer password no coinciden*Home/State*" + email, Metodo);
                    return(View(R));
                }
                System.Web.HttpContext.Current.Session["Email"] = email;
                R = Funcion.RespuestaProceso(null, emailCode64, "codeVerify", EngineData.IngreseCodigoVerificacion());
                return(RedirectToAction("EditPasswordNotify", "Home", R));
            }
            //Resdireccionar a actualizar el perfil de administrador
            else if (type == EngineData.RegisterManager)
            {
                Gerente G = new Gerente();
                G.Email = email;
                G.Id    = EngineData.IdActivacion;
                return(RedirectToAction("Update", "Manager", G));
            }

            if (K.RespuestaAccion != null)
            {
                return(View(K));
            }


            return(View(R));
        }
        public ActionResult Register(ActivarCliente model = null)
        {
            Respuesta R = new Respuesta();

            if (model == null)
            {
                return(View(R));
            }
            if (model.Email == null || model.Password == null || model.Password2 == null || model.Nombre == null || model.Apellido == null)
            {
                return(View(R));
            }

            bool   resultado   = Funcion.EmailEsValido(model.Email);
            string emailCode64 = Funcion.ConvertirBase64(model.Email);

            if (!resultado)
            {
                //Email no valido
                R = Funcion.RespuestaProceso("Register", emailCode64, null, model.Email + EngineData.EmailNoValido());
                return(RedirectToAction("State", "Home", R));
            }
            resultado = Funcion.CompareString(model.Password, model.Password2);
            if (!resultado)
            {
                //Las contraseñas deben ser iguales
                R = Funcion.RespuestaProceso("Register", emailCode64, null, model.Email + EngineData.PasswordNoIdenticos());
                return(RedirectToAction("State", "Home", R));
            }
            model.Estatus       = false;
            model.FechaRegistro = DateTime.UtcNow;
            model.Password      = Funcion.ConvertirBase64(model.Email + model.Password);
            int result = Metodo.ClienteRegistro(model);

            if (result <= 0)
            {
                //Error al registrar cliente
                Funcion.ConstruirSucesoLog("Error registrando cliente*Home/Register*" + model.Email, Metodo);
                R = Funcion.RespuestaProceso("Register", emailCode64, null, model.Email + EngineData.ErrorRegistroCliente());
                return(RedirectToAction("State", "Home", R));
            }

            //*****************PAGO HARCODE**************************
            PagoCliente pago = Funcion.ConstruirPagoCliente(result);

            Metodo.SetPagoCliente(pago);
            //***************************************************

            string         enlaze     = Funcion.CrearEnlazeRegistro(Metodo, model.Email, model.Password2);
            EstructuraMail estructura = new EstructuraMail();

            estructura = Funcion.SetEstructuraMailRegister(enlaze, model.Email, estructura);
            resultado  = Notificacion.EnviarMailNotificacion(estructura);
            if (resultado)
            {
                //Registro exitoso
                R = Funcion.RespuestaProceso("Index", emailCode64, null, model.Email + EngineData.RegistroExitoso());
                return(RedirectToAction("State", "Home", R));
            }
            else
            {
                //Error enviando notficacion - error interno
                Funcion.ConstruirSucesoLog("Error enviando email*Home/Register*" + model.Email, Metodo);
                R = Funcion.RespuestaProceso("Open", emailCode64, null, model.Email + EngineData.ErrorEnviandoMail());
                return(RedirectToAction("State", "Home", R));
            }
        }