/// <summary>
 /// New
 /// </summary>
 /// <param name="id">Book Id</param>
 /// <returns></returns>
 public ActionResult New(int id)
 {
     var q = bookService.Find(b => b.Id == id);
     BorrowInfo borrow = new BorrowInfo();
     ViewBag.BookTitle = q.Title;
     borrow.BookId = q.Id;
     borrow.UserName = LoginUser.UserName;
     return View(borrow);
 }
 public bool Add(BorrowInfo model)
 {
     bool result = false;
     TransactionOptions transactionOption = new TransactionOptions();
     //isolation level
     transactionOption.IsolationLevel = IsolationLevel.ReadCommitted;
     // over time
     transactionOption.Timeout = new TimeSpan(0, 0, 60);
     using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, transactionOption))
     {
         try
         {
             //minus 1 stock qty,if qty=0,the book can't be borrowed
             var currentBook = bookDal.Find(b => b.Id == model.BookId);
             if (currentBook == null || currentBook.StockQty == 0)
                 return false;
             currentBook.StockQty = currentBook.StockQty - 1;
             bookDal.Update(currentBook);
             //add one borrow info record
             model.MDate = DateTime.Now;
             model.IsActive = true;
             model.MUser = 1;
             borrowDal.Add(model);
             scope.Complete();
             result = true;
         }
         catch(Exception ex)
         {
             throw ex;
         }
         finally
         {
             scope.Dispose();
         }
     }
     return result;
 }
        public ActionResult New(BorrowInfo borrow)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    borrowService.Add(borrow);
                }
                catch(Exception ex)
                {
                    ModelState.AddModelError("error", ex.Message);
                }
            }

            //return RedirectToAction("List", "Book");
            return View();
        }