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