Ejemplo n.º 1
0
        //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.");
            }
        }
Ejemplo n.º 2
0
        // 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...");
                    }
                }
            }
        }