//Delete booking codes private void buttonDeleteBooking_Click(object sender, EventArgs e) { int timeslot = Convert.ToInt32(this.labelFillTimeSlotDeleteBooking.Text); int transID = Convert.ToInt32(this.labelFillTransactionIDDeleteBooking.Text); int TempID = 0; //Creates an entry for Cancel booking record Transaction DeleteTrans = new Transaction(); DeleteTrans.NUSID = this.labelFillNusIDDeleteBooking.Text; DeleteTrans.FacilityID = this.labelFillFacilityIDDeleteBooking.Text; DeleteTrans.Activity = this.labelFillActivityDeleteBooking.Text; DeleteTrans.BookingDateTime = DateTime.Parse(this.labelFillBookDateDeleteBooking.Text); DeleteTrans.TransDateTime = DateTime.Now; DeleteTrans.TimeSlot = timeslot; DeleteTrans.CancelRef = transID; DeleteTrans.TransactionType = "Cancel"; try { SA46Team09BEntities context = new SA46Team09BEntities(); context.Transactions.Add(DeleteTrans); context.SaveChanges(); //This is to find and set the transaction ID for the new CANCEL entry to TempID var RefTransQuery = from x in context.Transactions where x.CancelRef == transID select x; List <Transaction> RefTrans = RefTransQuery.ToList <Transaction>(); TempID = RefTrans[0].TransactionID; // This is to find and set the Cancelref with the cancel booking trans ID // With this step done, the booking and cancellation will now have a CROSS-Reference and this can be used as a filter for refresh bookings in the cancellation screen (to ensure no records are deleted twice). var RefTransQuery2 = from x in context.Transactions where x.TransactionID == transID select x; List <Transaction> RefTrans2 = RefTransQuery2.ToList <Transaction>(); RefTrans2[0].CancelRef = TempID; AvailabilityCheck DeleteAvail = (AvailabilityCheck)context.AvailabilityChecks.Where(M => M.TransactionID == transID).First(); context.AvailabilityChecks.Remove(DeleteAvail); context.SaveChanges(); resetscreen(); ((MAIN)MdiParent).UpdateStatusLabel("Delete Transaction and Availability entry successfully added"); } catch { MessageBox.Show("Deletion Error. Transaction ID probably did not existed or connection errors. Please check again."); } }
// This is the block code for booking. The booking process creates an entry at the Transaction table (for recording) + an entry at AvailabilityCheck table (for tracking of availability). private void BookingCreation(string NUSID) { bool booksuccess = false; SA46Team09BEntities context = new SA46Team09BEntities(); if (MemberCheck()) // Only allow a booking if user is member { if (CheckMemberBooking() == true) { Transaction TempTransaction = new Transaction(); TempTransaction.NUSID = NUSID; TempTransaction.Activity = TransactionList[BookingArrayRef].Activity.ToUpper(); TempTransaction.FacilityID = TransactionList[BookingArrayRef].FacilityID.ToUpper(); TempTransaction.BookingDateTime = TransactionList[BookingArrayRef].BookingDateTime; TempTransaction.TransDateTime = DateTime.Now; TempTransaction.TimeSlot = TransactionList[BookingArrayRef].TimeSlot; TempTransaction.TransactionType = "Book"; TempTransaction.CancelRef = 0; try { context.Transactions.Add(TempTransaction); context.SaveChanges(); booksuccess = true; } catch { MessageBox.Show("Booking Error. Please check again."); ((MAIN)MdiParent).UpdateStatusLabel("Error encounter in last transaction..."); booksuccess = false; } } //Thread.Sleep(2000); // Only create Availability Entry if the booking creation is successful if (booksuccess == true) { var queryTransactions = from x in context.Transactions select x; List <Transaction> NewList = queryTransactions.ToList <Transaction>(); Transaction LastRecord = NewList.OrderByDescending(Transaction => Transaction.TransactionID).First(); AvailabilityCheck AvailabilityBlock = new AvailabilityCheck(); AvailabilityBlock.BookingDate = TransactionList[BookingArrayRef].BookingDateTime; AvailabilityBlock.FacilityID = TransactionList[BookingArrayRef].FacilityID; AvailabilityBlock.TimeSlot = TransactionList[BookingArrayRef].TimeSlot; AvailabilityBlock.TransactionID = LastRecord.TransactionID; AvailabilityBlock.Activity = TransactionList[BookingArrayRef].Activity; AvailabilityBlock.NUSID = NUSID; try { context.AvailabilityChecks.Add(AvailabilityBlock); context.SaveChanges(); ((MAIN)MdiParent).UpdateStatusLabel("Transaction record and Availability entry Added"); } catch { MessageBox.Show("Booking Error. Please check again."); ((MAIN)MdiParent).UpdateStatusLabel("Error encounter in last transaction..."); } } } }