private void GetAuthorRecommendations() { List <Guid> authorIds = new List <Guid>(); var allBookAuthors = _bookAuthorService.AsQueryable().ToList(); List <Author> authors = new List <Author>(); List <GroupingByAuthor> groupingByAuthors = new List <GroupingByAuthor>(); foreach (var bookId in _bookIds) { var bookAuthorId = allBookAuthors.Where(x => x.BookId == bookId).First().AuthorId; var author = _authorService.AsQueryable().Where(x => x.Id == bookAuthorId).FirstOrDefault(); if (!authors.Contains(author)) { authors.Add(author); groupingByAuthors.Add( new GroupingByAuthor { Id = author.Id, AuthorName = author.FirstName + " " + author.LastName, NumOfBooks = 1 }); } else { groupingByAuthors.Where(x => x.Id == author.Id).FirstOrDefault().NumOfBooks++; } } var mostReadOrViewedAuthorId = groupingByAuthors.OrderByDescending(x => x.NumOfBooks).First().Id; var booksFromFavAuthor = _bookAuthorService .AsQueryable() .Include(x => x.Book) .Where(x => x.AuthorId == mostReadOrViewedAuthorId) .ToList(); foreach (var book in booksFromFavAuthor) { _booksFromFavAuthorUserHasNotYetRead.Add(book.Book); } foreach (var bookUserRead in _booksUserRead) { if (_booksFromFavAuthorUserHasNotYetRead.Contains(bookUserRead.Book)) { _booksFromFavAuthorUserHasNotYetRead.Remove(bookUserRead.Book); } } }
public ActionResult RandomlyGenerateBookAuthors() { var authors = _authorService.AsQueryable().ToList(); var books = _bookService.AsQueryable().ToList(); Random rnd = new Random(); for (int i = 0; i < books.Count; i++) { BookAuthor bookAuthor = new BookAuthor { AuthorId = authors[rnd.Next(0, authors.Count - 1)].Id, BookId = books[i].Id }; _bookAuthorService.AddBookAuthor(bookAuthor); } return(Ok()); }
public ActionResult <Author> Get(Guid id) { var item = _authorService.AsQueryable() .Where(x => x.Id == id) .FirstOrDefault(); if (item is null) { return(NoContent()); } return(Ok(item)); }
private BookDto MapToBookDto(Book book) { var x = book.Id.ToString().ToUpper(); Guid id = new Guid(book.Id.ToString().ToUpper()); var bookAuthors = _bookAuthorService .AsQueryable() .Where(x => x.BookId == id) .ToList(); List <AuthorDto> authors = new List <AuthorDto>(); foreach (var item in bookAuthors) { var author = _authorService .AsQueryable() .Where(x => x.Id == item.AuthorId) .FirstOrDefault(); authors.Add(MapToAuthorDto(author)); } var bookDto = new BookDto { Id = book.Id, ISBN = book.ISBN, Cover = book.Cover, Genre = book.Genre.Name, NumberOfPages = book.NumberOfPages, PublishDate = book.PublishDate, Publisher = book.Publisher.Name, Title = book.Title, Authors = authors }; return(bookDto); }