Exemple #1
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));
        }
Exemple #2
0
        public async Task <ListaPagina <Mensajes> > ObtenerMensajesPorUsuario(MensajeParams mensajeParams)
        {
            var mensajes = _context.Mensajes.AsQueryable();

            switch (mensajeParams.TipoContenido)
            {
            case "Inbox":
                mensajes = mensajes.Where(u => u.RemitenteId == mensajeParams.UsuarioId && u.RemitenteElimina == false);
                break;

            case "Outbox":
                mensajes = mensajes.Where(u => u.DestinatarioId == mensajeParams.UsuarioId && u.DestinatarioElimina == false);
                break;

            default:
                mensajes = mensajes.Where(u => u.RemitenteId == mensajeParams.UsuarioId && u.RemitenteElimina == false && u.EstaLeido == false);
                break;
            }
            mensajes = mensajes.OrderByDescending(m => m.FechaEnvio);

            return(await ListaPagina <Mensajes> .CrearAsync(mensajes, mensajeParams.NumeroPaginas, mensajeParams.TamanoPagina));
        }