public bool EnviarNuevaNotificacion(IEngineNotificacion Notificacion, IEngineDb Metodo, string email = "", string type = "", string password = "")
        {
            bool           resultado = false;
            EstructuraMail model     = new EstructuraMail();

            resultado = CadenaBase64Valida(email);
            if (resultado)
            {
                email = DecodeBase64(email);
            }

            if (type == EngineData.Test)
            {
                string enlaze = CrearEnlazePrueba(Metodo, email);
                model = SetEstructuraMailTest(enlaze, email, model);
            }
            else if (type == EngineData.Register)
            {
                password = DecodeBase64(password);
                string enlaze = CrearEnlazeRegistro(Metodo, email, password);
                model = SetEstructuraMailRegister(enlaze, email, model);
            }
            else if (type == EngineData.RegisterManager)
            {
                string enlaze = CrearEnlazeRegistroGerente(Metodo, email);
                model = SetEstructuraMailRegisterManager(enlaze, email, model);
            }
            resultado = Notificacion.EnviarMailNotificacion(model);
            return(resultado);
        }
        public ActionResult Index(Gerente modelo = null)
        {
            CreateGalleta();
            ViewBag.Respuesta         = null;
            ViewBag.Roles             = Funcion.Roles();
            modelo.FechaRegistro      = DateTime.Now;
            modelo.FechaActualizacion = DateTime.Now;

            if (Request.HttpMethod == "POST")
            {
                if (modelo.Nombre == string.Empty || modelo.NombreUsuario == string.Empty || modelo.Email == string.Empty || modelo.Rol == string.Empty || modelo.Nombre == null || modelo.NombreUsuario == null || modelo.Email == null || modelo.Rol == null)
                {
                    ViewBag.Respuesta = "Todos los campos son requeridos, completelos por favor";
                    return(View(modelo));
                }
                bool resultado = false;
                resultado = Funcion.EmailEsValido(modelo.Email);
                if (!resultado)
                {
                    ViewBag.Respuesta = "La direccion de correo no es valida";
                    return(View(modelo));
                }
                modelo.Identidad = Funcion.IdentificadorReg();
                resultado        = Metodo.InsertarNuevoGerente(modelo);
                if (!resultado)
                {
                    ViewBag.Respuesta = "Error al crear administrador";
                    return(View(modelo));
                }
                string         enlaze     = Funcion.CrearEnlazeRegistroGerente(Metodo, modelo.Email);
                EstructuraMail estructura = new EstructuraMail();
                estructura                = Funcion.SetEstructuraMailRegisterManager(enlaze, modelo.Email, estructura);
                resultado                 = Notificacion.EnviarMailNotificacion(estructura);
                ViewBag.Respuesta         = "Administrador creado exitosamente,debe revisar bandeja de entrada";
                modelo                    = new Gerente();
                modelo.FechaActualizacion = DateTime.Now;
                return(View(modelo));
            }

            return(View(modelo));
        }
        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));
            }
        }