private void ConnectToBooksDatabase() { _booksDatabase = _client.GetDatabase("books_read"); IMongoCollection <BookRead> booksRead = _booksDatabase.GetCollection <BookRead>("books"); // this is a dummy query to get everything to date... var filter = Builders <BookRead> .Filter.Lte( new StringFieldDefinition <BookRead, BsonDateTime>("date"), new BsonDateTime(DateTime.Now)); long totalCount = booksRead.Count(filter); if (totalCount == 0 && BooksRead.Count != 0) { booksRead.InsertMany(BooksRead); totalCount = booksRead.Count(filter); } else if (totalCount != 0 && BooksRead.Count == 0) { BooksRead.Clear(); using (var cursor = booksRead.FindSync(filter)) { var booksList = cursor.ToList(); foreach (var book in booksList) { BooksRead.Add(book); } } UpdateCollections(); DataFromFile = false; DataFromDb = true; } }
public BooksRead UpdateBooksRead(BooksRead existing, BooksRead bookRead) { _repositoryWrapper.BooksRead.UpdateBooksRead(existing, bookRead); // _logger.WriteInfo($"Updated user with id: {user.Id}."); return(bookRead); }
public BooksRead AddBooksRead(BooksRead bookRead) { _repositoryWrapper.BooksRead.AddBooksRead(bookRead); //_logger.WriteInfo($"Added user with id: {user.Id}."); return(bookRead); }
public void Setup(IList <BookRead> books, IGeographyProvider geographyProvider) { _geographyProvider = geographyProvider; BooksRead.Clear(); foreach (BookRead book in books.OrderBy(x => x.Date)) { BooksRead.Add(book); } UpdateBookDeltas(); UpdateBookPerYearDeltas(); UpdateAuthors(); UpdateWorldCountryLookup(); int booksReadWorldwide; uint pagesReadWorldwide; UpdateCountries(out booksReadWorldwide, out pagesReadWorldwide); UpdateLanguages(booksReadWorldwide, pagesReadWorldwide); BookLocationDeltas = new ObservableCollection <BookLocationDelta>(); UpdateBookLocationDeltas(); UpdateBooksPerMonth(); UpdateBookTags(); UpdateTalliedBooks(); SelectedMonthTally = TalliedMonths.FirstOrDefault(); _selectedMonth = DateTime.Now; if (SelectedMonthTally != null) { _selectedMonth = SelectedMonthTally.MonthDate; } }
public void RemoveBookRead(Book book) { if (BooksRead !.Any(b => b.Id == book.Id)) { BooksRead.Remove(book); CreateOrUpdateUpdateEvent("Books"); } }
public void AddBookRead(Book book) { if (!(BooksRead !.Any(b => b.Id == book.Id))) { BooksRead.Add(book); CreateOrUpdateUpdateEvent("Books"); var newBookReadEvent = new MemberAddedBookReadEvent(this, book); Events.Add(newBookReadEvent); } }
public IActionResult PostReadBookAndRate([FromBody] BooksRead booksRead) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } _db.Add(booksRead); _db.SaveChanges(); return(CreatedAtAction("Get", new { id = booksRead.Id }, booksRead)); }
public void ReadBooksFromFile(string filename) { using (var sr = new StreamReader(filename, Encoding.Default)) { var csv = new CsvReader(sr); BooksRead.Clear(); // Date,DD/MM/YYYY,Author,Title,Pages,Note,Nationality,Original Language,Book,Comic,Audio while (csv.Read()) { var stringFieldDate = csv.GetField <string>(0); var stringFieldDDMMYYYY = csv.GetField <string>(1); var stringFieldAuthor = csv.GetField <string>(2); var stringFieldTitle = csv.GetField <string>(3); var stringFieldPages = csv.GetField <string>(4); var stringFieldNote = csv.GetField <string>(5); var stringFieldNationality = csv.GetField <string>(6); var stringFieldOriginalLanguage = csv.GetField <string>(7); var stringFieldBook = csv.GetField <string>(8); var stringFieldComic = csv.GetField <string>(9); var stringFieldAudio = csv.GetField <string>(10); DateTime dateForBook; if (DateTime.TryParseExact(stringFieldDDMMYYYY, "d/M/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out dateForBook)) { UInt16 pages = 0; UInt16.TryParse(stringFieldPages, out pages); BookRead book = new BookRead() { DateString = stringFieldDate, Date = dateForBook, Author = stringFieldAuthor, Title = stringFieldTitle, Pages = pages, Note = stringFieldNote, Nationality = stringFieldNationality, OriginalLanguage = stringFieldOriginalLanguage, Audio = stringFieldAudio, Book = stringFieldBook, Comic = stringFieldComic, }; BooksRead.Add(book); } } } UpdateCollections(); Properties.Settings.Default.InputFile = filename; Properties.Settings.Default.Save(); DataFromFile = true; }
// GET: WishList/Details/5 public ActionResult Details(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } BooksRead wishList = db.BooksReads.Find(id); if (wishList == null) { return(HttpNotFound()); } return(View(wishList)); }
public ActionResult Create([Bind(Include = "WishListID,Name,Author,Genre, DateEntered")] DisplayWishList displayWishList) { var us = User.Identity.Name; var user = db.Users.FirstOrDefault(x => x.Email == us); if (ModelState.IsValid) { var addBook = (from a in db.BooksReads where a.BookReadName == displayWishList.Name select a); if (addBook.Count() == 0) { var newBook = new BooksRead(); newBook.BookReadName = displayWishList.Name; newBook.BookReadGenre = displayWishList.Genre; newBook.BookReadAuthor = displayWishList.Author; db.BooksReads.Add(newBook); db.SaveChanges(); var newWL = new WishList(); newWL.BookDateEntered = displayWishList.DateEntered; newWL.BookReadID = newBook.BookReadID; newWL.Id = user.Id; db.WishLists.Add(newWL); db.SaveChanges(); } else { var newWL = new WishList(); newWL.BookDateEntered = displayWishList.DateEntered; newWL.BookReadID = addBook.First().BookReadID; newWL.Id = user.Id; db.WishLists.Add(newWL); db.SaveChanges(); } return(RedirectToAction("Index")); } return(View(displayWishList)); }
private void UpdateBooksPerMonth() { // clear the list and the counts Dictionary <DateTime, List <BookRead> > bookMonths = new Dictionary <DateTime, List <BookRead> >(); if (BooksRead.Count < 1) { return; } DateTime startDate = BooksRead[0].Date; DateTime endDate = BooksRead.Last().Date; endDate = new DateTime(endDate.Year, endDate.Month, endDate.Day, 23, 59, 59); DateTime monthStart = new DateTime(startDate.Year, startDate.Month, 1); DateTime monthEnd = monthStart.AddMonths(1).AddSeconds(-1); // get all the months a book has been read while (monthStart <= endDate) { List <BookRead> monthList = new List <BookRead>(); foreach (BookRead book in BooksRead) { if (book.Date >= monthStart && book.Date <= monthEnd) { monthList.Add(book); } } if (monthList.Count > 0) { bookMonths.Add(monthStart, monthList); } monthStart = monthStart.AddMonths(1); monthEnd = monthStart.AddMonths(1).AddSeconds(-1); } TalliedMonths.Clear(); foreach (DateTime date in bookMonths.Keys.OrderBy(x => x)) { TalliedMonths.Add(new TalliedMonth(date, bookMonths[date])); } }
public ActionResult Post([FromBody] BooksReadRequest request) { var response = new BooksReadResponse(); if (request is null) { return(BadRequest()); } foreach (var bookId in request.BookIds) { var exists = _booksReadService .AsQueryable() .Any(x => x.BookId == bookId && x.UserId == request.UserId); if (exists) { return(BadRequest("User already read that book!")); } var newBookRead = new BooksRead { BookId = bookId, UserId = (Guid)request.UserId }; var item = _booksReadService.AddBooksRead(newBookRead); var lvl = _levelingService.AddExperience(request.UserId, Activity.ReadBook); if (lvl > 0) { response.LevelupResponse = new LevelupResponse { NewLevel = lvl }; } response.BooksRead.Add(item); } response.Achievements = AwardAchievements((Guid)request.UserId); return(Ok(response)); }
public ActionResult Put([FromBody] BooksRead changedItem) { if (changedItem is null) { return(BadRequest()); } var existingItem = _booksReadService.AsQueryable() .Where(x => x.Id == changedItem.Id) .FirstOrDefault(); if (existingItem is null) { return(NotFound()); } var item = _booksReadService.UpdateBooksRead(existingItem, changedItem); return(Ok(item)); }
public ActionResult AddReadBooks(BRViewModel brViewModel) { // Test if dropdown selector is empty and returns to Readers Book list if (brViewModel.Books == null) { return(RedirectToAction("ReadersBookList", new { Id = brViewModel.Readers.ReaderId.Value })); } using (var booksListContext = new BooksListContext()) { var bookRead = new BooksRead { ReaderId = brViewModel.Readers.ReaderId.Value, BookId = brViewModel.Books.BookId.Value }; booksListContext.BooksRead.Add(bookRead); booksListContext.SaveChanges(); } return(RedirectToAction("ReadersBookList", new { Id = brViewModel.Readers.ReaderId.Value })); }
public bool AddNewBook(BookRead newBook, out string errorMsg) { errorMsg = ""; // for the moment insist only that the date is after the last of the existing items if (BooksRead.Last().Date > newBook.Date) { errorMsg = "Date must be after last date : " + BooksRead.Last().DateString; return(false); } BooksRead.Add(newBook); if (DataFromDb) { AddNewBookToDatabase(newBook); } UpdateCollections(); return(true); }
public void RemoveBooksRead(BooksRead bookRead) { _repositoryWrapper.BooksRead.RemoveBooksRead(bookRead); // _logger.WriteInfo($"Removed user with id: {user.Id}."); }