public ActionResult FinSesion()
        {
            SesionAplicacion  objSesionAplicacion = new SesionAplicacion();
            string            userIdApp, app, tknApp;
            List <Parametros> param = new List <Parametros>();


            userIdApp = Request.Cookies["SesionIged"]["UserIdApp"].ToString();
            app       = Request.Cookies["SesionIged"]["App"].ToString();
            tknApp    = Request.Cookies["SesionIged"]["TknApp"].ToString();

            Response.Cookies["SesionIged"].Expires = DateTime.Now.AddDays(-1);

            objSesionAplicacion.EliminarTokenAplicacion(userIdApp, app, tknApp, out param);

            Session.Abandon();

            if (!Request.IsAjaxRequest())
            {
                return(PartialView("_FinSesion"));
            }
            else
            {
                return(PartialView("_FinSesion2"));
            }
        }
        public void actualizarFechaHoraCookie()
        {
            SesionAplicacion objAplicacion = new SesionAplicacion();

            ViewBag.CerrarVentana = false;
            ViewBag.tk            = "";
            string userIdApp, app, tknApp;

            app       = Request.Cookies["SesionIged"]["App"].ToString();
            userIdApp = Request.Cookies["SesionIged"]["UserIdApp"].ToString();
            tknApp    = Request.Cookies["SesionIged"]["TknApp"].ToString();

            try
            {
                if (Request.Cookies["SesionPortal"] != null)
                {
                    string valor = "", tokenPortal = "", TokenCookie = "";

                    tokenPortal = Request.Cookies["SesionPortal"]["Token"].ToString();
                    valor       = Request.Cookies["SesionPortal"]["Aplicaciones"].ToString();

//                    if (valor.IndexOf("|" + Session["App"].ToString() + "|") != -1) // SE VALIDA SI EXISTE TOKEN EN LA COOKIE PARA LA APLICACION QUE SE VA A CARGAR
                    if (valor.IndexOf("|" + app + "|") != -1) // SE VALIDA SI EXISTE TOKEN EN LA COOKIE PARA LA APLICACION QUE SE VA A CARGAR
                    {
                        //ViewBag.tk = Session["TknApp"];
                        ViewBag.tk = tknApp;

                        //TokenCookie = objAplicacion.TokenApp(valor, Session["App"].ToString());
                        TokenCookie = objAplicacion.TokenApp(valor, app);

                        if (TokenCookie == ViewBag.tk) // SE VALIDA SI EL TOKEN DE LA APLICACION CORRESPONDE AL TOKEN DE LA COOKIE
                        {
                            //Response.Cookies.Add(objAplicacion.actualizarAppCookie(Session["UserIdApp"].ToString(), Session["App"].ToString(), tokenPortal, Session["TknApp"].ToString(), valor));
                            Response.Cookies.Add(objAplicacion.actualizarAppCookie(userIdApp, app, tokenPortal, tknApp, valor));
                        }
                        else
                        {
                            ViewBag.CerrarVentana = true;
                            TempData["msg"]       = "No se pudo realizar esta operación debido a que esta sesión no es valida";
                        }
                    }
                    else
                    {
                        ViewBag.CerrarVentana = true;
                        TempData["msg"]       = "No se pudo realizar esta operación debido a que esta sesión no es valida";
                    }
                }
                else
                {
                    ViewBag.CerrarVentana = true;
                    TempData["msg"]       = "No se pudo realizar esta operación debido a que esta sesión no es valida";
                }
            }
            catch (Exception e)
            {
                TempData["err"] = e.Message.ToString();
            }
        }
        // GET:
        //[ExpiraSesionFilter]
        public ActionResult CerrarModulo()
        {
            List <Parametros> param = new List <Parametros>();
            SesionAplicacion  objSesionAplicacion = new SesionAplicacion();
            TipoDocumento     objTipoDoc = new TipoDocumento();
            string            userIdApp, app, tknApp;

            //  cargarOpciones();

            app       = Request.Cookies["SesionIged"]["App"].ToString();
            userIdApp = Request.Cookies["SesionIged"]["UserIdApp"].ToString();
            tknApp    = Request.Cookies["SesionIged"]["TknApp"].ToString();

            Encuesta objSesion = new Encuesta();

            objSesion.eliminarSesionIdUsuario(userIdApp);
            ViewBag.TiposDoc = new SelectList(objTipoDoc.tiposDocumento(), "ID", "TIPO_DOC");

            try
            {
                //if (app != null && userIdApp != null && tknApp != null)
                //{
                //    //objSesionAplicacion.EliminarTokenAplicacion(Session["UserIdApp"].ToString(), Session["App"].ToString(), Session["TknApp"].ToString(), out param);
                //    objSesionAplicacion.EliminarTokenAplicacion(userIdApp, app, tknApp, out param);

                //    if (param.Find(x => x.Nombre == "p_Salida").Valor != "1")
                //    {
                //        TempData["msg"] = "No se pudo realizar el cierre de Sesion debido a un problema con la Base de Datos";
                //        return RedirectToAction("Home", "IgedEncuesta");
                //    }
                //}
                //else
                //{
                //userIdApp = Request.Cookies["SesionIged"]["UserIdApp"].ToString();
                //app = Request.Cookies["SesionIged"]["App"].ToString();
                //tknApp = Request.Cookies["SesionIged"]["TknApp"].ToString();

                objSesionAplicacion.EliminarTokenAplicacion(userIdApp, app, tknApp, out param);
                // }

                if (Request.Cookies["SesionIged"] != null)
                {
                    Response.Cookies["SesionIged"].Expires = DateTime.Now.AddDays(-1);
                }

                Session.Abandon();
                ViewBag.CerrarVentana = true;
                // return View("~/Views/Encuesta/ConformacionHogar.cshtml");
                return(View("Inicio"));
            }
            catch (Exception e)
            {
                TempData["err"]       = e.Message.ToString();
                ViewBag.CerrarVentana = true;
                return(View("Inicio"));
                //return RedirectToAction("Inicio", "Reportes");
            }
        }
        public ActionResult VerificarFinSesion()
        {
            try{
                log.Info("metodo VerificarFinSesion , tiempoDuracion: ");
                List <Parametros> param = new List <Parametros>();
                SesionAplicacion  objSesionAplicacion = new SesionAplicacion();
                string            userIdApp, app, tknApp;

                userIdApp = Request.Cookies["SesionIged"]["UserIdApp"].ToString();
                app       = Request.Cookies["SesionIged"]["App"].ToString();
                tknApp    = Request.Cookies["SesionIged"]["TknApp"].ToString();
                log.Info("metodo VerificarFinSesion , tknApp: " + tknApp);
                Encuesta objSesion = new Encuesta();
                string   fecha = objSesion.obtenerFechaUltimaTRansaccion(userIdApp);
                log.Info("metodo VerificarFinSesion , fecha: " + fecha);
                if (fecha != "")
                {
                    DateTime fechUltimaTransaccion = new DateTime();
                    fechUltimaTransaccion = DateTime.Parse(fecha);
                    log.Info("metodo VerificarFinSesion , fechUltimaTransaccion: " + fechUltimaTransaccion);
                    //diferecnia entre las dos fechas
                    TimeSpan ts = DateTime.Now - fechUltimaTransaccion;
                    int      diferenciaMinutos = ts.Minutes;
                    int      valorVerificar    = int.Parse(System.Web.Configuration.WebConfigurationManager.AppSettings["Timeout"]);
                    int      diferencia        = valorVerificar - diferenciaMinutos;
                    if (diferencia < 0)
                    {
                        objSesionAplicacion.EliminarTokenAplicacion(userIdApp, app, tknApp, out param);
                        //SE ELIMINAN LAS VARIABLEA DE SESION
                        objSesion.eliminarSesionIdUsuario(userIdApp);
                        if (param.Find(x => x.Nombre == "p_Salida").Valor == "1")
                        {
                            Session.Abandon();

                            // Invalidate the Cache on the Client Side
                            Response.Cache.SetCacheability(HttpCacheability.NoCache);
                            Response.Cache.SetNoStore();
                            return(Json("cerrada", JsonRequestBehavior.AllowGet));
                        }
                    }
                }
                return(Json("abierta", JsonRequestBehavior.AllowGet));
            }
            catch (Exception ex)
            {
                log.Info("metodo VerificarFinSesion , ERROR: " + ex.ToString());
                return(Json(ex.ToString(), JsonRequestBehavior.AllowGet));
            }
        }
        public ActionResult Inicio(string u, string a, string t, string na, string p)
        {
            List <NivelAcceso> coleccionNivelAcceso = new List <NivelAcceso>();
            NivelAcceso        nivelAcceso          = new NivelAcceso();
            SesionAplicacion   objAplicacion        = new SesionAplicacion();
            List <Parametros>  param = new List <Parametros>();
            string             tokenPortal;
            List <string>      permisos = new List <string>();

            List <Token> tokens   = new List <Token>();
            Token        objToken = new Token();

            //comentar para probar
            Session["UserIdApp"]     = ViewBag.UserIdApp = u;
            Session["App"]           = ViewBag.App = a;
            Session["TknApp"]        = t;
            Session["IdNivelAcceso"] = na;
            Session["IdPortal"]      = p;
            //

            ViewBag.CerrarVentana = false;

            //-------------------------
            try
            {
                if (u != null || u != "")
                {
                    //   tokens = objToken.consultarTokenAplicacionPadre(Session["UserIdApp"].ToString(), p) ?? new List<Token>();
                    tokens = objToken.consultarTokenAplicacionPadre(u, p) ?? new List <Token>();
                }

                if (tokens.Any(x => x.idAplicacion == a)) // Verifica que ya exista un token para la aplicacion
                {
                    objToken = tokens.Find(x => x.idAplicacion == a);
                    if (t == objToken.token) // SE VALIDA SI EL TOKEN DE LA APLICACION CORRESPONDE AL TOKEN EN LA BD
                    {
                        string MAC = objAplicacion.GetMACAddress();

                        objAplicacion.getActualizarTokenAplicacion(u, a, p, t, MAC, out param);

                        if (param.Find(x => x.Nombre == "p_Salida").Valor == "1") // SE VALIDA SI SE GENERO BIEN UN NUEVO TOKEN DE APLICACION
                        {
                            // Session["TknApp"] = param.Find(x => x.Nombre == "p_TokenGenerado").Valor;
                            TempData["tk"] = param.Find(x => x.Nombre == "p_TokenGenerado").Valor;
                            tokenPortal    = tokens.Find(x => x.idAplicacion == p).token;

                            // Crea la cookie de sesion para el módulo IGED
                            var SesionIged = new HttpCookie("SesionIged");
                            SesionIged["UserIdApp"]     = u;
                            SesionIged["App"]           = a;
                            SesionIged["TknApp"]        = param.Find(x => x.Nombre == "p_TokenGenerado").Valor;
                            SesionIged["Fecha"]         = String.Format("{0:dd/MM/yyyy HH:mm:ss}", DateTime.Now);
                            SesionIged["IdNivelAcceso"] = na;
                            SesionIged["IdPortal"]      = p;


                            ViewBag.CerrarVentana = false;
                            ViewBag.Lista         = null;
                            //cargarOpciones();
                            ViewBag.BusquedaMaestro = "SI";

                            param = new List <Parametros>();
                            objAplicacion.nombresCompletosUsuario(u, out param);

                            //Session["NombresUsuario"] = param.Find(x => x.Nombre == "p_Nombres").Valor;
                            //Session["USUARIO"] = param.Find(x => x.Nombre == "p_Usuario").Valor;
                            //Session["NIVELACCESO"] = coleccionNivelAcceso;

                            SesionIged["NombresUsuario"] = param.Find(x => x.Nombre == "p_Nombres").Valor;
                            SesionIged["USUARIO"]        = param.Find(x => x.Nombre == "p_Usuario").Valor;

                            coleccionNivelAcceso = nivelAcceso.consultarNivelAcceso(u, a);
                            var serializedData = Newtonsoft.Json.JsonConvert.SerializeObject(coleccionNivelAcceso);
                            SesionIged["NIVELACCESO"] = serializedData;

                            SesionIged.Expires = DateTime.Now.AddHours(8);
                            Response.Cookies.Add(SesionIged);
                            Encuesta objSesion = new Encuesta();
                            //borrado session para el usuario
                            objSesion.eliminarSesionIdUsuario(u);
                            //CAMBIO SESIONES --insercion primera vez
                            string variables = "ID_USUARIO,PERFILES,VALIDAPERFIL,MODELO,MODELOHOGAR,VALINCLUIDO,GRUPOVICTIMA,CODHOGAR,";
                            variables = variables + "TEMASVALIDAR,CAPTERMI,TEMA,IDTEMA,FLUJO,COLLECIONPERSONAS,PREGUNTAACTUAL,LISTADEPARTAMENTOS,";
                            variables = variables + "LISTAMUNICIPIOS,OPCIONESRESPUESTA,LISTAAUTO,TEMAS,PREGUNTAINICIAL,LISTADEPARTAMENTOSDT,LISTADT,LISTAPA,SYSGUID,LISTAMU,MODELOPERSONA";
                            objSesion.insertarVariablesSesion(variables, u);
                            return(View("Inicio"));
                            // return View("~/Views/Encuesta/ConformacionHogar.cshtml");
                        }
                        else
                        {
                            TempData["inv"] = "Token de Sesión para la aplicación invalido.";
                        }
                    }
                    else
                    {
                        TempData["inv"] = "Token de Sesión para la aplicación invalido.";
                    }
                }
                else
                {
                    TempData["inv"] = "Token de Sesión para la aplicación invalido.";
                }

                //-----------
            }
            catch (Exception e)
            {
                TempData["inv"] = e.Message.ToString();
            }

            return(View("SesionInvalida"));
        }