コード例 #1
0
        public async Task <IActionResult> Edit(int id, [Bind("BookId,GenreId")] GenreBook genreBook)
        {
            if (id != genreBook.BookId)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(genreBook);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!GenreBookExists(genreBook.BookId))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            ViewData["BookId"]  = new SelectList(_context.Books, "BookId", "Name", genreBook.BookId);
            ViewData["GenreId"] = new SelectList(_context.Genres, "GenreId", "Name", genreBook.GenreId);
            return(View(genreBook));
        }
コード例 #2
0
        public async Task <IActionResult> Create([Bind("BookId,GenreId")] GenreBook genreBook)
        {
            if (ModelState.IsValid)
            {
                _context.Add(genreBook);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            ViewData["BookId"]  = new SelectList(_context.Books, "BookId", "Name", genreBook.BookId);
            ViewData["GenreId"] = new SelectList(_context.Genres, "GenreId", "Name", genreBook.GenreId);
            return(View(genreBook));
        }
コード例 #3
0
        public async Task <GenreBook> AddGenreBook(string bookId, string genreId)
        {
            var genreBook = new GenreBook
            {
                Id      = Guid.NewGuid().ToString(),
                BookId  = bookId,
                GenreId = genreId,
                Book    = await _applicationContext.Books.FindAsync(bookId),
                Genre   = await _applicationContext.Genres.FindAsync(genreId)
            };
            await _applicationContext.GenreBooks.AddAsync(genreBook);

            await _applicationContext.SaveChangesAsync();

            return(await _applicationContext.GenreBooks.FirstOrDefaultAsync(w => string.Equals(w.Id, genreBook.Id)));
        }
コード例 #4
0
        public async Task <ActionResult> Put(int id, [FromBody] Book book)
        {
            if (id != book.Id)
            {
                return(BadRequest());
            }
            var dbbook = _db.Books.Include(b => b.GenreBooks).FirstOrDefault(b => b.Id == id);

            if (dbbook == null)
            {
                return(NotFound());
            }

            dbbook.Name   = book.Name;
            dbbook.Author = book.Author;

            var dbgenrebooks = _db.GenreBooks.Where(b => b.BookId == dbbook.Id).ToList();

            foreach (var item in dbgenrebooks)
            {
                dbbook.GenreBooks.Remove(item);
            }

            var genreBooks = new List <GenreBook>();

            foreach (var item in book.GenreBooks)
            {
                GenreBook genreBook = new GenreBook
                {
                    GenreId = item.GenreId,
                    BookId  = dbbook.Id
                };
                genreBooks.Add(genreBook);
            }
            dbbook.GenreBooks = genreBooks;
            await _db.SaveChangesAsync();

            return(Ok());
        }
コード例 #5
0
        protected override void Seed(LibrarianContext context)
        {
            #region DataCreation
            var hl = new Author
            {
                Name    = "Harper",
                Surname = "Lee"
            };
            var ng = new Author
            {
                Name    = "Neil",
                Surname = "Gaiman"
            };

            var ft = new Genre("Fantasy");
            var cl = new Genre("Classics");

            var js = new Reader(345)
            {
                Name     = "John",
                Surname  = "Smith",
                Passport = "EE 300000",
                Phone    = "+380456378134"
            };

            var tkam = new Book
            {
                Title      = "To kill a mockingbird",
                PageCount  = 420,
                Number     = 568,
                IsBorrowed = true
            };
            var ag = new Book
            {
                Title     = "American gods",
                PageCount = 600,
                Number    = 8934
            };
            var tgb = new Book
            {
                Title     = "The graveyard book",
                PageCount = 350,
                Number    = 784
            };

            var rc1 = new Record
            {
                Book       = ag,
                BookId     = ag.Id,
                Reader     = js,
                ReaderId   = js.Id,
                BorrowDate = new DateTime(2020, 12, 13),
                ReturnDate = new DateTime(2020, 12, 20)
            };

            var rc2 = new Record
            {
                Book       = tkam,
                BookId     = tkam.Id,
                Reader     = js,
                ReaderId   = js.Id,
                BorrowDate = new DateTime(2020, 12, 13)
            };

            var hl_tkm = new BookAuthor()
            {
                Book     = tkam,
                BookId   = tkam.Id,
                Author   = hl,
                AuthorId = hl.Id
            };

            var ng_ag = new BookAuthor()
            {
                BookId   = ag.Id,
                AuthorId = ng.Id
            };

            var ng_tgb = new BookAuthor()
            {
                BookId   = tgb.Id,
                AuthorId = ng.Id
            };

            var cl_tkm = new GenreBook()
            {
                GenreId = cl.Id,
                BookId  = tkam.Id
            };

            var ft_ag = new GenreBook()
            {
                GenreId = ft.Id,
                BookId  = ag.Id
            };

            var ft_tgb = new GenreBook()
            {
                GenreId = ft.Id,
                BookId  = tgb.Id
            };

            tkam.Genres.Add(cl);
            cl.Books.Add(tkam);
            tkam.Authors.Add(hl);
            hl.Books.Add(tkam);

            tgb.Genres.Add(ft);
            ft.Books.Add(tgb);
            tgb.Authors.Add(ng);
            ng.Books.Add(tgb);

            ag.Genres.Add(ft);
            ft.Books.Add(ag);
            ag.Authors.Add(ng);
            ng.Books.Add(ag);

            js.Records.Add(rc1);
            js.Records.Add(rc2);
            #endregion

            context.Authors.AddRange(new[] { hl, ng });
            context.Books.AddRange(new[] { tkam, tgb, ag });
            context.Genres.AddRange(new[] { cl, ft });
            context.Readers.AddRange(new[] { js });
            context.Records.AddRange(new[] { rc1, rc2 });
            context.GenreBooks.AddRange(new[] { ft_ag, ft_tgb, cl_tkm });
            context.BookAuthors.AddRange(new[] { ng_ag, ng_tgb, hl_tkm });

            context.SaveChanges();
            base.Seed(context);
        }
コード例 #6
0
 public async Task DeleteGenreBook(GenreBook genreBook)
 {
     _applicationContext.GenreBooks.Remove(genreBook);
     await _applicationContext.SaveChangesAsync();
 }