Example #1
0
        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);
        }
Example #2
0
        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));
        }
Example #3
0
        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));
        }
Example #4
0
        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));
        }
Example #5
0
        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));
        }