protected void returnBookBtn_Click(object sender, EventArgs e) { if (userListBorBook.SelectedValue != null) { string username = listBoxUser.SelectedValue; var user = db.Users.FirstOrDefault(u => u.userName == username); if (user == null) { return; } int BBid = int.Parse(userListBorBook.SelectedValue); BorBook BB = db.BorBooks.FirstOrDefault(b => b.id == BBid); if (BB == null) { return; } user.borBooks.Remove(BB); BB.state = 0; BB.User = null; // Kiểm tra borBook ở location nào if (BB.LocationId != curAdmin.LocationId) { // Người dùng trả sách ở nơi khác db.Locations.FirstOrDefault(lc => lc.id == BB.LocationId).BorBooks.Remove(BB); db.Locations.FirstOrDefault(lc => lc.id == curAdmin.LocationId).BorBooks.Add(BB); } db.SaveChanges(); returnBookBtn.Enabled = false; //load lai danh sách sách người dùng mượn if (user.borBooks.Count > 0 && user.borBooks != null) { userListBorBook.DataSource = user.borBooks.Select( bb => new BorBookItem { id = bb.id, name = db.Books.FirstOrDefault(b => b.bookId == bb.BookId).bookName, } ).ToList(); } else { userListBorBook.DataSource = new List <BorBookItem>(); } userListBorBook.DataBind(); } reloadUserInfo(); }
// PreView Book trong ***LISTUSER *** protected void userListBorBook_SelectedIndexChanged(object sender, EventArgs e) { returnBookBtn.Enabled = true; if (userListBorBook.SelectedValue == "") { return; } int idBorBook = int.Parse(userListBorBook.SelectedValue); // chắc chắn có BorBook borBook = db.BorBooks.FirstOrDefault(bb => bb.id == idBorBook); Book book = db.Books.FirstOrDefault(b => b.bookId == borBook.BookId); previewUserBookPic.ImageUrl = "Images/" + book.imagePath; reloadUserInfo(); // Load lại danh sách "sách đang mượn" của người dùng }
protected void borrowBtn_Click(object sender, EventArgs e) { List <String> message = new List <string>(); if (listBorUser.SelectedValue == "") { message.Add("Hãy chọn người mượn!"); borrowMessages.DataSource = message; borrowMessages.DataBind(); return; } if (listBorBook.SelectedValue == "") { message.Add("Hãy chọn sách mượn!"); borrowMessages.DataSource = message; borrowMessages.DataBind(); return; } string userName = listBorUser.SelectedValue; int bookId = int.Parse(listBorBook.SelectedValue); User user = db.Users.FirstOrDefault(u => u.userName == userName); Book curBook = db.Books.FirstOrDefault(book => book.bookId == bookId); // Kiểm tra đã mượn sách này hay chưa ! if (user.borBooks.Any(bb => bb.BookId == curBook.bookId)) { message.Add("Bạn đã mượn sách này rồi !"); } // kiểm tra số lượng sách người dùng đang mượn ! int borrowedBook = user.borBooks.Count(bb => bb.state == 2); if (borrowedBook == Book.limitBorBook) { message.Add("Bạn đã mượn " + borrowedBook + "quyển sách, hãy trả sách để có thể mượn thêm sách !"); } //danh sách sách còn lại của sách này // chỉ được tính sách ở location của Admin đang lưu trữ List <BorBook> avableBorBook = db.BorBooks .Where(bb => bb.state == 0 && bb.BookId == curBook.bookId && bb.Location.id == curAdmin.Location.id ).ToList(); // nếu nó rỗng tức không còn loại sách này if (avableBorBook.Count == 0) { message.Add("Xin lỗi sách này đã hết !"); } // trường hợp người dùng đã đặt trước ?? th đặc biệt BorBook tmp = user.borBooks.FirstOrDefault(bb => bb.BookId == bookId && bb.state == 1); if (tmp != null) { // không cần xét dk số lượng sách đã mượn vì, k tăng thêm chỉ chỉnh sách's state lên 2 message.Clear(); tmp.state = 2; int day = int.Parse(returnDate.SelectedValue); tmp.borrowDate = DateTime.Now; tmp.returnDate = tmp.borrowDate.AddDays(day * 7); db.SaveChanges(); message.Add("[Người dùng đã mượn trước], trạng thái sách chuyển thành 'đang được mượn' !"); // cập nhật lại danh sách book reloadBorBook(ref user); borrowMessages.DataSource = message; borrowMessages.DataBind(); return; } // Nếu không gặp 2 lỗi trên cho phép mượn if (message.Count == 0) { BorBook BB = avableBorBook[0]; //BB = db.BorBooks.FirstOrDefault(bb => bb.id == BB.id); int day = int.Parse(returnDate.SelectedValue); BB.borrowDate = DateTime.Now; BB.returnDate = BB.borrowDate.AddDays(day * 7); // set state =3 BB.state = 2; BB.Book = curBook; user.borBooks.Add(BB); message.Add("Sách được mượn bởi tài khoản admin, trạng thái sách chuyển thành 'đang được mượn' !"); db.SaveChanges(); reloadBorBook(ref user); } // Gán và hiển thị lỗi - tin nhắn cho người dùng borrowMessages.DataSource = message; borrowMessages.DataBind(); }
protected void borrowBtn_Click(object sender, EventArgs e) { List <String> message = new List <string>(); // Kiểm tra đăng nhập curUser = (User)Session["user"]; if (curUser == null) { message.Add("Bạn cần đăng nhập trước khi đặt mượn sách !"); errorBorrow.DataSource = message; errorBorrow.DataBind(); return; } // không thể thao thác thêm borBook vào User được tạo ra từ 2 context khác nhau // bắt buộc phải dùng User được lấy ra từ db ở hiện tại // cũng k thể dùng Session lưu context , như vậy context sẽ k được cập nhật // Tốt hơn nên tạo Context mới ở những thao tác ntn db = new LibraryContext(); curUser = db.Users.FirstOrDefault(user => user.userName == curUser.userName); // Kiểm tra xem người dùng đã đặt sách này chưa BorBook borBook = curUser.borBooks.FirstOrDefault(bb => bb.BookId == curBook.bookId); // tức người dùng có đặt/mượn sách rồi if (borBook != null) { if (borBook.state == 1) { // HỦY ĐẶT // nếu đã đặt thì hủy đặt curUser.borBooks.Remove(borBook); borBook.state = 0; db.SaveChanges(); borrowBtn.Text = "Đặt mượn sách này"; borrowBtn.Style.Add("background-color", ""); locationLabel.Visible = true; listLocation.Visible = true; //red!important; borrowBtn.DataBind(); // *** cập nhật CurBook vì borBook ở trên vừa thay đổi - borBook là BorBook của curBook curBook = db.Books.FirstOrDefault(book => book.bookId == curBook.bookId); parseLocation(); updateBorBook(); message.Add("Hủy đặt sách thành công !"); errorBorrow.DataSource = message; errorBorrow.DataBind(); locationLabel.Visible = true; listLocation.Visible = true; return; } ; // Kiểm tra người dùng đã mượn sách này hay chưa, hoặc đã đặt trước sách này hay chưa // never happen // pageload got it if (borBook.state == 2) { message.Add("Bạn đã mượn trước sách này rồi !"); } } if (listLocation.SelectedIndex == -1) { message.Add("Hãy chọn địa điểm!"); errorBorrow.DataSource = message; errorBorrow.DataBind(); return; } int lcId = int.Parse(listLocation.SelectedValue); // Kiểm tra số lượng sách người dùng đã đặt & mượn if (curUser.borBooks.Count == Book.limitBorBook) { message.Add("Bạn đã đặt/mượn giới hạn " + Book.limitBorBook + " sách !"); errorBorrow.DataSource = message; errorBorrow.DataBind(); } else { // Kiểm tra số lượng sách còn lại BorBook tmp = db.BorBooks.FirstOrDefault(bb => bb.BookId == curBook.bookId && bb.state == 0 && bb.LocationId == lcId); if (tmp != null) { // nếu có sách cho người dùng mượn và chuyển sách tmp.User = curUser; tmp.state = 1; curUser.borBooks.Add(tmp); message.Add("Đặt mượn trước thành công!"); db.SaveChanges(); locationLabel.Visible = false; listLocation.Visible = false; // *** cập nhật CurBook vì borBook ở trên vừa thay đổi - borBook là BorBook của curBook curBook = db.Books.FirstOrDefault(book => book.bookId == curBook.bookId); // ĐẶT MƯỢN THÀNH CÔNG => Cập nhật danh sách BorBook updateBorBook(); parseLocation(); borrowBtn.Text = "Hủy đặt trước"; borrowBtn.Style.Add("background-color", "red !important"); //red!important; borrowBtn.DataBind(); } else { message.Add("Xin lỗi, sách này đã được mượn hết!"); } } errorBorrow.DataSource = message; errorBorrow.DataBind(); }