public void ReinitialiseObjects() { bookInfo = null; bookCatalogue = null; loanTrans = null; transDetail = null; bookID = 0; transID = 0; bookStatus = ""; }
public void DefineTransactionObject() { transDetail = context.TransDetails.Where(x => x.BookID == bookID).OrderByDescending(x => x.Sn).First(); loanTrans = context.LoanTrans.Where(x => x.TransID == transDetail.TransID).First(); transID = loanTrans.TransID; }
private void buttonLoan_Click(object sender, EventArgs e) { using (TransactionScope loanTransScope = new TransactionScope()) { int currentTransID = context.LoanTrans.OrderByDescending(x => x.TransID).First().TransID; try { if (IsOverLoanLimit(availableLimit, booksToLoan.Count()) == true) { ((FormMain)this.MdiParent).SetToolStripLabelText = "Number of Books has exceeded borrowing limit."; return; } if (IsBookAlreadyOut(context.BookInfoes.Where(x => x.BookID == bookID).Select(x => x.Status).First().ToString()) == true) { ((FormMain)this.MdiParent).SetToolStripLabelText = "Invalid Request. Book is already on loan."; return; } } catch (InvalidOperationException) { ((FormMain)this.MdiParent).SetToolStripLabelText = "Invalid Operation!"; } try { Member memberinfo = context.Members.Where(x => x.MemberID == memberID).First(); } catch (InvalidOperationException) { ((FormMain)this.MdiParent).SetToolStripLabelText = "Invalid operation. Please make sure enter a valid Member ID and Book ID!"; return; } int createTransID = ++currentTransID; //need to have some function to bind bookinfo to the database foreach (BookInfo i in booksToLoan) { BookInfo bookPersistence = context.BookInfoes.Where(x => x.BookID == i.BookID).First(); bookPersistence.Status = "OUT"; BookCatalogue bookInvenPersis = context.BookCatalogues.Where(x => x.ISBN == bookPersistence.ISBN).First(); bookInvenPersis.StockInLibrary = --bookInvenPersis.StockInLibrary; bookInvenPersis.NumberOnLoan = ++bookInvenPersis.NumberOnLoan; } //create new loan transaction LoanTran newTrans = new LoanTran(); newTrans.TransID = createTransID; newTrans.MemberID = memberID; newTrans.NumberOfBooks = booksToLoan.Count(); context.LoanTrans.Add(newTrans); //Create new transDetails information foreach (BookInfo i in booksToLoan) { int newSn = int.Parse(context.TransDetails.OrderByDescending(x => x.Sn).OrderByDescending(x => x.Sn).First().Sn.ToString()); TransDetail transDetails = new TransDetail(); transDetails.Sn = ++newSn; transDetails.BookID = i.BookID; try { if (dateTimeLoanDatePicker.Value.Date > DateTime.Today || dateTimeDueDatePicker.Value < dateTimeLoanDatePicker.Value || dateTimeDueDatePicker.Value.Date < DateTime.Today) { throw new LoanException(); } } catch (LoanException) { ((FormMain)this.MdiParent).SetToolStripLabelText = "Invalid Loan or Due Date"; return; } transDetails.LoanDate = dateTimeLoanDatePicker.Value.Date; transDetails.DueDate = dateTimeDueDatePicker.Value.Date; transDetails.TransID = currentTransID; context.TransDetails.Add(transDetails); context.SaveChanges(); } context.SaveChanges(); ((FormMain)this.MdiParent).SetToolStripLabelText = "Loan Processed Succesfully!"; booksToLoan.Clear(); memberInfoClear(); clearBookInfo(); } }