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