/// <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); }
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); } }
/// <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); }); } }); }
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(); } } }
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); } } }
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); } } }
/// <summary> /// User's books /// </summary> /// <returns></returns> public List <UserBooks> GetUserBooks() { using (var db = new LibraryDb()) { return(db.UserBooks.OrderBy(b => b.Title).ToList()); } }
/// <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); }
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(); } } }
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)); } }
/// <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")); }
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(); } } }
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(); } } }
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")); }
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(); } } }
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(); }
public AdminController(LibraryDb db) { _db = db; }
public BookRepository(LibraryDb db) : base(db) { }
public BooksController(ILibraryDb db) { _db = db as LibraryDb; }
public RepositoryWrapper(LibraryDb db) { _db = db; }
public AuthorRepository(LibraryDb db) : base(db) { }
public static IEnumerable <BOOK> GetBooks(LibraryDb dbContext = null) { using (LibraryDb db = LibraryDb.GetDbContext(dbContext)) return(db.BOOKS.ToList()); }
public RepositoryBase(LibraryDb db) { _db = db; }
public BookController(LibraryDb db) { context = db; }