Exemplo n.º 1
0
        public async Task <IActionResult> ObtenerUsuarios([FromQuery] ParametrosUsuarios parametrosUsuarios)
        {
            var idUsuarioActual = int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value);
            var usuarioActual   = await _repo.ObtenerUsuario(idUsuarioActual);

            parametrosUsuarios.Id = idUsuarioActual;
            if (string.IsNullOrEmpty(parametrosUsuarios.Genero))
            {
                parametrosUsuarios.Genero = usuarioActual.Genero == "Masculino" ? "Femenino" : "Masculino";
            }
            var usuarios = await _repo.ObtenerUsuarios(parametrosUsuarios);

            var usariosReturn = _mapper.Map <IEnumerable <UsuarioLista> >(usuarios);

            Response.AgregarPaginacion(usuarios.PaginaActual, usuarios.TamanoPagina, usuarios.Total, usuarios.TotalPaginas);
            return(Ok(usariosReturn));
        }
Exemplo n.º 2
0
        public async Task <ListaPagina <Usuario> > ObtenerUsuarios(ParametrosUsuarios parametosUsuario)
        {
            var usuarios = _context.Usuarios.OrderByDescending(u => u.UltimaConexion).AsQueryable();

            usuarios = usuarios.Where(u => u.Id != parametosUsuario.Id);
            usuarios = usuarios.Where(u => u.Genero == parametosUsuario.Genero);
            if (parametosUsuario.Likers)
            {
                var usuarioLikers = await obtenerUsuarioLikes(parametosUsuario.Id, parametosUsuario.Likers);

                usuarios = usuarios.Where(u => usuarioLikers.Contains(u.Id));
            }
            if (parametosUsuario.Likees)
            {
                var usuarioLikees = await obtenerUsuarioLikes(parametosUsuario.Id, parametosUsuario.Likers);

                usuarios = usuarios.Where(u => usuarioLikees.Contains(u.Id));
            }
            if (parametosUsuario.MinEdad != 18 || parametosUsuario.MaxEdad != 99)
            {
                var minDob = DateTime.Today.AddYears(-parametosUsuario.MaxEdad - 1);
                var maxDob = DateTime.Today.AddYears(-parametosUsuario.MinEdad);

                usuarios = usuarios.Where(u => u.FechaNacimiento >= minDob && u.FechaNacimiento <= maxDob);
            }

            if (!string.IsNullOrEmpty(parametosUsuario.ordenarPor))
            {
                switch (parametosUsuario.ordenarPor)
                {
                case "Creado":
                    usuarios = usuarios.OrderByDescending(u => u.Creado);
                    break;

                default:
                    usuarios = usuarios.OrderByDescending(u => u.UltimaConexion);
                    break;
                }
            }
            return(await ListaPagina <Usuario> .CrearAsync(usuarios, parametosUsuario.NumeroPaginas, parametosUsuario.TamanoPagina));
        }