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);
        }
Exemple #4
0
        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);
        }
Exemple #5
0
 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);
 }
Exemple #6
0
        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();
        }
Exemple #8
0
        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);
        }
Exemple #12
0
        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;
 }
Exemple #15
0
 /// <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));
 }
Exemple #16
0
 public ProfitByCategoryCommand(BookShopContext context)
 {
     this.context = context;
 }
Exemple #17
0
 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;
 }
Exemple #19
0
 static void Main(string[] args)
 {
     var context = new BookShopContext();
     var count = context.Books.Count();
 }
 public NotReleasedInCommand(BookShopContext context)
 {
     this.context = context;
 }
Exemple #21
0
        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}");
            }
        }
Exemple #22
0
        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);
            }
        }
Exemple #23
0
        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);
        }
Exemple #24
0
        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);
            }
        }
Exemple #25
0
 public CategoriesController()
 {
     this.context = new BookShopContext();
 }
Exemple #26
0
        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());
        }
Exemple #27
0
 //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);
        }
Exemple #29
0
        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);
        }
Exemple #31
0
 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());
        }
Exemple #33
0
        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));
        }
Exemple #34
0
 public static int CountBooks(BookShopContext context, int lengthCheck)
 {
     return context.Books.Where(b => b.Title.Length > lengthCheck).Count();
 }
Exemple #35
0
 public static void Main()
 {
     using var db = new BookShopContext();
     //DbInitializer.ResetDatabase(db);
     Console.WriteLine(RemoveBooks(db));
 }
Exemple #36
0
 public HomeController(BookShopContext context)
 {
     _context = context;
 }
Exemple #37
0
        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());
        }
Exemple #39
0
 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);
        }
Exemple #42
0
 public UsersController()
 {
     this.context = new BookShopContext();
 }
Exemple #43
0
        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);
                }
            }
        }
Exemple #45
0
        //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);
                    }
                }
            }
        }
Exemple #49
0
 public OrderRepository(BookShopContext context)
 {
     this.context = context;
 }
Exemple #50
0
 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);
        }
Exemple #54
0
        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());
        }
Exemple #55
0
 public CategoriesController()
 {
     this.context = new BookShopContext();
 }
        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);
            }
        }
Exemple #57
0
 public CategoriesController(BookShopContext db)
 {
     _db = db;
 }
Exemple #58
0
        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");
                });
            });
        }
Exemple #59
0
 public BaseApiController(BookShopContext bookShopData)
 {
     this.BookShopData = bookShopData;
 }