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));
        }
        public async Task <IActionResult> Create()
        {
            var     model = new UsuarioCompletoViewModel();
            Usuario user  = await oPersona.GetByPrimary(Convert.ToInt32(User.FindFirstValue("idUsuario")));

            Persona persona = await oPersona.GetPersonaByPrimary(Convert.ToInt32(User.FindFirstValue("idPersona")));


            var modelC = new PersonaCompletaViewModel()
            {
                idTipoPersona     = persona.idTipoPersona,
                idPersona         = persona.idPersona,
                nombrePersona     = persona.nombrePersona,
                apellidoPersona   = persona.apellidoPersona,
                direccionPersona  = persona.direccionPersona,
                telefono          = persona.telefono,
                correo            = persona.correo,
                cedulaPersona     = persona.cedulaPersona,
                fechaNacimiento   = persona.fechaNacimiento,
                stringTipoPersona = _db.TipoPersona.SingleOrDefault(y => y.idTipoPersona == persona.idTipoPersona).nombreTipoPersona
            };

            if (_db.TipoPersona.SingleOrDefault(s => s.idTipoPersona == persona.idTipoPersona).nombreTipoPersona == "Estudiante")
            {
                modelC.estudiante = _db.Estudiantes.SingleOrDefault(x => x.idPersona == persona.idPersona);
            }
            else
            {
                modelC.profesor = _db.Profesores.SingleOrDefault(x => x.idPersona == persona.idPersona);
            }

            model.idUsuario     = user.idUsuario;
            model.idPersona     = user.idPersona;
            model.idRol         = user.idRol;
            model.nombreUsuario = user.nombreUsuario;
            model.persona       = modelC;

            return(View(model));
        }