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