Ejemplo n.º 1
0
        public void saveBorrow(string[] listShop, string UserID, string dtPersian, long totalPrice)
        {
            using (var db = _iServiceProvider.GetRequiredService <ApplicationDbContext>())
            {
                using (var transaction = db.Database.BeginTransaction())
                {
                    try
                    {
                        foreach (var item in listShop)
                        {
                            BorrowBook br = new BorrowBook();
                            try
                            {
                                br.BookId = Convert.ToInt32(item);
                            }
                            catch (Exception ex)
                            {
                                continue;
                            }

                            br.UserId = UserID;

                            br.Flag            = 1;
                            br.DateTimeRequest = dtPersian;
                            br.Price           = (from b in db.books where b.BookId == br.BookId select b.Price).SingleOrDefault();
                            db.borrowBooks.Add(br);
                        }

                        var query_wallet = (from u in db.Users where u.Id == UserID select u).SingleOrDefault();
                        if (query_wallet != null)
                        {
                            query_wallet.Wallet = query_wallet.Wallet - totalPrice;
                        }

                        db.SaveChanges();
                        transaction.Commit();
                    }
                    catch
                    {
                    }
                }
            }
        }
Ejemplo n.º 2
0
        public void EditBorrowBook(int id, BorrowBookPlus newBorrowBookPlus)
        {
            using (var transaction = new TransactionScope())
            {
                try
                {
                    BorrowBook newBorrowBook = newBorrowBookPlus.BorrowBook;
                    BorrowBook oldBorrowBook = _context.BorrowBook.Where(oldRB => oldRB.Id == id).SingleOrDefault();
                    if (oldBorrowBook != null)
                    {
                        oldBorrowBook.BorrowBookCode    = newBorrowBook.BorrowBookCode;
                        oldBorrowBook.BorrowDate        = newBorrowBook.BorrowDate;
                        oldBorrowBook.NumberOfDayBorrow = newBorrowBook.NumberOfDayBorrow;
                        oldBorrowBook.Description       = newBorrowBook.Description;
                        oldBorrowBook.Student_Id        = newBorrowBook.Student_Id;
                        oldBorrowBook.IsReturn          = newBorrowBook.IsReturn;
                        _context.SaveChanges();
                    }
                    else
                    {
                        throw new Exception("Borrow Book doesn't exist");
                    }

                    // delete all old borrow book detail
                    List <BorrowBookDetail> borrowBookDetails = _context.BorrowBookDetail.Where(item => item.BorrowBook_Id == id).ToList();
                    _context.BorrowBookDetail.RemoveRange(borrowBookDetails);
                    _context.SaveChanges();

                    // add all new borrow book detail
                    _context.BorrowBookDetail.AddRange(newBorrowBookPlus.BorrowBookDetails);
                    _context.SaveChanges();

                    transaction.Complete();
                }
                catch (Exception ex)
                {
                    transaction.Dispose();
                    throw new Exception("Error from BorrowBookDAL: " + ex.Message.ToString());
                }
            }
        }
Ejemplo n.º 3
0
        public async void ItShouldValidateIfUserHasBorrowedACopyOfTheSameBook()
        {
            var    borrowBook = new BorrowBook(_loanRepository, _bookRepository);
            string isbn       = "9781449331818";
            var    books      = _bookRepository.ReadAll().ToList();
            Guid   userId     = Guid.NewGuid();

            var borrowed1 = await borrowBook.Borrow(userId, books.ElementAt(0).Id);

            //var borrowed2 = await borrowBook.Borrow(userId, books.ElementAt(1).Id);

            var firstValidation = await borrowBook.UserHasAlreadyBorrowedACopyOfTheSameBook(userId, books.ElementAt(1).Id);

            Assert.True(firstValidation);



            var secondValidation = await borrowBook.UserHasAlreadyBorrowedACopyOfTheSameBook(userId, books.ElementAt(2).Id);

            Assert.False(secondValidation);
        }
Ejemplo n.º 4
0
 public void DeleteBorrowBook(int id)
 {
     using (var transaction = new TransactionScope())
     {
         try
         {
             BorrowBook borrowBook = _context.BorrowBook.Where(rb => rb.Id == id).FirstOrDefault();
             List <BorrowBookDetail> borrowBookDetails = _context.BorrowBookDetail.Where(bbd => bbd.BorrowBook_Id == borrowBook.Id).ToList();
             _context.BorrowBookDetail.RemoveRange(borrowBookDetails);
             _context.SaveChanges();
             _context.Remove(borrowBook);
             _context.SaveChanges();
             transaction.Complete();
         }
         catch (Exception ex)
         {
             transaction.Dispose();
             throw new Exception("Error from BorrowBookDAL: " + ex.Message.ToString());
         }
     }
 }
        //Get borrowBook based on borrowId
        public BorrowBook GetBorrowBookByBorrowId(string borrowId)
        {
            //Preparing SQL statements
            string sql = "Select BorrowId,MemberId,BorrowedNum,OverdueNum from BorrowBook Where BorrowId=@BorrowId";

            //Prepare parameters
            SqlParameter[] para = new SqlParameter[]
            {
                new SqlParameter("@BorrowId", borrowId),
            };

            //Read
            try
            {
                SqlDataReader objReader = SQLHelper.GetReader(sql, para);
                if (!objReader.HasRows)
                {
                    return(null);
                }
                BorrowBook objBorrowBook = new BorrowBook();
                if (objReader.Read())
                {
                    objBorrowBook = new BorrowBook()
                    {
                        BorrowId    = objReader["BorrowId"].ToString(),
                        MemberId    = objReader["MemberId"].ToString(),
                        BorrowedNum = Convert.ToInt32(objReader["BorrowedNum"]),
                        OverdueNum  = Convert.ToInt32(objReader["OverdueNum"]),
                    };
                }
                //Close Read
                objReader.Close();
                //return
                return(objBorrowBook);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Ejemplo n.º 6
0
        public void DeleteReturnBook(int id)
        {
            using (var transaction = new TransactionScope())
            {
                try
                {
                    ReturnBook returnBook = _context.ReturnBook.Where(rb => rb.Id == id).FirstOrDefault();
                    List <ReturnBookDetail> returnBookDetails = _context.ReturnBookDetail.Where(rbd => rbd.ReturnBook_Id == returnBook.Id).ToList();

                    foreach (ReturnBookDetail returnBookDetail in returnBookDetails)
                    {
                        // update Inventory of Book
                        if (returnBookDetail.Book_Id != null)
                        {
                            _bookDAL.UpdateInventory((int)returnBookDetail.Book_Id, (int)-returnBookDetail.Quantity);
                        }
                        _context.Remove(returnBookDetail);
                        _context.SaveChanges();
                    }

                    // update state of borrow book
                    BorrowBook borrowBook = _context.BorrowBook.Find(returnBook.BorrowBook_Id);
                    if (borrowBook != null)
                    {
                        borrowBook.IsReturn = false;
                        _context.SaveChanges();
                    }

                    _context.Remove(returnBook);
                    _context.SaveChanges();
                    transaction.Complete();
                }
                catch (Exception ex)
                {
                    transaction.Dispose();
                    throw new Exception("Error from ReturnBookDAL: " + ex.Message.ToString());
                }
            }
        }
        //Add a BorrowBoo to see the record
        public int AddBorrowBook(BorrowBook objBorrowBook)
        {
            //Preparing SQL statements
            string sql = "Insert into BorrowBook(BorrowId,MemberId,BorrowedNum,OverdueNum) Values(@BorrowId,@MemberId,@BorrowedNum,@OverdueNum)";

            //Prepare parameters
            SqlParameter[] para = new SqlParameter[]
            {
                new SqlParameter("@BorrowId", objBorrowBook.BorrowId),
                new SqlParameter("@MemberId", objBorrowBook.MemberId),
                new SqlParameter("@BorrowedNum", objBorrowBook.BorrowedNum),
                new SqlParameter("@OverdueNum", objBorrowBook.OverdueNum),
            };

            //Execute and submit
            try
            {
                return(SQLHelper.Update(sql, para));
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Ejemplo n.º 8
0
 public ActionResult Add(AddViewModel model)
 {
     try
     {
         bool member_Penal = _memberService.GetById(model.MemberId).Panel;
         if (!member_Penal)
         {
             BorrowBook record = new BorrowBook();
             record.MemberId           = model.MemberId;
             record.BookId             = model.BookId;
             record.CreatedDateTime    = DateTime.Now;
             record.CreatedBy          = SessionHelper.CurrentUser.ID;
             record.ExpirationDateTime = DateTime.Now.AddDays(30);
             record.IsBring            = false;
             _borrowBookService.Add(record);
             return(RedirectToAction("Add", "BorrowBook", new { IsSuccess = "True" }));
         }
         else
         {
             return(RedirectToAction("Add", "BorrowBook", new { IsSuccess = "Penal" }));
         }
     }
     catch { return(RedirectToAction("Add", "BorrowBook", new { IsSuccess = "False" })); }
 }
Ejemplo n.º 9
0
        public void EditReturnBook(int id, ReturnBookPlus newReturnBookPlus)
        {
            using (var transaction = new TransactionScope())
            {
                try
                {
                    ReturnBook newReturnBook = newReturnBookPlus.ReturnBook;
                    ReturnBook oldReturnBook = _context.ReturnBook.Where(oldRB => oldRB.Id == id).SingleOrDefault();

                    // change borrow book state
                    if (oldReturnBook.BorrowBook_Id != newReturnBook.BorrowBook_Id)
                    {
                        BorrowBook borrowBookNew = _context.BorrowBook.Find(newReturnBook.BorrowBook_Id);
                        BorrowBook borrowBookOld = _context.BorrowBook.Find(oldReturnBook.BorrowBook_Id);
                        borrowBookNew.IsReturn = true;
                        borrowBookOld.IsReturn = false;
                        _context.SaveChanges();
                    }

                    if (oldReturnBook != null)
                    {
                        oldReturnBook.ReturnBookCode = newReturnBook.ReturnBookCode;
                        oldReturnBook.ReturnDate     = newReturnBook.ReturnDate;
                        oldReturnBook.Description    = newReturnBook.Description;
                        oldReturnBook.BorrowBook_Id  = newReturnBook.BorrowBook_Id;
                        _context.SaveChanges();
                    }
                    else
                    {
                        throw new Exception("Return Book doesn't exist");
                    }


                    // delete all old borrow book detail
                    List <ReturnBookDetail> returnBookDetails = _context.ReturnBookDetail.Where(item => item.ReturnBook_Id == id).ToList();
                    _context.ReturnBookDetail.RemoveRange(returnBookDetails);
                    _context.SaveChanges();

                    // add all new borrow book detail
                    _context.ReturnBookDetail.AddRange(newReturnBookPlus.ReturnBookDetails);
                    _context.SaveChanges();

                    transaction.Complete();

                    //foreach (ReturnBookDetail newReturnBookDetail in newReturnBookPlus.ReturnBookDetails)
                    //{
                    //    ReturnBookDetail oldReturnBookDetail = _context.ReturnBookDetail.
                    //        Where(rbDetail => rbDetail.Id == newReturnBookDetail.Id).SingleOrDefault();

                    //    //if (newReturnBookDetail.Book_Id != null)
                    //    //{
                    //    //    // update Inventory of Book
                    //    //    //int? quantityOfUpdate = newReturnBookDetail.Quantity - oldReturnBookDetail.Quantity;
                    //    //    //_bookDAL.UpdateInventory((int)newReturnBookDetail.Book_Id, (int)quantityOfUpdate);
                    //    //}

                    //    if (newReturnBookDetail != null && newReturnBookDetail.Id != 0 && oldReturnBookDetail  != null)
                    //    {
                    //        oldReturnBookDetail.ReturnBookDetailCode = newReturnBookDetail.ReturnBookDetailCode;
                    //        oldReturnBookDetail.Quantity = newReturnBookDetail.Quantity;
                    //        oldReturnBookDetail.Description = newReturnBookDetail.Description;
                    //        oldReturnBookDetail.Book_Id = newReturnBookDetail.Book_Id;
                    //        oldReturnBookDetail.ReturnBook_Id = newReturnBookDetail.ReturnBook_Id;
                    //        _context.SaveChanges();
                    //    }
                    //    else
                    //    {
                    //        transaction.Dispose();
                    //        throw new Exception("Return Book Detail doesn't not exist");
                    //    }
                    //}
                }
                catch (Exception ex)
                {
                    transaction.Dispose();
                    throw new Exception("Error from ReturnBookDAL: " + ex.Message.ToString());
                }
            }
        }
Ejemplo n.º 10
0
        public async Task <ActionResult> Post([FromBody] BorrowBook command)
        {
            await CommandDispatcher.DispatchAsync(command);

            return(Created("borrows", null));
        }
Ejemplo n.º 11
0
        public async Task <IActionResult> CreateBorrowBook(BorrowBook borrow)
        {
            var date        = DateTime.Today.Month;
            var timesBorrow = _context.BorrowBooks.Where(x => x.UserId == borrow.UserId && x.BorrowDate.Month == date);

            if (timesBorrow.Count() > 2)
            {
                return(BadRequest("Ban da het lan muon trong thang"));
            }



            var items = 0;

            foreach (var i in timesBorrow)
            {
                var val = _context.BorrowBookDetails.Where(x => x.BorrowBookId == i.BorrowBookId).Sum(x => x.Quantity);
                items += val;
            }

            if (items >= 5)
            {
                return(BadRequest("Bạn đã hết số lần mượn trong tháng"));
            }

            if (borrow.BorrowBookDetails != null && borrow.BorrowBookDetails.Any())
            {
                var borrowed = borrow.BorrowBookDetails.Sum(x => x.Quantity);
                if (borrowed > 5)
                {
                    return(BadRequest("Ban chi duoc muon it hon 5 quyen"));
                }
                if ((borrowed + items) > 5)
                {
                    return(BadRequest("Ban chi dc muon it hon" + (5 - borrowed)));
                }
                var newborrow = new BorrowBook {
                    BorrowDate = borrow.BorrowDate,

                    Status = borrow.Status,
                    UserId = borrow.UserId
                };
                _context.BorrowBooks.Add(newborrow);
                _context.SaveChanges();
                var id = newborrow.BorrowBookId;

                foreach (var itemdetail in borrow.BorrowBookDetails)
                {
                    var detail = new BorrowBookDetail {
                        BorrowBookId = id,
                        BookId       = itemdetail.BookId,
                        Quantity     = itemdetail.Quantity
                    };
                    _context.BorrowBookDetails.Add(detail);
                }
                await _context.SaveChangesAsync();

                return(Ok("Successed!"));
            }
            return(BadRequest("Danh sach muon trong"));
        }
        public async Task AddBorrowBookDetail(List <BorrowBookDetailDto> input)
        {
            List <string> errorList = new List <string>();

            DateTime today = DateTime.Now;
            //Add id BorrowBook
            var borrowBook = new BorrowBook
            {
                DateBorrow = today
            };
            await _borrowBookRepository.InsertAsync(borrowBook);

            int allTotal = 0;

            var items = _bookLibraryRepository.GetAll();

            //Add borrow book detail
            foreach (var borrowBookDetail in input)
            {
                var addBorrowBookDetail = new BorrowBookDetail
                {
                    Qty          = borrowBookDetail.Qty,
                    BookId       = borrowBookDetail.BookId,
                    LibraryId    = borrowBookDetail.LibraryId,
                    PriceBorrow  = borrowBookDetail.PriceBorrow,
                    Total        = borrowBookDetail.Qty * borrowBookDetail.PriceBorrow,
                    BorrowBookId = borrowBook.Id
                };

                allTotal = allTotal + (borrowBookDetail.Qty * borrowBookDetail.PriceBorrow);

                BorrowBookDetailValiadtor validator        = new BorrowBookDetailValiadtor();
                ValidationResult          validationResult = validator.Validate(addBorrowBookDetail);

                if (!validationResult.IsValid)
                {
                    foreach (var error in validationResult.Errors)
                    {
                        errorList.Add(string.Format("Error: {0}", error.ErrorMessage));
                    }
                    string errorString = string.Join(" ", errorList.ToArray());
                    throw new UserFriendlyException(errorString);
                }

                await _borrowBookDetailRepository.InsertAsync(addBorrowBookDetail);

                var book = items.Where(s => s.BookId == borrowBookDetail.BookId && s.LibraryId == borrowBookDetail.LibraryId)
                           .FirstOrDefault();


                if (borrowBookDetail.Qty > book.Stock)
                {
                    throw new UserFriendlyException(string.Format("{0} have {1} in stock", book.Book.Name, book.Stock));
                }
                else
                {
                    book.Stock = book.Stock - addBorrowBookDetail.Qty;
                    await _bookLibraryRepository.UpdateAsync(book);
                }
            }

            //Update BorrowBook
            TimeSpan aInterval = new System.TimeSpan(5, 0, 0, 0);

            DateTime newTime = today.Add(aInterval);

            borrowBook.Total     = allTotal;
            borrowBook.Status    = "Đang xử lý";
            borrowBook.DateRepay = newTime;
            borrowBook.UserId    = AbpSession.UserId.Value;
            await _borrowBookRepository.InsertAsync(borrowBook);
        }
Ejemplo n.º 13
0
 public bool UpdateBorrowBook(BorrowBook borrowBook)
 {
     _unitOfWork.BorrowBookRepository.Update(borrowBook);
     _unitOfWork.SaveChanges();
     return(true);
 }