private bool CompleteTrackingTransaction(int TrackingTransactionID)
        {
            TrackingTransaction trackingTransaction = db.TrackingTransactions.Find(TrackingTransactionID);

            trackingTransaction.TimeCompleted = DateTime.Now;

            try
            {
                db.SaveChanges();
            }
            catch (System.Data.Entity.Validation.DbEntityValidationException e)
            {
                foreach (var eve in e.EntityValidationErrors)
                {
                    Console.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
                                      eve.Entry.Entity.GetType().Name, eve.Entry.State);
                    foreach (var ve in eve.ValidationErrors)
                    {
                        System.Diagnostics.Debug.WriteLine("- Property: \"{0}\", Error: \"{1}\"",
                                                           ve.PropertyName, ve.ErrorMessage);
                    }
                }
                return(false);
            }
            return(true);
        }
        private bool InitiateTrackingTransaction(int MemberInGameID)
        {
            TrackingTransaction trackingTransaction = new TrackingTransaction();

            trackingTransaction.MemberInGameID    = MemberInGameID;
            trackingTransaction.TimeInitiated     = DateTime.Now;
            trackingTransaction.DurationRemaining = 90;
            trackingTransaction.DateInserted      = DateTime.Now;
            trackingTransaction.DateModified      = DateTime.Now;

            db.TrackingTransactions.Add(trackingTransaction);

            try
            {
                db.SaveChanges();
            }
            catch (System.Data.Entity.Validation.DbEntityValidationException e)
            {
                foreach (var eve in e.EntityValidationErrors)
                {
                    Console.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
                                      eve.Entry.Entity.GetType().Name, eve.Entry.State);
                    foreach (var ve in eve.ValidationErrors)
                    {
                        System.Diagnostics.Debug.WriteLine("- Property: \"{0}\", Error: \"{1}\"",
                                                           ve.PropertyName, ve.ErrorMessage);
                    }
                }
                return(false);
            }
            return(true);
        }
        private bool UpdateRemainingDuration(int TrackingTransactionID)
        {
            TrackingTransaction trackingTransaction = db.TrackingTransactions.Find(TrackingTransactionID);

            if (trackingTransaction.TimeResumed != null)
            {
                DateTime TimePaused  = (DateTime)trackingTransaction.TimePaused;
                DateTime TimeResumed = (DateTime)trackingTransaction.TimeResumed;
                float    difference  = (float)TimePaused.Subtract(TimeResumed).TotalSeconds;
                difference = (difference < 0) ? (float)trackingTransaction.DurationRemaining : difference;
                trackingTransaction.DurationRemaining = trackingTransaction.DurationRemaining - difference;
            }
            else
            {
                DateTime TimePaused    = (DateTime)trackingTransaction.TimePaused;
                DateTime TimeInitiated = (DateTime)trackingTransaction.TimeInitiated;
                float    difference    = (float)TimePaused.Subtract(TimeInitiated).TotalSeconds;
                trackingTransaction.DurationRemaining = trackingTransaction.DurationRemaining - difference;
            }

            if (trackingTransaction.DurationRemaining < 0)
            {
                trackingTransaction.DurationRemaining = 0;
            }

            try
            {
                db.SaveChanges();
            }
            catch (System.Data.Entity.Validation.DbEntityValidationException e)
            {
                foreach (var eve in e.EntityValidationErrors)
                {
                    Console.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
                                      eve.Entry.Entity.GetType().Name, eve.Entry.State);
                    foreach (var ve in eve.ValidationErrors)
                    {
                        System.Diagnostics.Debug.WriteLine("- Property: \"{0}\", Error: \"{1}\"",
                                                           ve.PropertyName, ve.ErrorMessage);
                    }
                }
                return(false);
            }
            return(true);
        }
        private int GetTrackingTransaction(int MemberInGameID)
        {
            TrackingTransaction trackingTransaction = new TrackingTransaction();
            var trackingTransactions = from tt in db.TrackingTransactions where tt.MemberInGameID == MemberInGameID select tt;

            foreach (var trackingTx in trackingTransactions)
            {
                trackingTransaction = (TrackingTransaction)trackingTx;
                break;
            }

            // -1 - no tracking transaction found.
            if (trackingTransaction.MemberInGameID == MemberInGameID)
            {
                return(trackingTransaction.TrackingTransactionID);
            }
            return(-1);
        }
        private int GetRemainingDuration(int TrackingTransactionID)
        {
            TrackingTransaction trackingTransaction = db.TrackingTransactions.Find(TrackingTransactionID);

            return((int)trackingTransaction.DurationRemaining);
        }