public void Return_Unsuccessful_When_Receives_Empty() { var bookDal = new BookStoreDataMock(bookRentalMock.StoredBooks1()); var result = new BookRental(bookDal).RentBook(new RentBook()); Assert.False(result.Successful); }
private void button3_Click(object sender, EventArgs e) { EmailAccountModel model = new EmailAccountModel("smtp-mail.outlook.com", "*****@*****.**", "libraryproject2019", "*********"); int counter = 0; foreach (ListViewItem item in lvItems.Items) { if (item.Checked) { int tmpID = int.Parse(item.Text.ToString()); BookRental borrowingData = dbDataContext.BookRentals.SingleOrDefault(x => x.ID == tmpID); Users userData = dbDataContext.Users.SingleOrDefault(x => x.ID == borrowingData.ReaderID); BookCopy bookCopy = dbDataContext.BookCopies.SingleOrDefault(x => x.ID == borrowingData.CopyID); Books book = dbDataContext.Books.SingleOrDefault(x => x.ID == bookCopy.BookID); string email = userData.Email; EmailSender emailSender = new EmailSender(model, email, "Nieoddana książka: " + book.Title + ". Prosimy o zwrot"); emailSender.send(); counter++; } } if (counter == 0) { MessageBox.Show("Nie wybrano żadnej opcji z listy"); } else if (counter == 1) { MessageBox.Show("Wiadomość z przypomnieniem została wysłana"); } else { MessageBox.Show("Wysłano wiadomości z przypomnieniem"); } }
private void button3_Click(object sender, EventArgs e) { foreach (ListViewItem item in lvItems.Items) { if (item.Selected) { int id = int.Parse(item.SubItems[7].Text); Books book = dbDataContext.Books.Where(x => x.ID == id).First(); BookRental rental = new BookRental(); rental.ReaderID = Program.loggedUser.ID; rental.RentDate = DateTime.Now; rental.ReturnDate = DateTime.Now.AddDays(30); int freeCopy = getFreeCopy(book.ID); if (freeCopy == -1) { MessageBox.Show("Brak wolnego egzemplarza"); break; } rental.CopyID = freeCopy; rental.status = 1; dbDataContext.BookRentals.InsertOnSubmit(rental); BookCopy bc = dbDataContext.BookCopies.Where(x => x.ID == freeCopy).First(); bc.Free = 0; dbDataContext.SubmitChanges(); item.SubItems[6].Text = (int.Parse(item.SubItems[6].Text) - 1).ToString(); MessageBox.Show("Wypożyczono: " + book.Title); } } }
private void button3_Click(object sender, EventArgs e) { //Dodawanie egzemplarzy do tabeli wypożyczeń foreach (string bookTitle in listBox1.SelectedItems) { Books book = dbDataContext.Books.Where(x => x.Title == bookTitle).First(); BookRental rental = new BookRental(); rental.ReaderID = Program.loggedUser.ID; rental.RentDate = DateTime.Now; rental.ReturnDate = DateTime.Now.AddDays(30); int freeCopy = getFreeCopy(book.ID); if (freeCopy == -1) { MessageBox.Show("Brak wolnego egzemplarza"); break; } rental.CopyID = freeCopy; rental.status = 1; dbDataContext.BookRentals.InsertOnSubmit(rental); BookCopy bc = dbDataContext.BookCopies.Where(x => x.ID == freeCopy).First(); bc.Free = 0; dbDataContext.SubmitChanges(); MessageBox.Show(book.Title); } }
private void button1_Click(object sender, EventArgs e) { foreach (ListViewItem item in lvItems.Items) { if (item.Checked) { item.Remove(); int tmpID = int.Parse(item.Text.ToString()); try { BookRental dbObject = dbDataContext.BookRentals.SingleOrDefault(x => x.ID == tmpID); BookCopy bc = dbDataContext.BookCopies.Where(x => x.ID == dbObject.CopyID).First(); bc.Free = 1; dbObject.ReturnDate = (DateTime?)DateTime.Now; dbObject.status = 0; dbDataContext.SubmitChanges(); int elementIndex = BookListForm.items.FindIndex(x => x.SubItems[0].Text == item.SubItems[4].Text); BookListForm.items[elementIndex].SubItems[6].Text = (int.Parse(BookListForm.items[elementIndex].SubItems[6].Text) + 1).ToString(); } catch (Exception exc) { MessageBox.Show(exc.Message); } } } }
public ActionResult DeleteConfirmed(int Id) { if (Id == 0) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } if (ModelState.IsValid) { BookRental bookRent = db.BookRentals.Find(Id); //remove record from the database db.BookRentals.Remove(bookRent); //gets the book object var bookInDb = db.Books.Where(b => b.ID.Equals(bookRent.BookID)).FirstOrDefault(); //if the status is rented update the availability if (bookRent.Status.ToString().ToLower().Equals("rented")) { bookInDb.Availability += 1; } db.SaveChanges(); } return(RedirectToAction("Index")); }
private void txtRentalID_TextChanged(object sender, EventArgs e) { if (txtRentalID.Text == "") { return; } int id = int.Parse(txtRentalID.Text); BookRental rent = BookRentalDAO.Instance.GetRentalById(id); if (rent.Status == "Đã trả sách") { panel2.Visible = false; lbPayed.Visible = true; } else { panel2.Visible = true; lbPayed.Visible = false; } DateTime ReturnDate = DateTime.Parse(dtpReturnDate.Value.ToString("yyyy-MM-dd")); DateTime TermDate = DateTime.Parse(dtpTermDate.Value.ToString("yyyy-MM-dd")); TimeSpan t = ReturnDate - TermDate; double result = t.TotalDays; if (result > 0) { double percent = result / 100; nmOutDatePrice.Value = decimal.Parse(rent.Price.ToString()) * decimal.Parse(percent.ToString()); } else { nmOutDatePrice.Value = 0; } nmTotalPrice.Value = nmTotalPrice.Value + nmOutDatePrice.Value; }
public ActionResult PickUp(BookRentalViewModel model) { if (model.ID == 0) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } if (ModelState.IsValid) { BookRental bookRent = db.BookRentals.Find(model.ID); bookRent.Status = BookRental.StatusEnum.Rented; bookRent.StartDate = DateTime.Now; if (bookRent.RentalDuration == StaticDetails.TwelveMonthCount) { bookRent.ScheduledReturnDate = DateTime.Now.AddMonths(Convert.ToInt32(StaticDetails.TwelveMonthCount)); } else { bookRent.ScheduledReturnDate = DateTime.Now.AddMonths(Convert.ToInt32(StaticDetails.SixMonthCount)); } db.SaveChanges(); } return(RedirectToAction("Index")); }
public bool RemoveBook(BookRental payload) { BookRental entity = bookRentalRepository.GetByBookAndRental(payload.BookId, payload.RentalId); bookRentalRepository.Delete(entity); return(bookRentalRepository.SaveChanges()); }
public void Return_Successful_Return() { rentBookMock = bookRentalMock.RentReturnBook(); var bookDal = new BookStoreDataMock(bookRentalMock.StoredBooks2()); var result = new BookRental(bookDal).ReturnBook(rentBookMock); Assert.True(result.Successful); }
public void Return_Unsuccessful_When_Book_Is_Not_Stored() { rentBookMock = bookRentalMock.RentReturnBook(); var bookDal = new BookStoreDataMock(bookRentalMock.StoredBooks()); var result = new BookRental(bookDal).RentBook(rentBookMock); Assert.False(result.Successful); }
public bool AddBook(BookRental payload) { BookRental entity = new BookRental { BookId = payload.BookId, RentalId = payload.RentalId }; bookRentalRepository.Create(entity); return(bookRentalRepository.SaveChanges()); }
public ActionResult TakeOutBook(int id) { UserRepository userRepository = new UserRepository(); BookTypeRepository bookTypeRepository = new BookTypeRepository(); BookRental bookRental = new BookRental() { User = userRepository.GetSingleUser(Session["userName"].ToString()), BookType = bookTypeRepository.GetSingleBookType(id) }; return(View(bookRental)); }
public List <BookRental> SearchByUserName(string username) { List <BookRental> list = new List <BookRental>(); string sql = "SELECT br.*, a.UserName, b.Name FROM dbo.BookRental AS br INNER JOIN dbo.Account AS a ON a.Id = br.IdAccount INNER JOIN dbo.Book AS b ON b.Id = br.IdBook WHERE a.UserName like '%" + username + "%'"; DataTable data = DataProvider.Instance.ExecuteQuery(sql); foreach (DataRow row in data.Rows) { BookRental book = new BookRental(row); list.Add(book); } return(list); }
//RETURN GET public ActionResult Return(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } BookRental bookRent = db.BookRentals.Find(id); var model = getVMFromBookRent(bookRent); if (model == null) { return(HttpNotFound()); } return(View("Approve", model)); }
protected void Page_Load(object sender, EventArgs e) { if (null == Session["BookRental"]) { Response.Redirect("~/"); } else { bookRental = (Session["BookRental"] as BookRental); reserveNumber = GetBookRentalIdAsString(); reserveDate = GetDateAsString(bookRental.RentalDate); reserveDueDate = GetDateAsString(bookRental.RentalDueDate); Session["BookRental"] = null; ShowDetails(); } }
public ActionResult Approve(BookRentalViewModel model) { if (model.ID == 0) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } if (ModelState.IsValid) { BookRental bookRent = db.BookRentals.Find(model.ID); bookRent.Status = BookRental.StatusEnum.Approved; db.SaveChanges(); } return(RedirectToAction("Index")); }
protected void ReserveButton_Click(object sender, EventArgs e) { Button button = sender as Button; User user = Session["LoggedUser"] as User; List <Book> books = Session["BookList"] as List <Book>; BookRental bookRental = bookRentalController.ReserveBook(user, books.Find(tBook => tBook.PrimaryKey.Key == decimal.Parse(button.CommandArgument))); if (null == bookRental) { ShowErrorMessage(string.Format("{0}, you have a pending rental. Please, return the book(s) in your possession before renting again!", user.FirstName)); } else { Session["BookRental"] = bookRental; Response.Redirect("~/ReserveDetails"); } }
public async Task <IActionResult> PostRental(RentalResource resource) { var user = await _userManager.FindByIdAsync(resource.UserId); var rental = new Rental() { User = user, DateCreated = DateTime.Now, DeadlineDate = DateTime.Now.AddDays(1), IsFinished = false }; var booksLink = new List <BookRental>(); foreach (var bookId in resource.BookIds) { var book = await _context.Books .Include(b => b.Author) .Include(b => b.RentalLinks) .SingleOrDefaultAsync(b => b.Id == bookId); var bookRental = new BookRental() { Book = book, BookId = book.Id, Rental = rental, RentalId = rental.Id }; booksLink.Add(bookRental); book.RentalLinks.Add(bookRental); } rental.BooksLink = booksLink; user.Rentals.Add(rental); await _context.Rentals.AddAsync(rental); await _context.SaveChangesAsync(); return(Ok(resource)); }
public ActionResult Reserve(BookRentalViewModel book) { var userid = User.Identity.GetUserId(); Book bookToRent = db.Books.Find(book.BookID); double rentalPr = 0; if (userid != null) { var chargeRate = from u in db.Users join m in db.Memberships on u.MembershipID equals m.ID where u.Id.Equals(userid) select new { m.ChargeRateSixMonth, m.ChargeRateTwelveMonth }; if (book.RentalDuration == StaticDetails.TwelveMonthCount) { rentalPr = Convert.ToDouble(bookToRent.Price) * Convert.ToDouble(chargeRate.ToList()[0].ChargeRateTwelveMonth) / 100; } else { rentalPr = Convert.ToDouble(bookToRent.Price) * Convert.ToDouble(chargeRate.ToList()[0].ChargeRateSixMonth) / 100; } BookRental bookRent = new BookRental { BookID = bookToRent.ID, UserID = userid, RentalDuration = book.RentalDuration, RentalPrice = rentalPr, Status = BookRental.StatusEnum.Requested, }; db.BookRentals.Add(bookRent); //finds record from the database var bookInDb = db.Books.SingleOrDefault(c => c.ID == book.BookID); //update availability bookInDb.Availability -= 1; db.SaveChanges(); return(RedirectToAction("Index", "BookRental")); } return(View()); }
//GET DETAILS public ActionResult Details(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } //will find rental record from the database BookRental bookRent = db.BookRentals.Find(id); //references private function getVMFromBookRent() var model = getVMFromBookRent(bookRent); if (model == null) { return(HttpNotFound()); } return(View(model)); }
//converts bookrent object into a BookRentalViewModel object private BookRentalViewModel getVMFromBookRent(BookRental bookRent) { //retrieves book from the database Book bookSelected = db.Books.Where(b => b.ID == bookRent.BookID).FirstOrDefault(); var userDetails = from u in db.Users where u.Id.Equals(bookRent.UserID) select new { u.Id, u.FirstName, u.LastName, u.BirthDate, u.Email }; BookRentalViewModel model = new BookRentalViewModel { ID = bookRent.ID, BookID = bookSelected.ID, RentalPrice = bookRent.RentalPrice, Price = bookSelected.Price, Pages = bookSelected.Pages, FirstName = userDetails.ToList()[0].FirstName, LastName = userDetails.ToList()[0].LastName, BirthDate = userDetails.ToList()[0].BirthDate, ScheduledReturnDate = bookRent.ScheduledReturnDate, Author = bookSelected.Author, StartDate = bookRent.StartDate, Availability = bookSelected.Availability, AdditionalCharge = bookRent.AdditionalCharge, DateAdded = bookSelected.DateAdded, Description = bookSelected.Description, Email = userDetails.ToList()[0].Email, GenreID = bookSelected.GenreID, Genre = db.Genres.FirstOrDefault(g => g.ID.Equals(bookSelected.GenreID)), ISBN = bookSelected.ISBN, ImageUrl = bookSelected.ImageUrl, PublicationDate = bookSelected.PublicationDate, Publisher = bookSelected.Publisher, RentalDuration = bookRent.RentalDuration, Status = bookRent.Status.ToString(), Title = bookSelected.Title, UserID = userDetails.ToList()[0].Id }; return(model); }
public ActionResult Decline(BookRentalViewModel model) { if (model.ID == 0) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } if (ModelState.IsValid) { BookRental bookRent = db.BookRentals.Find(model.ID); bookRent.Status = BookRental.StatusEnum.Rejected; //find book from database Book bookInDb = db.Books.Find(bookRent.BookID); //update the availability bookInDb.Availability += 1; db.SaveChanges(); } return(RedirectToAction("Index")); }
public ActionResult Rent() { //wyciagnac id usera //pojechac po petli z carta //stworzyc nowe BookRental //dodac do bazy var cart = (List <int>)Session["Cart"]; if (cart == null || !cart.Any()) { return(View("EmptyCart")); } string ADusername = User.Identity.Name.ToString(); string guid = User.Identity.GetUserId(); var books = db.Books.AsQueryable(); var libUser = db.Users.AsQueryable().FirstOrDefault(x => x.Guid == guid); var dateRental = DateTime.Now; var dateReturn = dateRental.AddMonths(3); foreach (var cartBook in cart) { var copy = books.Where(x => x.Id == cartBook).Select(book => book.BookCopies.FirstOrDefault(bookCopy => !bookCopy.BookRentals.Any(r => r.IsFinished))).FirstOrDefault(); var bookRental = new BookRental { BookCopyId = copy.Id, UserId = libUser.Id, DateRental = dateRental, DateReturn = dateReturn, EmployeeId = 1, IsFinished = true, }; } return(RedirectToAction(nameof(this.Index))); }
public ActionResult Return(BookRentalViewModel model) { if (model.ID == 0) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } if (ModelState.IsValid) { BookRental bookRent = db.BookRentals.Find(model.ID); bookRent.Status = BookRental.StatusEnum.Closed; //allows admin to add additional charge bookRent.AdditionalCharge = model.AdditionalCharge; Book bookInDb = db.Books.Find(bookRent.BookID); //update book availability bookInDb.Availability += 1; db.SaveChanges(); } return(RedirectToAction("Index")); }
public ActionResult Create(BookRentalViewModel bookRent) { if (ModelState.IsValid) { //retrieve email var email = bookRent.Email; //retrieve details var userDetails = from u in db.Users where u.Email.Equals(email) select new { u.Id, u.FirstName, u.LastName, u.BirthDate }; //store isbn in variable var ISBN = bookRent.ISBN; Book bookSelected = db.Books.Where(b => b.ISBN == ISBN).FirstOrDefault(); var rentalDuration = bookRent.RentalDuration; var chargeRate = from u in db.Users join m in db.Memberships on u.MembershipID equals m.ID where u.Email.Equals(email) select new { m.ChargeRateSixMonth, m.ChargeRateTwelveMonth }; var sixMonthRental = Convert.ToDouble(bookSelected.Price) * Convert.ToDouble(chargeRate.ToList()[0].ChargeRateSixMonth) / 100; var twelveMonthRental = Convert.ToDouble(bookSelected.Price) * Convert.ToDouble(chargeRate.ToList()[0].ChargeRateTwelveMonth) / 100; double rentalPr = 0; if (bookRent.RentalDuration == StaticDetails.TwelveMonthCount) { rentalPr = twelveMonthRental; } else { rentalPr = sixMonthRental; } BookRentalViewModel model = new BookRentalViewModel { BookID = bookSelected.ID, RentalPrice = rentalPr, Price = bookSelected.Price, Pages = bookSelected.Pages, FirstName = userDetails.ToList()[0].FirstName, LastName = userDetails.ToList()[0].LastName, BirthDate = userDetails.ToList()[0].BirthDate, ScheduledReturnDate = bookRent.ScheduledReturnDate, Author = bookSelected.Author, Availability = bookSelected.Availability, DateAdded = bookSelected.DateAdded, Description = bookSelected.Description, Email = email, GenreID = bookRent.GenreID, Genre = db.Genres.Where(g => g.ID.Equals(bookSelected.GenreID)).First(), ISBN = bookSelected.ISBN, ImageUrl = bookSelected.ImageUrl, PublicationDate = bookSelected.PublicationDate, Publisher = bookSelected.Publisher, RentalDuration = bookRent.RentalDuration, Status = BookRental.StatusEnum.Requested.ToString(), Title = bookSelected.Title, UserID = userDetails.ToList()[0].Id, RentalPriceSixMonth = sixMonthRental, RentalPriceTwelveMonth = twelveMonthRental }; BookRental modelToAddToDb = new BookRental { BookID = bookSelected.ID, RentalPrice = rentalPr, ScheduledReturnDate = bookRent.ScheduledReturnDate, RentalDuration = bookRent.RentalDuration, Status = BookRental.StatusEnum.Approved, UserID = userDetails.ToList()[0].Id }; //decreases availability when user requests a book bookSelected.Availability -= 1; db.BookRentals.Add(modelToAddToDb); db.SaveChanges(); return(RedirectToAction("Index")); } return(View()); }
public IActionResult AddBook(BookRental payload) { return(Ok(service.AddBook(payload))); }