public async Task <IActionResult> Login(LoginViewModel args, string returnUrl)
        {
            //ViewData["ReturnUrl"] = returnUrl;

            if (!ModelState.IsValid)
            {
                return(View(args));
            }

            try
            {
                var usuario = await oUsuario.LogIn(args);

                var persona = await oUsuario.GetPersonaByPrimary(usuario.idPersona);

                if (usuario != null)
                {
                    //Guardar Session en Cookie
                    var lista  = new List <Estado>();
                    var claims = new List <Claim>()
                    {
                        new Claim("idUsuario", usuario.idUsuario.ToString()),
                        new Claim("idRol", usuario.idRol.ToString()),
                        new Claim("idPersona", persona.idPersona.ToString()),
                        new Claim("idTipoPersona", persona.idTipoPersona.ToString()),
                        new Claim(ClaimTypes.Name, $"{persona.nombrePersona} {persona.apellidoPersona}")
                    };

                    var             userIdentity = new ClaimsIdentity(claims, "login");
                    ClaimsPrincipal principal    = new ClaimsPrincipal(userIdentity);

                    await HttpContext.SignInAsync(principal);

                    return(RedirectToAction("Index", "Ticket"));
                }
            }
            catch (Exception e)
            {
                ModelState.AddModelError("", "Usuario o clave invalido!");
            }
            return(View(args));
        }