Beispiel #1
0
        /// <summary>
        /// User returns a book
        /// </summary>
        /// <param name="title">Book's title</param>
        /// <returns>Book returned (if found)</returns>
        public UserBooks ReturnBook(string title)
        {
            // Return - user returns a book providing its title. Validation if the book is in the user’s list.
            // Book is removed from the user’s list and the available count is increased.
            // 1. Use the DB
            // 2. Find the book in 'UserBooks' by title
            // 3. If book is found:
            // 3.1. Delete it from 'UserBooks'
            // 3.2. Increase Copies count for the same book inside the 'Books' table
            using (var db = new LibraryDb())
            {
                var userBook = db.UserBooks.FirstOrDefault(b => b.Title.ToLower() == title.ToLower());
                if (userBook != null)
                {
                    db.UserBooks.Remove(userBook);

                    // increase availabe count
                    var libraryBook = db.Books.FirstOrDefault(b => b.Title.ToLower() == title.ToLower());
                    libraryBook.Copies++;

                    db.SaveChanges();

                    return(userBook);
                }
            }

            return(null);
        }
Beispiel #2
0
        public void TestBook()
        {
            using (LibraryDb db = LibraryDb.GetDbContext())
            {
                var books = BooksBl.GetBooks();

                //add book test
                BOOK book = new BOOK {
                    ISBN = "test", COUNT = 0, NAME = "test", PRICE = 0
                };
                BooksBl.AddNewCard(book);
                BOOK dbBook = db.BOOKS.SingleOrDefault(b => b.ID == book.ID);
                Assert.IsNotNull(dbBook);

                //Change book test
                dbBook.DESCRIPTION = someText;
                BooksBl.UpdateBook(dbBook);
                dbBook = db.BOOKS.SingleOrDefault(b => b.ID == book.ID);
                Assert.AreEqual(true, dbBook?.DESCRIPTION == someText);

                //deleted test book
                BooksBl.BooksRemove(new[] { book.ID });
                dbBook = db.BOOKS.SingleOrDefault(b => b.ID == book.ID);
                Assert.IsNull(dbBook);
            }
        }
Beispiel #3
0
 /// <summary>
 /// Refresh Main (member/item/history/itemsShouldReturn) cache from database
 /// </summary>
 /// <returns></returns>
 public static async Task RefreshMainCache()
 {
     await Task.Run(async() =>
     {
         using (var context = new LibraryDb())
         {
             Members         = await AsyncWrap(context.patron.ToList());
             Items           = await AsyncWrap(context.item.ToList());
             ActionHistories = await AsyncWrap(context.action_history.OrderByDescending(i => i.id).Take(20).ToList());
             Parallel.ForEach(ActionHistories,
                              action =>
             {
                 action.MemberName = Members.FirstOrDefault(i => i.id == action.patronid)?.DisplayNameTitle;
                 action.ItemName   = Items.FirstOrDefault(i => i.id == action.itemid)?.title;
                 action.ActionType = ((action_type.ActionTypeEnum)action.action_type).ToString();
             });
             ItemsShouldReturn = await AsyncWrap(Items.Where(i => i.due_date < DateTime.Today).OrderByDescending(i => i.due_date).ToList());
             Parallel.ForEach(ItemsShouldReturn,
                              item =>
             {
                 item.Borrower = Members.FirstOrDefault(i => i.id == item.patronid);
             });
         }
     });
 }
Beispiel #4
0
        public static void UpdateBook(BOOK book, LibraryDb dbContext = null)
        {
            using (LibraryDb db = LibraryDb.GetDbContext(dbContext))
            {
                using (TransactionScope transaction = new TransactionScope())
                {
                    if (book == null)
                    {
                        throw new ArgumentNullException($"book: {nameof(book)}");
                    }

                    BOOK dbBook = db.BOOKS.SingleOrDefault(b => b.ID == book.ID);
                    if (dbBook == null)
                    {
                        throw new Exception($"Книга с {book.ID} не найдена!");
                    }

                    dbBook.ISBN        = book.ISBN;
                    dbBook.NAME        = book.NAME;
                    dbBook.AUTHOR      = book.AUTHOR;
                    dbBook.PUBLISHING  = book.PUBLISHING;
                    dbBook.COUNT       = book.COUNT;
                    dbBook.STATUS      = book.STATUS;
                    dbBook.PRICE       = book.PRICE;
                    dbBook.DESCRIPTION = book.DESCRIPTION;

                    db.SaveChanges();
                    transaction.Complete();
                }
            }
        }
Beispiel #5
0
        public void WithViewerTest()
        {
            using (LibraryDb db = LibraryDb.GetDbContext())
            {
                VIEWER viewer = new VIEWER {
                    ADDRESS = "test", EMAIL = "*****@*****.**", NAME = "test", PHONE = "testtest"
                };

                using (DbManager <VIEWER> manager = new DbManager <VIEWER>(new ManagerViewer(), viewer))
                {
                    //add viewer test
                    manager.AddNewRow();
                    VIEWER dbViewer = db.VIEWERS.SingleOrDefault(v => v.ID == viewer.ID);
                    Assert.IsNotNull(dbViewer);

                    //Change VIEWER test
                    dbViewer.MIDDLE_NAME = someText;
                    manager.Entity       = dbViewer;
                    manager.UpdateRow();
                    dbViewer = db.VIEWERS.SingleOrDefault(b => b.ID == viewer.ID);
                    Assert.AreEqual(true, dbViewer?.MIDDLE_NAME == someText);

                    //deleted test VIEWER
                    manager.RemoveRow();
                    dbViewer = db.VIEWERS.SingleOrDefault(b => b.ID == viewer.ID);
                    Assert.IsNull(dbViewer);
                }
            }
        }
Beispiel #6
0
        public void WithBookTest()
        {
            using (LibraryDb db = LibraryDb.GetDbContext())
            {
                BOOK book = new BOOK {
                    ISBN = "test", COUNT = 0, NAME = "test", PRICE = 0
                };

                using (DbManager <BOOK> manager = new DbManager <BOOK>(new ManagerBook(), book))
                {
                    manager.AddNewRow();
                    BOOK dbBook = db.BOOKS.SingleOrDefault(b => b.ID == book.ID);
                    Assert.IsNotNull(dbBook);

                    //Change book test
                    dbBook.DESCRIPTION = someText;
                    manager.Entity     = dbBook;
                    manager.UpdateRow();
                    dbBook = db.BOOKS.SingleOrDefault(b => b.ID == book.ID);
                    Assert.AreEqual(true, dbBook?.DESCRIPTION == someText);

                    //deleted test book
                    manager.RemoveRow();
                    dbBook = db.BOOKS.SingleOrDefault(b => b.ID == book.ID);
                    Assert.IsNull(dbBook);
                }
            }
        }
Beispiel #7
0
 /// <summary>
 /// User's books
 /// </summary>
 /// <returns></returns>
 public List <UserBooks> GetUserBooks()
 {
     using (var db = new LibraryDb())
     {
         return(db.UserBooks.OrderBy(b => b.Title).ToList());
     }
 }
Beispiel #8
0
        /// <summary>
        /// Take a book
        /// </summary>
        /// <param name="title">Book's title</param>
        /// <returns></returns>
        public Books TakeBook(string title)
        {
            // Take - user takes a book providing its title. Validation if book exists. Validation if book is
            // still available(check number of copies). Book is added to the user's list and available
            // book count is decreased.
            using (var db = new LibraryDb())
            {
                // 1. Look for book inside table 'Books' by Title
                var book = db.Books.FirstOrDefault(b => b.Title.ToLower() == title.ToLower());
                // 2. If book is found and is still available:
                if (book != null && book.Copies > 0)
                {
                    // 2.1. Decrease available copies
                    book.Copies--;
                    // 2.2. Insert new record in table 'UserBooks'
                    db.UserBooks.Add(new UserBooks()
                    {
                        Author = book.Author,
                        Title  = book.Title,
                        Year   = book.Year,
                    });

                    db.SaveChanges();

                    return(book);
                }
            }

            return(null);
        }
Beispiel #9
0
        public static void UpdateViewer(VIEWER viewer, LibraryDb dbContext = null)
        {
            using (LibraryDb db = LibraryDb.GetDbContext(dbContext))
            {
                using (TransactionScope transaction = new TransactionScope())
                {
                    if (viewer == null)
                    {
                        throw new ArgumentNullException($"book: {nameof(viewer)}");
                    }

                    VIEWER dbViewer = db.VIEWERS.SingleOrDefault(v => v.ID == viewer.ID);
                    if (dbViewer == null)
                    {
                        throw new Exception($"Книга с {viewer.ID} не найдена!");
                    }

                    dbViewer.NAME        = viewer.NAME;
                    dbViewer.SURNAME     = viewer.SURNAME;
                    dbViewer.MIDDLE_NAME = viewer.MIDDLE_NAME;
                    dbViewer.ADDRESS     = viewer.ADDRESS;
                    dbViewer.PHONE       = viewer.PHONE;
                    dbViewer.EMAIL       = viewer.EMAIL;

                    db.SaveChanges();
                    transaction.Complete();
                }
            }
        }
Beispiel #10
0
        public void TestViewer()
        {
            using (LibraryDb db = LibraryDb.GetDbContext())
            {
                var viewers = ViewerBl.GetViewers();

                //add viewer test
                VIEWER viewer = new VIEWER {
                    ADDRESS = "test", EMAIL = "*****@*****.**", NAME = "test", PHONE = "testtest"
                };
                ViewerBl.AddNewViewer(viewer);
                VIEWER dbViewer = db.VIEWERS.SingleOrDefault(v => v.ID == viewer.ID);
                Assert.IsNotNull(dbViewer);

                //Change VIEWER test
                dbViewer.MIDDLE_NAME = someText;
                ViewerBl.UpdateViewer(dbViewer);
                dbViewer = db.VIEWERS.SingleOrDefault(b => b.ID == viewer.ID);
                Assert.AreEqual(true, dbViewer?.MIDDLE_NAME == someText);

                //deleted test VIEWER
                ViewerBl.ViewersRemove(new[] { viewer.ID });
                dbViewer = db.VIEWERS.SingleOrDefault(b => b.ID == viewer.ID);
                Assert.IsNull(dbViewer);
            }
        }
 public IActionResult Index()
 {
     using (var db = new LibraryDb())
     {
         var tasks = db.Books.ToList();
         return(View(tasks));
     }
 }
Beispiel #12
0
 /// <summary>
 /// Returns list of all available books
 /// </summary>
 /// <returns></returns>
 public List <Books> GetAvailableBooks()
 {
     // Book list - shows all the available books in the library (ordered by title).
     // Corresponding message if there are no more books in the list.
     using (var db = new LibraryDb())
     {
         return(db.Books.Where(b => b.Copies > 0).OrderBy(b => b.Title).ToList());
     }
 }
        public IActionResult Delete(int id)
        {
            using (var db = new LibraryDb())
            {
                var tasks = db.Books.Find(id);

                return(View(tasks));
            }
        }
        public IActionResult Edit(int id)
        {
            using (var db = new LibraryDb())
            {
                var books = db.Books.Find(id);

                return(View(books));
            }
        }
        public IActionResult Delete(Book book)
        {
            using (var db = new LibraryDb())
            {
                db.Books.Remove(book);
                db.SaveChanges();
            }

            return(RedirectToAction("Index"));
        }
Beispiel #16
0
        public static void AddNewViewer(VIEWER viewer, LibraryDb dbContext = null)
        {
            using (LibraryDb db = LibraryDb.GetDbContext(dbContext))
            {
                using (TransactionScope transaction = new TransactionScope())
                {
                    db.VIEWERS.Add(viewer);

                    db.SaveChanges();

                    transaction.Complete();
                }
            }
        }
Beispiel #17
0
        public static void AddNewCard(BOOK book, LibraryDb dbContext = null)
        {
            using (LibraryDb db = LibraryDb.GetDbContext(dbContext))
            {
                using (TransactionScope transaction = new TransactionScope())
                {
                    db.BOOKS.Add(book);

                    db.SaveChanges();

                    transaction.Complete();
                }
            }
        }
Beispiel #18
0
        static void Main(string[] args)
        {
            //using (var db = new LibraryDb())
            //{
            //    db.Database.Initialize(true);
            //    var book = db.BOOKS.ToList();
            //    var viewersve = db.VIEWERS.ToList();
            //}

            using (LibraryDb db = LibraryDb.GetDbContext())
            {
                var qwer = db.Database.ExecuteSqlCommand("SELECT * FROM BOOKs");

                Thread.Sleep(5000);
            }

            Console.ReadKey();
        }
        public IActionResult Create(string title, string author, double price)
        {
            if (string.IsNullOrEmpty(title) || string.IsNullOrEmpty(author) || price < 1)
            {
                return(RedirectToAction("Index"));
            }
            using (var db = new LibraryDb())
            {
                Book book = new Book
                {
                    Title  = title,
                    Author = author,
                    Price  = price
                };

                db.Books.Add(book);
                db.SaveChanges();
            }

            return(RedirectToAction("Index"));
        }
Beispiel #20
0
        public static void ViewersRemove(decimal[] idViewers, LibraryDb dbContext = null)
        {
            using (LibraryDb db = LibraryDb.GetDbContext(dbContext))
            {
                using (TransactionScope transaction = new TransactionScope())
                {
                    foreach (decimal id in idViewers)
                    {
                        VIEWER viewer = db.VIEWERS.SingleOrDefault(b => b.ID == id);

                        if (viewer != null)
                        {
                            db.VIEWERS.Remove(viewer);
                        }
                    }

                    db.SaveChanges();

                    transaction.Complete();
                }
            }
        }
Beispiel #21
0
        public static void BooksRemove(decimal[] booksId, LibraryDb dbContext = null)
        {
            using (LibraryDb db = LibraryDb.GetDbContext(dbContext))
            {
                using (TransactionScope transaction = new TransactionScope())
                {
                    foreach (decimal id in booksId)
                    {
                        BOOK book = db.BOOKS.SingleOrDefault(b => b.ID == id);

                        if (book != null)
                        {
                            db.BOOKS.Remove(book);
                        }
                    }

                    db.SaveChanges();

                    transaction.Complete();
                }
            }
        }
 public BooksController()
 {
     _db = new LibraryDb();
 }
Beispiel #23
0
 public AdminController(LibraryDb db)
 {
     _db = db;
 }
 public BookRepository(LibraryDb db) : base(db)
 {
 }
 public BooksController(ILibraryDb db)
 {
     _db = db as LibraryDb;
 }
Beispiel #26
0
 public RepositoryWrapper(LibraryDb db)
 {
     _db = db;
 }
 public AuthorRepository(LibraryDb db) : base(db)
 {
 }
Beispiel #28
0
 public static IEnumerable <BOOK> GetBooks(LibraryDb dbContext = null)
 {
     using (LibraryDb db = LibraryDb.GetDbContext(dbContext))
         return(db.BOOKS.ToList());
 }
Beispiel #29
0
 public RepositoryBase(LibraryDb db)
 {
     _db = db;
 }
Beispiel #30
0
 public BookController(LibraryDb db)
 {
     context = db;
 }