// calculate which bookings we want to place public void UpdateGoalBookings() { // pick all placed + the first non-placed - skipped List <Booking> goalBookings = Bookings.Where(b => !SkippedBookingsIds.Contains(b.Id) && Assignments.Where(a => a.BookingId == b.Id).Count() != 0).ToList(); int nextUnplacedBookingId = GetUnplacedBookings().First(x => !SkippedBookingsIds.Contains(x.Id)).Id; //goalBookings.Last().Id + 1; goalBookings.Add(Bookings[nextUnplacedBookingId]); GoalBookings = goalBookings; }
public void SkipNextBooking() { List <Booking> unplacedBookings = GetUnplacedBookings(); NextUnplacedBookingId = unplacedBookings.First().Id; SkippedBookingsIds.Add(NextUnplacedBookingId); //Bookings.RemoveAt(NextUnplacedBookingId); NextUnplacedBookingId++; this.OnPropertyChanged("NextUnplacedBookingId"); this.OnPropertyChanged("Bookings"); }
public void RemovePreviousFromQueue() { List <Booking> placedBookings = Bookings.Where(b => SkippedBookingsIds.Contains(b.Id) || Assignments.Where(a => a.BookingId == b.Id).Count() > 0).ToList(); if (placedBookings.Count() > 0) { Booking lastPlaced = placedBookings.OrderBy(x => x.Id).Last(); if (SkippedBookingsIds.Contains(lastPlaced.Id)) { // just skipped? un-skip SkippedBookingsIds.Remove(lastPlaced.Id); } else { Assignments = new ObservableCollection <BookingAssignment>(Assignments.Where(x => x.BookingId != lastPlaced.Id)); this.OnPropertyChanged("Assignments"); } List <Booking> unplacedBookings = GetUnplacedBookings(); NextUnplacedBookingId = unplacedBookings.First().Id; this.OnPropertyChanged("NextUnplacedBookingId"); this.OnPropertyChanged("Bookings"); } }
public List <Booking> GetUnplacedBookings() { return(Bookings.Where(b => !SkippedBookingsIds.Contains(b.Id) && Assignments.Where(a => a.BookingId == b.Id).Count() == 0).ToList()); }