public void InValid_IssueBook() { Mock <IDatabase> mock = new Mock <IDatabase>(); BookController bookcontroller = new BookController(mock.Object); Dictionary <string, string> parameter = new Dictionary <string, string>(); BookTransactionViewModel bookTransactionViewModel = new BookTransactionViewModel() { Name = "Anitt", Author = "AnittRajendran", BookID = 4081, BookStatus = "Available", DateofIssue = new DateTime(2018, 07, 12), DueDate = new DateTime(2018, 07, 12) }; List <Dictionary <string, string> > result = new List <Dictionary <string, string> >(); parameter.Add("Member_ID", "-1"); parameter.Add("First_Name", "case"); parameter.Add("Last_Name", "case"); parameter.Add("Email_id", "case"); parameter.Add("Phone_no", "case"); parameter.Add("Address", "case"); parameter.Add("DOB", "case"); result.Add(parameter); mock.Setup(x => x.Query(It.IsAny <string>(), It.IsAny <Dictionary <string, object> >())).Returns(result); Dictionary <string, string> parameterbook = new Dictionary <string, string>(); List <Dictionary <string, string> > resultbook = new List <Dictionary <string, string> >(); parameter.Add("Book_id", "4081"); parameter.Add("Author", "Test"); parameter.Add("No_of_books", "10"); parameter.Add("Name", "case"); parameter.Add("Rack_No", "12"); parameter.Add("Status", "case"); result.Add(parameterbook); var booktranscation = bookcontroller.Issue(bookTransactionViewModel) as RedirectToRouteResult; Assert.IsNotNull(booktranscation); }
public async Task <IActionResult> Borrow(int id) { var book = await bookBusinessService.GetBookById(id, null, false); var currentUser = await userBusinessService.GetUserByEmail(User.Identity.Name); var transactions = await bookBusinessService.GetBookTransactionsByBookId(id); var transactionsVM = mapper.Map <List <BookTransactionDto>, List <BookTransactionViewModel> >(transactions); ViewData["Transactions"] = transactionsVM; ViewData["Title"] = book.Title; if (book.UserId == currentUser.Id) { return(NotFound()); } var transaction = new BookTransactionViewModel() { Id = Guid.NewGuid().ToString(), BorrowerId = currentUser.Id, OwnerId = book.UserId, BookId = id, BorrowStartDate = DateTime.Now, BorrowEndDate = DateTime.Now }; return(View(transaction)); }
public async Task <IActionResult> Borrow(string id, BookTransactionViewModel model) { if (id != model.Id) { return(NotFound()); } if (ModelState.IsValid) { try { var start = model.BorrowStartDate; var end = model.BorrowEndDate; var difference = (end - start).Days; const int maxDays = 7; const int minDays = 1; var now = DateTime.Now.Date; if ((start.Date >= now && now <= end.Date) && (minDays <= difference && difference <= maxDays)) { if (await bookBusinessService.IsThisBookFree(model.BookId, start, end)) { var dtoModel = mapper.Map <BookTransactionViewModel, BookTransactionDto>(model); dtoModel.CreatedDate = DateTime.Now; dtoModel.IsSuccess = null; dtoModel.OwnerAgreed = null; await bookBusinessService.CreateTransaction(dtoModel); return(RedirectToAction("Index", new { id = dtoModel.BorrowerId })); } else { ModelState.AddModelError("", "Книга в это время занята, выберите другое время"); } } else { ModelState.AddModelError("", "Бронировать книгу можно, начиная либо с текущей даты, либо с любой даты не больше недели."); } } catch (DbUpdateConcurrencyException) { throw; } } var transactions = await bookBusinessService.GetBookTransactionsByBookId(model.BookId); var transactionsVM = mapper.Map <List <BookTransactionDto>, List <BookTransactionViewModel> >(transactions); ViewBag.Transactions = transactionsVM; return(View(model)); }
public ActionResult Issue(BookTransactionViewModel transactionViewModel) { try { if (transactionViewModel == null) { throw new ArgumentException(ProjectConstants.InvalidTransactionMsg); } MemberTable memberTable = new MemberTable(db); LibMember member = memberTable.GetMemberById(Convert.ToString(transactionViewModel.MemberID)); if (member == null) { ModelState.AddModelError(string.Empty, ProjectConstants.MemberIdNotExistMsg); return(View(transactionViewModel)); } BookTable bookTable = new BookTable(db); Book book = bookTable.GetBookById(Convert.ToString(transactionViewModel.BookID)); BookTranscationTable bookTranscationTable = new BookTranscationTable(db); BookTranscation bookTranscation = new BookTranscation() { BookID = transactionViewModel.BookID, BookStatus = transactionViewModel.BookStatus, MemberID = transactionViewModel.MemberID, DateofIssue = transactionViewModel.DateofIssue, DueDate = transactionViewModel.DueDate }; bookTranscationTable.Insert(bookTranscation); int existingBookTransactionCount = bookTranscationTable.GetBookTransactionCountByBookId(bookTranscation.BookID); if (existingBookTransactionCount >= book.Count) { // update the book status as Not Available book.Status = BookStatus.NotAvailable.ToString(); bookTable.Update(book); } } catch (Exception) { throw; } return(RedirectToAction(ProjectConstants.ListBookTranscation)); }
public ActionResult Issue(string id) { // Read the Due Date day from int dueDateDays = Convert.ToInt32(WebConfigurationManager.AppSettings[ProjectConstants.BookDueDateDays]); BookTable bookTable = new BookTable(db); Book book = bookTable.GetBookById(id); BookTransactionViewModel newTransaction = new BookTransactionViewModel() { Name = book.Name, Author = book.Author, BookStatus = BookTransactionStatus.Issued.ToString(), BookID = book.BookID, DateofIssue = DateTime.Now, DueDate = DateTime.Now.AddDays(Convert.ToDouble(WebConfigurationManager.AppSettings[ProjectConstants.BookDueDateDays])) }; // Get the Count of existing book transactions ViewBag.Remaining = book.Count - (new BookTranscationTable(db)).GetBookTransactionCountByBookId(book.BookID, true); return(View(newTransaction)); }