// GET: Relations public async Task <ActionResult> Index() { RelationShipsViewModel vm = new RelationShipsViewModel(); vm.BlackList = await _relman.GetRelations(RelationshipStatus.Blacklisted, RelationDirection.IamIssuer); vm.Friends = await _relman.GetRelations(RelationshipStatus.Accepted); vm.Pendings = await _relman.GetRelations(RelationshipStatus.Pending); return(View(vm)); }
public async Task <List <EventListItem> > ListEvents() { var relBlacklist = await _relations.GetRelations(RelationshipStatus.Blacklisted, RelationDirection.IamRecipient); var relFriends = await _relations.GetRelations(RelationshipStatus.Accepted); var blacklistedowners = relBlacklist.Select(r => r.UserId); var friendsOwners = relFriends.Select(r => r.UserId); var usr = await GetCurrentUser(); List <EventListItem> list = new List <EventListItem>(); var allevents = await _db.Events.Include(p => p.Owner).ToListAsync(); //on filtre les events: // - ceux organisés par des organisateur qui ne m'on pas blacklist // - les sorties privées dont l'organisateur est un ami // - mes propres sorties var filteredevents = allevents.Where(e => blacklistedowners.All(t => t != e.Owner.Id) && (!e.IsPrivate || friendsOwners.Any(f => f == e.Owner.Id) || e.Owner.Id == usr.Id)); foreach (var evt in filteredevents) { var parts = await _db.Participations.Include(p => p.Event).Where(f => f.Event.Id == evt.Id).CountAsync(); var display = new EventListItem { Date = evt.Date, EventId = evt.Id, MaxParticipants = evt.MaxSeats, IsPrivate = evt.IsPrivate, Time = evt.Time, Participants = parts, Title = evt.Title, Owner = evt.Owner.Pseudo, OwnerId = evt.Owner.Id }; list.Add(display); } return(list.OrderByDescending(g => g.Date).ThenByDescending(g => g.Time).ToList()); }