public IHttpActionResult GetBooksForAuthorById(int id) { var context = new BookShopContext(); var author = context.Authors .Select(a => new { a.Id, Books = a.Books.Select(b => new { b.Title, Author = b.Author.FirstName + " " + b.Author.LastName, b.AgeRestriction, b.Copies, b.EditionType, b.Decription, b.Price, b.ReleaseDate, Categories = b.Categories.Select(c => c.Name) }) }) .FirstOrDefault(a => a.Id == id); if (author == null) { return this.NotFound(); } return this.Ok(author); }
static void Main(string[] args) { var context = new BookShopContext(); var bookCount = context.Books.Count(); //Console.WriteLine(bookCount); var booksAfter2000 = context.Books .Where(b => b.ReleaseDate >= new DateTime(2000, 1, 1)) .Select(b => b.Title) .ToList(); //booksAfter2000.ForEach(Console.WriteLine); var authors = context.Authors .Where(a => a.Books.Any(b => b.ReleaseDate <= new DateTime(1990, 1, 1))) .Select(a => new { a.FirstName, a.LastName }) .ToList(); //authors.ForEach(a => Console.WriteLine("{0} {1}", a.FirstName, a.LastName)); var georgeBooks = context.Books .Where(b => b.Author.FirstName + " " + b.Author.LastName == "George Powell") .OrderByDescending(b => b.ReleaseDate) .ThenBy(b => b.Title) .Select(b => new { b.Title, b.ReleaseDate, b.Copies }) .ToList(); //georgeBooks.ForEach(b => Console.WriteLine("{0} {1:dd-MM-yyyy} {2}", b.Title, b.ReleaseDate, b.Copies)); }
public IHttpActionResult GetAuthorById(int id) { var context = new BookShopContext(); var author = context.Authors .Select(a => new { a.Id, a.FirstName, a.LastName, BookTitles = a.Books.Select(b => b.Title) }) .FirstOrDefault(a => a.Id == id); if (author == null) { return this.NotFound(); } var authorView = new AuthorViewModel.AuthorBooksViewModel() { FirstName = author.FirstName, LastName = author.FirstName, BookTitles = author.BookTitles }; return this.Ok(authorView); }
private static void GetAllBooksAfterYear(BookShopContext context, int year) { var books = context.Books .Where(b => b.ReleaseDate != null && b.ReleaseDate.Value.Year >= year) .OrderBy(b => b.Title) .Select(b => b.Title); Console.WriteLine("{0}\nTask 1:\n{0}", Separator); books.ToList().ForEach(Console.WriteLine); }
public static void Main() { var context = new BookShopContext(); var bookCount = context.Books.Count(); GetAllBooksAfterYear(context, 2000); GetAuthorsWithAtLeastOneBookBefore(context, 1990); GetAuthorsOrderedByBooksCount(context); GetAllBooksByAuthor(context, "George", "Powell"); GetMostRecentBooksByCategories(context); RelatedBooks(context); }
private static void GetAuthorsOrderedByBooksCount(BookShopContext context) { var authors = context.Authors .OrderByDescending(a => a.Books.Count) .Select(a => new { a.FirstName, a.LastName, booksCount = a.Books.Count }); Console.WriteLine("\nTask 3:\n{0}", Separator); authors.ToList().ForEach(a => { Console.WriteLine("{0} {1} - {2} book/s", a.FirstName, a.LastName, a.booksCount); }); }
public IHttpActionResult DeleteBookById(int id) { var context = new BookShopContext(); var book = context.Books.FirstOrDefault(b => b.Id == id); if (book == null) { return this.NotFound(); } context.Books.Remove(book); context.SaveChanges(); return this.Ok(); }
private static void GetAuthorsWithAtLeastOneBookBefore(BookShopContext context, int year) { var authors = context.Authors .Where(a => a.Books.Any(b => b.ReleaseDate != null && b.ReleaseDate.Value.Year < year)) .OrderBy(a => a.FirstName) .ThenBy(a => a.LastName) .Select(a => new { a.FirstName, a.LastName }); Console.WriteLine("\nTask 2:\n{0}", Separator); authors.ToList().ForEach(a => { Console.WriteLine("{0} {1}", a.FirstName, a.LastName); }); }
public IHttpActionResult DeleteCategoriesById(int id) { var context = new BookShopContext(); var category = context.Categories .FirstOrDefault(c => c.Id == id); if (category == null) { return this.NotFound(); } context.Categories.Remove(category); context.SaveChanges(); return this.Ok(); }
public IHttpActionResult GetCategoriesById(int id) { var context = new BookShopContext(); var category = context.Categories .Select(c => new { c.Id, c.Name }) .FirstOrDefault(c => c.Id == id); if (category == null) { return this.NotFound(); } var viewModel = new CategoryViewModel() { Name = category.Name }; return this.Ok(viewModel); }
public IHttpActionResult GetCategories() { var context = new BookShopContext(); var categories = context.Categories .Select(c => new { c.Id, c.Name }) .ToList(); if (!categories.Any()) { return this.NotFound(); } var viewModels = new List<CategoryViewModel>(); categories.ForEach(c => viewModels.Add(new CategoryViewModel() { Name = c.Name })); return this.Ok(viewModels); }
private static void GetAllBooksByAuthor(BookShopContext context, string firstName, string lastName) { var books = context.Books .Where(b => b.Author.FirstName == firstName && b.Author.LastName == lastName) .OrderByDescending(b => b.ReleaseDate) .ThenBy(b => b.Title) .Select(b => new { b.Title, b.ReleaseDate, b.Copies }); Console.WriteLine("\nTask 4:\n{0}", Separator); books.ToList().ForEach(b => { Console.WriteLine("{0} : {1} - {2} copy/s", b.Title, b.ReleaseDate != null ? b.ReleaseDate.Value.ToString("dd-MMM-yyyy", CultureInfo.InvariantCulture) : "no release date", b.Copies); }); }
public IHttpActionResult GetBookBySearchWord([FromUri] BookSearchBindingModel searchWord) { if (!this.ModelState.IsValid) { return this.BadRequest("Invalid search parameters"); } var context = new BookShopContext(); var books = context.Books .Where(b => b.Title.Contains(searchWord.Search) || b.Decription.Contains(searchWord.Search) || b.EditionType.ToString() == searchWord.Search || b.Categories.Select(c => c.Name).Any(c => c == searchWord.Search) || b.Author.FirstName == searchWord.Search || b.Author.LastName == searchWord.Search) .Select(b => new { b.Id, b.Title, Author = b.Author.FirstName + " " + b.Author.LastName, b.AgeRestriction, b.Copies, b.EditionType, b.Decription, b.Price, b.ReleaseDate, Categories = b.Categories.Select(c => c.Name) }) .Take(10) .ToList(); if (!books.Any()) { return this.NotFound(); } return this.Ok(books); }
public SessionAuthorizeAttribute(BookShopContext data) { this.Data = data; }
/// <summary> /// Task10: Get Count of books where title length greater than check value. /// </summary> /// <param name="context"></param> /// <param name="lengthCheck"></param> /// <returns></returns> public static int CountBooks(BookShopContext context, int lengthCheck) { return(context.Books.Count(x => x.Title.Length > lengthCheck)); }
public ProfitByCategoryCommand(BookShopContext context) { this.context = context; }
private static void MostRecentBooks(BookShopContext context) { var mostRecentBook = context.Categories .Where(c => c.Books.Count() != 0); }
public AdminBookRepository(BookShopContext context, IBookRepository bookRepository) { this.context = context; this.bookRepository = bookRepository; }
static void Main(string[] args) { var context = new BookShopContext(); var count = context.Books.Count(); }
public NotReleasedInCommand(BookShopContext context) { this.context = context; }
private static void PrintBookTitlesAndPricesWithPriceLowerThan5AndHigherThan40(BookShopContext context) { var bookTitlesAndPrices = context.Books.Where(book => book.Price < 5 || book.Price > 40).Select(book => new { book.Title, book.Price }); foreach (var bookTitlesAndPrice in bookTitlesAndPrices) { Console.WriteLine($"{bookTitlesAndPrice.Title} - {bookTitlesAndPrice.Price}"); } }
private static void PrintBookTitlesOfGoldenEditionBooksWithLessThan5000Copies(BookShopContext context) { var titles = context.Books.Where(book => book.EditionType == EditionType.Gold && book.Copies < 5000).Select(book => book.Title); foreach (string title in titles) { Console.WriteLine(title); } }
public static string ImportAuthors(BookShopContext context, string jsonString) { var authorsDto = JsonConvert.DeserializeObject <ImportAuthorstDto[]>(jsonString); var sb = new StringBuilder(); List <Author> authorsList = new List <Author>(); // list of booknumbers List <Book> bookList = new List <Book>(); foreach (var a in authorsDto) { if (a.Books == null) { continue; } if (IsValid(a)) // valid checks { var mailToCheck = a.Email; // get the mail if (context.Authors.Any(b => b.Email == mailToCheck)) // If an email exists, do not import the author { sb.AppendLine(ErrorMessage); } else { Author newAuthor = new Author() { FirstName = a.FirstName, LastName = a.LastName, Phone = a.Phone, Email = a.Email, }; foreach (var b in a.Books) // b is DTO { if (b.Id == null) { continue; } var bookId = int.Parse(b.Id); if (context.Books.Any(e => e.Id == bookId)) // DB has such book { var book = context.Books.Where(g => g.Id == bookId).First(); // take the book bookList.Add(book); ///???? context.Authors.Add(newAuthor); AuthorBook newEntry = new AuthorBook() { BookId = book.Id, AuthorId = newAuthor.Id }; newAuthor.AuthorsBooks.Add(newEntry); } //var fullname = newAuthor.FirstName + " " + newAuthor.LastName; //sb.AppendLine(string.Format(SuccessfullyImportedAuthor, fullname, newAuthor.AuthorsBooks.Count)); // feed the newAuthor with the book } if (bookList.Count < 1) // booksList.count>0 { sb.AppendLine(ErrorMessage); continue; } var fullname = newAuthor.FirstName + " " + newAuthor.LastName; sb.AppendLine(string.Format(SuccessfullyImportedAuthor, fullname, newAuthor.AuthorsBooks.Count)); } } else //invalid first name, last name, email or phone { sb.AppendLine(ErrorMessage); } } context.SaveChanges(); var result = sb.ToString().TrimEnd(); return(result); }
public static string ImportBooks(BookShopContext context, string xmlString) { var xmlSerializer = new XmlSerializer(typeof(BookImportDto[]), new XmlRootAttribute("Books")); using (var reader = new StringReader(xmlString)) { BookImportDto[] bookDtos = (BookImportDto[])xmlSerializer.Deserialize(reader); StringBuilder sb = new StringBuilder(); // list List <Book> books = new List <Book>(); // foreach ... // is valid ... sb message foreach (var b in bookDtos) { if (IsValid(b)) { // check date ????!!!!! var testGenre = (Genre)b.Genre; // test the genre var testdate = DateTime.ParseExact(b.PublishedOn, "MM/dd/yyyy", CultureInfo.InvariantCulture); if (b.Pages < 50 || b.Pages > 5000) { sb.AppendLine(ErrorMessage); } else if (!IsValid(testdate)) //?? { sb.AppendLine(ErrorMessage); } else if (b.Genre == 1 || b.Genre == 2 || b.Genre == 3) // valid { Book newBook = new Book() { Name = b.Name, Genre = (Genre)b.Genre, Price = b.Price, Pages = b.Pages, PublishedOn = DateTime.ParseExact (b.PublishedOn, "MM/dd/yyyy", CultureInfo.InvariantCulture) //?? }; books.Add(newBook); sb.AppendLine(String.Format(SuccessfullyImportedBook, newBook.Name, newBook.Price)); } else if (b.Genre != 1 && b.Genre != 2 && b.Genre != 3) { sb.AppendLine(ErrorMessage); } } else { sb.AppendLine(ErrorMessage); } } context.Books.AddRange(books); context.SaveChanges(); var result = sb.ToString().TrimEnd(); return(result); } }
public CategoriesController() { this.context = new BookShopContext(); }
public static string ImportAuthors(BookShopContext context, string jsonString) { StringBuilder sb = new StringBuilder(); List <Author> authorsToAdd = new List <Author>(); AuthorImportJsonModel[] authors = JsonConvert.DeserializeObject <AuthorImportJsonModel[]>(jsonString); foreach (var currAuthor in authors) { if (!IsValid(currAuthor)) { sb.AppendLine(ErrorMessage); continue; } if (context.Authors.Any(a => a.Email == currAuthor.Email)) { sb.AppendLine(ErrorMessage); continue; } Author author = new Author { FirstName = currAuthor.FirstName, LastName = currAuthor.LastName, Phone = currAuthor.Phone, Email = currAuthor.Email }; foreach (var currBook in currAuthor.Books) { if (!currBook.BookId.HasValue) { continue; } Book book = context.Books.FirstOrDefault(x => x.Id == currBook.BookId); if (book == null) { continue; } author.AuthorsBooks.Add(new AuthorBook() { Author = author, Book = book }); } if (author.AuthorsBooks.Count == 0) { sb.AppendLine(ErrorMessage); continue; } authorsToAdd.Add(author); sb.AppendLine(string.Format(SuccessfullyImportedAuthor, author.FirstName + " " + author.LastName, author.AuthorsBooks.Count)); } context.Authors.AddRange(authorsToAdd); context.SaveChanges(); return(sb.ToString().TrimEnd()); }
//Problem 10 public static int CountBooks(BookShopContext context, int lengthCheck) => context.Books.Where(book => book.Title.Length > lengthCheck).Count();
public IHttpActionResult PostCategory([FromBody] CategoryBindingModel model) { if (!this.ModelState.IsValid) { return this.BadRequest(this.ModelState); } var context = new BookShopContext(); var duplicate = context.Categories .FirstOrDefault(c => c.Name == model.Name); if (duplicate != null) { var message = string.Format("Category with {0} name already exist!", model.Name); return this.BadRequest(message); } var category = new Category { Name = model.Name }; context.Categories.Add(category); context.SaveChanges(); var viewModel = new CategoryViewModel() { Name = category.Name }; return this.Ok(viewModel); }
public static int CountBooks(BookShopContext context, int lengthCheck) { var books = context.Books.Where(x => x.Title.Length > lengthCheck).ToArray(); return(books.Length); }
public IHttpActionResult PostAuthor([FromBody] AuthorBindingMethod model) { if (!this.ModelState.IsValid) { return this.BadRequest(this.ModelState); } var author = new Author() { FirstName = model.FirstName, LastName = model.LastName }; var context = new BookShopContext(); context.Authors.Add(author); context.SaveChanges(); var authorView = new AuthorViewModel.AuthorInfoViewModel() { FirstName = author.FirstName, LastName = author.LastName }; return this.Ok(authorView); }
static void Main(string[] args) { using BookShopContext context = new BookShopContext(); //DbInitializer.ResetDatabase(context); Console.WriteLine(GetMostRecentBooks(context)); }
public static string ImportAuthors(BookShopContext context, string jsonString) { var authorsDto = JsonConvert.DeserializeObject <ImportAuthorsDto[]>(jsonString); var sb = new StringBuilder(); var authors = new List <Author>(); var authorsBooks = new List <AuthorBook>(); foreach (var authorDto in authorsDto) { //as invalid first name, last name, email or phone), do not import var email = authors.FirstOrDefault(author1 => author1.Email == authorDto.Email); if (!IsValid(authorDto) || email != null) { sb.AppendLine(ErrorMessage); continue; } Author author = new Author { FirstName = authorDto.FirstName, LastName = authorDto.LastName, Email = authorDto.Email, Phone = authorDto.Phone }; var tempAuthorsBooks = new List <AuthorBook>(); foreach (var bookDto in authorDto.Books) { if (bookDto.Id == null) { continue; } var tempBook = context.Books.Find(bookDto.Id); if (tempBook == null) { continue; } var authorBook = new AuthorBook { Author = author, Book = tempBook }; tempAuthorsBooks.Add(authorBook); } if (tempAuthorsBooks.Count == 0) { sb.AppendLine(ErrorMessage); continue; } authors.Add(author); authorsBooks.AddRange(tempAuthorsBooks); sb.AppendLine(String.Format(SuccessfullyImportedAuthor, author.FirstName + " " + author.LastName, tempAuthorsBooks.Count.ToString())); } context.Authors.AddRange(authors); context.AuthorsBooks.AddRange(authorsBooks); context.SaveChanges(); return(sb.ToString().TrimEnd()); }
public static string GetGoldenBooks(BookShopContext context) { var books = context.Books.Where(x => (int)x.EditionType == 2 && x.Copies < 5000).OrderBy(x => x.BookId).Select(x => x.Title).ToList(); return(string.Join(Environment.NewLine, books)); }
public static int CountBooks(BookShopContext context, int lengthCheck) { return context.Books.Where(b => b.Title.Length > lengthCheck).Count(); }
public static void Main() { using var db = new BookShopContext(); //DbInitializer.ResetDatabase(db); Console.WriteLine(RemoveBooks(db)); }
public HomeController(BookShopContext context) { _context = context; }
public static string ImportAuthors(BookShopContext context, string jsonString) { var authorsDtos = JsonConvert.DeserializeObject <ImportAuthorDto[]>(jsonString); var sb = new StringBuilder(); foreach (var authorDto in authorsDtos) { if (IsValid(authorDto)) { if (context.Authors.Any(a => a.Email == authorDto.Email)) { sb.AppendLine(ErrorMessage); continue; } var author = new Author { FirstName = authorDto.FirstName, LastName = authorDto.LastName, Phone = authorDto.Phone, Email = authorDto.Email }; foreach (var book in authorDto.Books) { if (book.Id == null) { continue; } if (context.Books.Any(b => b.Id == int.Parse(book.Id))) { var bookToAdd = new AuthorBook { BookId = int.Parse(book.Id) }; author.AuthorsBooks.Add(bookToAdd); } else { continue; } } if (author.AuthorsBooks.Count == 0) { sb.AppendLine(ErrorMessage); continue; } context.Authors.Add(author); sb.AppendLine(String.Format(SuccessfullyImportedAuthor, (author.FirstName + " " + author.LastName), author.AuthorsBooks.Count)); context.SaveChanges(); } else { sb.AppendLine(ErrorMessage); } } return(sb.ToString().Trim()); }
public static string ImportAuthors(BookShopContext context, string jsonString) { StringBuilder sb = new StringBuilder(); List <ImportAuthorDto> authorDtos = JsonConvert.DeserializeObject <List <ImportAuthorDto> >(jsonString); List <Author> authors = new List <Author>(); foreach (ImportAuthorDto authorDto in authorDtos) { if (!IsValid(authorDto)) { sb .AppendLine(ErrorMessage); continue; } if (authors.Any(x => x.Email == authorDto.Email)) { sb.AppendLine(ErrorMessage); continue; } Author author = new Author() { FirstName = authorDto.FirstName, LastName = authorDto.LastName, Phone = authorDto.Phone, Email = authorDto.Email, }; foreach (ImportAuthorBooksDto booksDto in authorDto.Books) { if (!booksDto.BooksId.HasValue) { continue; } Book book = context .Books .FirstOrDefault(b => b.Id == booksDto.BooksId); if (book == null) { continue; } author.AuthorsBooks.Add(new AuthorBook { Author = author, Book = book }); } if (author.AuthorsBooks.Count == 0) { sb.AppendLine(ErrorMessage); continue; } authors.Add(author); sb.AppendLine(string.Format(SuccessfullyImportedAuthor, (author.FirstName + " " + author.LastName), author.AuthorsBooks.Count)); } context.Authors.AddRange(authors); context.SaveChanges(); return(sb.ToString().TrimEnd()); }
public TranslatorsController(BookShopContext context) { _context = context; }
public static string ImportAuthors(BookShopContext context, string jsonString) { var sb = new StringBuilder(); var authorsDTOs = JsonConvert.DeserializeObject <AuthorDTO[]>(jsonString); var authors = new List <Author>(); foreach (var authorDTO in authorsDTOs) { if (!IsValid(authorDTO)) { sb.AppendLine(ErrorMessage); continue; } if (authors.Any(a => a.Email == authorDTO.Email)) { sb.AppendLine(ErrorMessage); continue; } var author = new Author() { FirstName = authorDTO.FirstName, LastName = authorDTO.LastName, Email = authorDTO.Email, Phone = authorDTO.Phone, }; foreach (var bookDTO in authorDTO.Books) { if (!bookDTO.BookId.HasValue) { continue; } var book = context.Books.FirstOrDefault(b => b.Id == bookDTO.BookId); if (book == null) { continue; } author.AuthorsBooks.Add(new AuthorBook { Author = author, Book = book, }); } if (author.AuthorsBooks.Count == 0) { sb.AppendLine(ErrorMessage); continue; } authors.Add(author); sb.AppendLine(string.Format(SuccessfullyImportedAuthor, (author.FirstName + ' ' + author.LastName), author.AuthorsBooks.Count)); } context.Authors.AddRange(authors); context.SaveChanges(); return(sb.ToString().TrimEnd()); }
public IHttpActionResult PutBuyBook(int id) { var context = new BookShopContext(); var book = context.Books.FirstOrDefault(b => b.Id == id); if (book == null) { return this.NotFound(); } if (book.Copies <= 0) { return this.BadRequest("No copies left"); } book.Copies--; var purchase = new Purchase() { Book = book, ApplicationUser = context.Users.FirstOrDefault(u => u.UserName == this.User.Identity.Name), Price = book.Price, DateOfPurchase = DateTime.Now, IsRecalled = false }; context.Purchases.Add(purchase); context.SaveChanges(); var purchaseView = new PurchaseViewModel() { BookName = book.Title, Price = book.Price, User = purchase.ApplicationUser.UserName }; return this.Ok(purchaseView); }
public UsersController() { this.context = new BookShopContext(); }
private static void RelatedBooks(BookShopContext context) { var books = context.Books .Take(3) .ToList(); books[0].RelatedBooks.Add(books[1]); books[1].RelatedBooks.Add(books[0]); books[0].RelatedBooks.Add(books[2]); books[2].RelatedBooks.Add(books[0]); context.SaveChanges(); var booksFromQuery = context.Books .Take(3) .Select(b => new { b.Title, RelatedBooks = b.RelatedBooks.Select(rb => rb.Title) }); Console.WriteLine(Separator); foreach (var book in booksFromQuery) { Console.WriteLine("--{0}", book.Title); foreach (var relatedBook in book.RelatedBooks) { Console.WriteLine(relatedBook); } } Console.WriteLine(Separator); }
public static void Main() { var context = new BookShopContext(); var booksReleaseDate = context.Books.Where(b => b.ReleaseDate.Value.Year > 2000).Select(b => b.Title); context.SaveChanges(); //foreach (string book in booksReleaseDate) //{ // Console.WriteLine(book); //} var authors = context.Authors .Where(a => a.Books.Any(b => b.ReleaseDate.Value.Year < 1990)).Select(a => new { a.FirstName, a.LastName }); //foreach (var author in authors) //{ // Console.WriteLine("{0} {1}",author.FirstName,author.LastName); //} var authorsBookCount = context.Authors .OrderByDescending(a => a.Books.Count) .Select(a => new { a.FirstName, a.LastName, BookCount = a.Books.Count }); //foreach (var author in authorsBookCount) //{ // Console.WriteLine("{0} {1} - Books: {2}", author.FirstName, author.LastName, author.BookCount); //} var booksGeorge = context.Books .Where(b => b.Author.FirstName == "George" && b.Author.LastName == "Powell") .OrderByDescending(b => b.ReleaseDate) .ThenBy(b => b.Title) .Select(b => new { b.Title, b.ReleaseDate, b.Copies }); //foreach (var book in booksGeorge) //{ // Console.WriteLine("{0}, released on: {1} - Copies: {2}", book.Title, book.ReleaseDate.Value.ToString("d"), book.Copies); //} var booksByCategory = context.Categories.OrderByDescending(c => c.Books.Count).Select(c => new { c.Name, BookCount = c.Books.Count, Books = c.Books.OrderByDescending(b => b.ReleaseDate).ThenBy(b => b.Title).Select(b => new { b.Title, b.ReleaseDate }).Take(3) }); //foreach (var categoy in booksByCategory) //{ // Console.WriteLine("--{0}: {1} books{2}{3}", // categoy.Name, categoy.BookCount, // Environment.NewLine, // string.Join(Environment.NewLine, categoy.Books.Select(b => string.Format("{0} ({1})", b.Title, b.ReleaseDate.Value.Year)))); //} //var books = context.Books //.Take(3) //.ToList(); //books[0].RelatedBooks.Add(books[1]); //books[1].RelatedBooks.Add(books[0]); //books[0].RelatedBooks.Add(books[2]); //books[2].RelatedBooks.Add(books[0]); //context.SaveChanges(); var booksFromQuery = context.Books.Take(3).Select(b => new { b.Title, b.RelatedBooks }); foreach (var book in booksFromQuery) { Console.WriteLine("--{0}", book.Title); foreach (var relatedBook in book.RelatedBooks) { Console.WriteLine(relatedBook.Title); } } }
//Problem: 10 public static int CountBooks(BookShopContext context, int lengthCheck) { var result = context.Books.Where(x => x.Title.Length > lengthCheck).ToList(); return(result.Count); }
public IHttpActionResult PutRecallBook(int id) { var context = new BookShopContext(); var purchase = context.Purchases.FirstOrDefault(p => p.Id == id); if (purchase == null) { return this.NotFound(); } if (purchase.ApplicationUser.UserName != this.User.Identity.Name) { return this.BadRequest("You cannot return this purchase, you are not the buyer!"); } purchase.IsRecalled = true; purchase.Book.Copies++; context.SaveChanges(); return this.Ok("Refunded!"); }
//Problem 10 public static int CountBooks(BookShopContext context, int lengthCheck) { return(context.Books.Where(x => x.Title.Count() > lengthCheck).Count()); }
public static void Main() { var context = new BookShopContext(); var migrationStrategy = new MigrateDatabaseToLatestVersion<BookShopContext, Configuration>(); Database.SetInitializer(migrationStrategy); Console.Write("Do you want output for step 6 y/n: "); string wannaSix = Console.ReadLine(); if (wannaSix == "y") { Console.Write("Please choise part from 1 to 5: "); string input = Console.ReadLine(); switch (input) { case "1": var bookTitles = context.Books .Where(b => b.ReleaseDate.Year > 2000) .Select(b => new { b.Title }); foreach (var bookTitle in bookTitles) { Console.WriteLine(bookTitle.Title); } break; case "2": var authorsByBook = context.Authors .Where(a => a.Books .Any(b => b.ReleaseDate.Year < 1990)) .Select(a => new { FirstName = a.FirstName, LastName = a.LastName }); foreach (var author in authorsByBook) { Console.WriteLine("{0} {1}", author.FirstName, author.LastName); } break; case "3": var authors = context.Authors .OrderByDescending(a => a.Books.Count) .Select(a => new { FirstName = a.FirstName, LastName = a.LastName, BookCount = a.Books.Count }); foreach (var author in authors) { Console.WriteLine("{0} {1} - {2}", author.FirstName, author.LastName, author.BookCount); } break; case "4": var georgesBooks = context.Books .Where(b => b.Author.FirstName == "George" && b.Author.LastName == "Powell") .OrderByDescending(b => b.ReleaseDate) .ThenBy(b => b.Title) .Select(b => new { Title = b.Title, ReleaseDate = b.ReleaseDate, Copies = b.Copies }); foreach (var georgesBook in georgesBooks) { Console.WriteLine("{0} - {1} - {2}", georgesBook.Title, georgesBook.ReleaseDate, georgesBook.Copies); } break; case "5": var booksByCategories = context.Categories .OrderBy(c => c.Books.Count) .Select(c => new { Books = c.Books .OrderByDescending(b => b.ReleaseDate) .ThenBy(b => b.Title) .Take(3) .Select(b => new { BookTitle = b.Title, ReleaseDate = b.ReleaseDate }), CategoryName = c.Name, BookCount = c.Books.Count }); foreach (var booksByCategory in booksByCategories) { Console.WriteLine("--{0}: {1} books", booksByCategory.CategoryName, booksByCategory.BookCount); foreach (var book in booksByCategory.Books) { Console.WriteLine("{0} ({1})", book.BookTitle, book.ReleaseDate.Year); } } break; default: Console.WriteLine("Incorect choise."); break; } } else { var books = context.Books .Take(3) .ToList(); if (books.Count == 0) { books[0].RelatedBooks.Add(books[1]); books[1].RelatedBooks.Add(books[0]); books[0].RelatedBooks.Add(books[2]); books[2].RelatedBooks.Add(books[0]); context.SaveChanges(); } var booksFromQuery = context.Books .Take(3) .Select(b => new { Title = b.Title, RelatedBooks = b.RelatedBooks.Select(rb => new { rb.Title }) }); foreach (var book in booksFromQuery) { Console.WriteLine("--{0}", book.Title); foreach (var relatedBook in book.RelatedBooks) { Console.WriteLine(relatedBook.Title); } } } }
public OrderRepository(BookShopContext context) { this.context = context; }
public UserSessionManager(IOwinContext owinContext, BookShopContext data) { this.Data = data; this.OwinContext = owinContext; }
public static int CountBooks(BookShopContext context, int lengthCheck) { var numberOfBooks = context.Books.Count(x => x.Title.Length > lengthCheck); return(numberOfBooks); }
public IHttpActionResult PutBook([FromUri] int id, [FromBody] BookPutBindingModel bookModel) { if (!this.ModelState.IsValid) { return this.BadRequest(this.ModelState); } var context = new BookShopContext(); var book = context.Books.FirstOrDefault(b => b.Id == id); if (book == null) { return this.NotFound(); } book.Title = bookModel.Title; book.Decription = bookModel.Decription; book.Price = bookModel.Price; book.Copies = bookModel.Copies; book.EditionType = bookModel.EditionType; book.AgeRestriction = bookModel.AgeRestriction; book.ReleaseDate = bookModel.ReleaseDate; book.AuthorId = bookModel.AuthorId; context.SaveChanges(); return this.Ok(bookModel); }
public IHttpActionResult PostBook([FromBody] BookPostBindingModel bookPost) { if (!this.ModelState.IsValid) { return this.BadRequest(this.ModelState); } var context = new BookShopContext(); var categories = bookPost.Categories.Split(' ').Select(c => c.Trim()).ToList(); var categoryList = new List<Category>(); categories.ForEach(c => { var categoryDb = context.Categories.FirstOrDefault(ca => ca.Name == c); if (categoryDb == null) { categoryList.Add(new Category() { Name = c }); } else { categoryList.Add(categoryDb); } }); var newBook = new Book() { Title = bookPost.Title, Decription = bookPost.Decription, Price = bookPost.Price, Copies = bookPost.Copies, EditionType = bookPost.EditionType, AgeRestriction = bookPost.AgeRestriction, ReleaseDate = bookPost.ReleaseDate, Categories = categoryList, AuthorId = 1 }; context.Books.Add(newBook); context.SaveChanges(); return this.Ok(bookPost); }
public static string ImportAuthors(BookShopContext context, string jsonString) { var authorDTOs = JsonConvert.DeserializeObject <ImportAuthorDTO[]>(jsonString); var sb = new StringBuilder(); var books = context.Books.ToList(); var authors = new List <Author>(); foreach (var authorDTO in authorDTOs) { if (!IsValid(authorDTO)) { sb.AppendLine(ErrorMessage); continue; } if (authors.Any(x => x.Email == authorDTO.Email)) { sb.AppendLine(ErrorMessage); continue; } if (authorDTO.Books.Length == 0) { continue; } var author = new Author() { FirstName = authorDTO.FirstName, LastName = authorDTO.LastName, Email = authorDTO.Email, Phone = authorDTO.Phone, }; foreach (var currentBook in authorDTO.Books) { var book = books.FirstOrDefault(x => x.Id == currentBook.Id); if (book == null) { continue; } var authorBook = new AuthorBook() { Author = author, Book = book, }; author.AuthorsBooks.Add(authorBook); } if (author.AuthorsBooks.Count() == 0) { sb.AppendLine(ErrorMessage); continue; } authors.Add(author); var authorFullName = author.FirstName + " " + author.LastName; sb.AppendLine(String.Format(SuccessfullyImportedAuthor, authorFullName, author.AuthorsBooks.Count)); } context.Authors.AddRange(authors); context.SaveChanges(); return(sb.ToString().Trim()); }
public static void Main() { using (var db = new BookShopContext()) { // For first start and reset - change connection string and start database initializer. //DbInitializer.ResetDatabase(db); // 01. Age Restriction //string command = Console.ReadLine().ToLower(); //string result = GetBooksByAgeRestriction(db, command); // 02. GoldenBooks. //string result = GetGoldenBooks(db); //03. Books by Price //string result = GetBooksByPrice(db); // 04. Not Released In //int year = int.Parse(Console.ReadLine()); //string result = GetBooksNotReleasedIn(db, year); // 05. Book Titles by Category //string input = Console.ReadLine(); //string result = GetBooksByCategory(db, input); // 06. Released Before Date //string date = Console.ReadLine(); //string result = GetBooksReleasedBefore(db, date); // 07. Author Search //string input = Console.ReadLine(); //string result = GetAuthorNamesEndingIn(db, input); // 08. Book Search //string input = Console.ReadLine(); //string result = GetBookTitlesContaining(db, input); // 09. Book Search by Author //string input = Console.ReadLine(); //string result = GetBooksByAuthor(db, input); // 10. Count Books //int lengthCheck = int.Parse(Console.ReadLine()); //int result = CountBooks(db, lengthCheck); // 11. Total Book Copies //string result = CountCopiesByAuthor(db); // 12. Profit by Category //string result = GetTotalProfitByCategory(db); // 13. Most Recent Books //string result = GetMostRecentBooks(db); // 14. Increase Prices //IncreasePrices(db); // 15.Remove Books //int result = RemoveBooks(db); // Bonus Tasks. // Use Z.EntityFramework.Plus.EFCore library for bulk operations // 16. Increase Prices Bulk //IncreasePricesBulk(db); // 17. Remove Books Bulk //int result = RemoveBooksBulk(db); // 18. Take author with all of his books and categories. //string result = GetAllAuthorsWithBooksAndCategories(db); // For use Lazy Loading use Microsoft.EntityFrameworkCore.Proxies library. // Make all dbSets, collections and navigation properties virtual. // Add .UseLazyLoadingProxies() in OnConfiguring method in our context. //string result = GetAllBooksWithCategories(db); //Console.WriteLine(result); } }
public CategoriesController(BookShopContext db) { _db = db; }
private static void GetMostRecentBooksByCategories(BookShopContext context) { var categories = context.Categories .OrderByDescending(c => c.Books.Count) .Select(c => new { c.Name, c.Books.Count, Books = c.Books .OrderByDescending(b => b.ReleaseDate) .ThenBy(b => b.Title) .Take(3) .Select(b => new { b.Title, b.ReleaseDate }) }); Console.WriteLine("\nTask 5:\n{0}", Separator); categories.ToList().ForEach(c => { Console.WriteLine("--{0}: {1} books", c.Name, c.Count); c.Books.ToList().ForEach(b => { Console.WriteLine("{0} ({1})", b.Title, b.ReleaseDate != null ? b.ReleaseDate.Value.Year.ToString() : "no release date"); }); }); }
public BaseApiController(BookShopContext bookShopData) { this.BookShopData = bookShopData; }