private void UpdateBookDeltas() { // clear the list and the counts BookDeltas.Clear(); if (BooksRead.Count < 1) { return; } DateTime startDate = BooksRead[0].Date; // get all the dates a book has been read (after the first quarter) Dictionary <DateTime, DateTime> bookReadDates = GetBookReadDates(startDate); // then add the delta made up of the books up to that date foreach (var date in bookReadDates.Keys.ToList()) { BooksDelta delta = new BooksDelta(date, startDate); foreach (var book in BooksRead) { if (book.Date <= date) { delta.BooksReadToDate.Add(book); } else { break; } } delta.UpdateTallies(); BookDeltas.Add(delta); } }
private void UpdateBookPerYearDeltas() { // clear the list and the counts BookPerYearDeltas.Clear(); if (BooksRead.Count < 1) { return; } DateTime startDate = BooksRead[0].Date; startDate = startDate.AddYears(1); // get all the dates a book has been read that are at least a year since the start Dictionary <DateTime, DateTime> bookReadDates = new Dictionary <DateTime, DateTime>(); foreach (var book in BooksRead) { if (startDate > book.Date) { continue; } if (!bookReadDates.ContainsKey(book.Date)) { bookReadDates.Add(book.Date, book.Date); } } // then add the delta made up of the books up to that date foreach (var date in bookReadDates.Keys.ToList()) { DateTime startYearDate = date; startYearDate = startYearDate.AddYears(-1); BooksDelta delta = new BooksDelta(date, startYearDate); foreach (var book in BooksRead) { if (book.Date < startYearDate) { continue; } if (book.Date <= date) { delta.BooksReadToDate.Add(book); } else { break; } } delta.UpdateTallies(); BookPerYearDeltas.Add(delta); } }