Exemple #1
0
 public static int NumberOfGoals()
 {
     DataClassesDataContext db = new DataClassesDataContext();
     var query = (from g in db.users
                  select g).Count();
     return query;
 }
Exemple #2
0
 public static List<WalkLogModel> FetchAll(int id)
 {
     DataClassesDataContext db = new DataClassesDataContext();
     var query = (from g in db.walk_logs
                  where g.log_user == id
                  select new WalkLogModel(g));
     return query.ToList();
 }
Exemple #3
0
        public static void ClearUserCache(ProfileModel user)
        {
            DataClassesDataContext db = new DataClassesDataContext();
            var query = from g in db.walk_logs
                        where g.log_user == user.UserCtx.user_id &&
                              g.updated_at < user.UserCtx.hv_last_sync_time
                        select g;

            foreach (var info in query)
            {
                db.walk_logs.DeleteOnSubmit(info);
            }

            db.SubmitChanges();
        }
Exemple #4
0
 protected void Button1_Click(object sender, EventArgs e)
 {
     // Lets put the secret sync row in the table only if its not present
     DataClassesDataContext db = new DataClassesDataContext();
     var query = (from g in db.sync_settings
                  where g.sync_job_id == Constants.AppSyncRowKey
                  select g).FirstOrDefault();
     if (query == null)
     {
         sync_setting startRow = new sync_setting();
         startRow.sync_job_id = Constants.AppSyncRowKey;
         startRow.sync_status = Constants.SyncNotStarted;
         startRow.sync_frequency_hours = Constants.SyncFrequency;
         startRow.sync_server_name = this.Server.MachineName;
         startRow.sync_timestamp = DateTime.MinValue;
         db.GetTable<sync_setting>().InsertOnSubmit(startRow);
         db.SubmitChanges();
     }
 }
Exemple #5
0
 public static WalkLogModel Fetch(int id)
 {
     DataClassesDataContext db = new DataClassesDataContext();
     walk_log t;
     var query = (from g in db.walk_logs
                  where g.log_user == id
                  select g);
     if (query.ToList().Count == 0)
     {
         t = new walk_log();
         t.log_user = id;
         db.GetTable<walk_log>().InsertOnSubmit(t);
     }
     else
     {
         t = query.First();
     }
     WalkLogModel p = new WalkLogModel(t);
     return p;
 }
Exemple #6
0
 public static GoalModel Fetch(int userId)
 {
     DataClassesDataContext db = new DataClassesDataContext();
     user t;
     var query = (from g in db.users
                  where g.user_id == userId
                  select g);
     if (query.ToList().Count == 0)
     {
         t = new user();
         t.user_id = userId;
         DatabaseHelper.Insert<user>(t);
         db.SubmitChanges();
     }
     else
     {
         t = query.First();
     }
     GoalModel goal = new GoalModel(t);
     return goal;
 }
Exemple #7
0
        /// <summary>
        /// We perform a database update to resolve which server should go first.
        /// </summary>
        /// <returns>Go or No go decision</returns>
        public static bool CheckToPerformHealthVaultSync(string serverName,
            out DateTime? lastUpdatedDate)
        {
            DataClassesDataContext db = new DataClassesDataContext();
            var query = (from g in db.sync_settings
                         where g.sync_job_id == Constants.AppSyncRowKey
                         select g).FirstOrDefault();
            if (query != null)
            {
                lastUpdatedDate =
                    (query.sync_id == Constants.SyncFinished) ?
                    query.sync_timestamp :
                    DateTime.MinValue;

                // Check when was the last sync performed
                if ((DateTime.Now - query.sync_timestamp).TotalMinutes >
                     (query.sync_frequency_hours * 60))
                {
                    // Sync is long overdue or the previous process was zombied
                    // lets try start it
                    query.sync_server_name = serverName;
                    query.sync_timestamp = DateTime.Now;
                    query.sync_status = Constants.SyncStarted;
                    try
                    {
                        db.SubmitChanges();
                    }
                    catch
                    {
                        // Some one changed the data under me!
                        return false;
                    }
                    // Viola! we have the lock!
                    return true;
                }
            }
            lastUpdatedDate = null;
            return false;
        }
Exemple #8
0
 public static void Insert(walk_log t)
 {
     DataClassesDataContext db = new DataClassesDataContext();
     t.updated_at = DateTime.Now;
     db.GetTable<walk_log>().InsertOnSubmit(t);
     db.SubmitChanges();
 }
Exemple #9
0
        public void Save()
        {
            DataClassesDataContext db2 = new DataClassesDataContext();
            var user = (from g in db2.users
                        where g.user_id == this.data.user_id
                        select g).First();

            DataClassesDataContext db = new DataClassesDataContext();
            var goal = (from g in db.users
                        where g.user_id == this.data.user_id
                        select g).First();

            goal.daily_goal_steps = this.data.daily_goal_steps;

            if (goal.daily_goal_steps.HasValue)
            {
                if (!(goal.daily_goal_distance.HasValue) || (goal.daily_goal_distance == 0))
                    goal.daily_goal_distance = DataConversion.GetDistanceFromSteps(user.user_stride, goal.daily_goal_steps.Value);
                else
                    goal.daily_goal_distance = this.data.daily_goal_distance;

                if (!(goal.daily_goal_calories.HasValue) || (goal.daily_goal_calories == 0))
                    goal.daily_goal_calories = DataConversion.GetEnergyFromDistanceAndWeight(goal.daily_goal_distance.Value, user.user_weight);
                else
                    goal.daily_goal_calories = this.data.daily_goal_calories;
            }

            goal.daily_goal_aerobic_steps = this.data.daily_goal_aerobic_steps;

            db.SubmitChanges();
        }
Exemple #10
0
 public static long? TotalStepsWalked()
 {
     DataClassesDataContext db = new DataClassesDataContext();
     var query = (from g in db.walk_logs
                  select g.log_steps).Sum();
     if (query.HasValue)
         return (long)query;
     else
         return 0;
 }
Exemple #11
0
 public static void Save(int userId, DateTime date,
     long steps, long aerobicSteps)
 {
     DataClassesDataContext db = new DataClassesDataContext();
     walk_log t = new walk_log();
     t.log_user = userId;
     t.log_date = date;
     t.log_steps = steps;
     t.log_aerobicsteps = aerobicSteps;
     db.GetTable<walk_log>().InsertOnSubmit(t);
     db.SubmitChanges();
 }
Exemple #12
0
        public static void ProcessTotals(int userId)
        {
            long weekly_steps = 0;
            long monthly_steps = 0;
            long annual_steps = 0;
            long total_steps = 0;
            float weekly_calories = 0;
            float weekly_distance = 0;
            float total_distance = 0;

            DataClassesDataContext db = new DataClassesDataContext();
            //total steps
            var query = (from g in db.walk_logs
                         where g.log_user == userId
                         select g.log_steps).Sum();
            if (query != null)
                total_steps = (long)query;
            //weekly steps
            query = (from g in db.walk_logs
                     where ((g.log_user == userId) &&
                     (g.log_date >= (DateTime.Now.AddDays(-7))) && (g.log_date <= DateTime.Now))
                     select g.log_steps).Sum();
            if (query != null)
                weekly_steps = (long)query;

            //monthly steps
            query = (from g in db.walk_logs
                     where ((g.log_user == userId) &&
                     (g.log_date >= (DateTime.Now.AddDays(-30))) && (g.log_date <= DateTime.Now))
                     select g.log_steps).Sum();
            if (query != null)
                monthly_steps = (long)query;

            //annual steps
            query = (from g in db.walk_logs
                     where ((g.log_user == userId) &&
                     (g.log_date >= (DateTime.Now.AddDays(-365))) && (g.log_date <= DateTime.Now))
                     select g.log_steps).Sum();
            if (query != null)
                annual_steps = (long)query;

            //weekly calories
            var query2 = (from g in db.walk_logs
                          where ((g.log_user == userId) &&
                          (g.log_date >= (DateTime.Now.AddDays(-7))) && (g.log_date <= DateTime.Now))
                          select g.log_calories).Sum();
            if (query2 != null)
                weekly_calories = (float)query2;

            //weekly distance
            query2 = (from g in db.walk_logs
                      where ((g.log_user == userId) &&
                      (g.log_date >= (DateTime.Now.AddDays(-7))) && (g.log_date <= DateTime.Now))
                      select g.log_distance).Sum();
            if (query2 != null)
                weekly_distance = (float)query2;

            //total distance
            query2 = (from g in db.walk_logs
                      where g.log_user == userId
                      select g.log_distance).Sum();
            if (query2 != null)
                total_distance = (long)query2;

            //Store calculated totals in the user table
            DataClassesDataContext db2 = new DataClassesDataContext();
            var user = (from g in db2.users
                        where g.user_id == userId
                        select g).First();
            user.user_total_steps = (int)total_steps;
            user.user_annual_steps = (int)annual_steps;
            user.user_monthly_steps = (int)monthly_steps;
            user.user_weekly_steps = (int)weekly_steps;
            user.user_weekly_calories = (float)weekly_calories;
            user.user_weekly_distance = (float)weekly_distance;
            user.user_total_distance = (float)total_distance;
            user.updated_at = DateTime.Now;
            user.hv_sync_status = Constants.SyncFinished;
            db2.SubmitChanges();
        }
Exemple #13
0
 public static void ProcessAllTotals()
 {
     DataClassesDataContext db3 = new DataClassesDataContext();
     var userQuery = (from g in db3.users
                      select g);
     foreach (var entry in userQuery)
     {
         ProfileModel prof = ProfileModel.Fetch(entry.hv_recordid);
         HVSync.OfflineSyncUser(prof);
     }
 }
Exemple #14
0
        private static void ProcessStepsHealthItem(HealthRecordItem item, ProfileModel profile)
        {
            if (item.TypeId.Equals(AerobicSession.TypeId))
            {
                AerobicSession aerobic = (AerobicSession)item;

                // Only add items with Steps
                if (aerobic.Session.NumberOfSteps > 0)
                {

                    // Is Step in Cache ?
                    DataClassesDataContext db = new DataClassesDataContext();
                    var query = (from g in db.walk_logs
                                 where ((g.log_user == profile.UserCtx.user_id) &&
                                       (g.hv_item_id == item.Key.Id))
                                 select g).SingleOrDefault();
                    // Update or Insert?
                    if (query != null)
                    {
                        query =
                            PopulateWalkLogFromHV(
                                query, aerobic, profile);
                        db.SubmitChanges();
                    }
                    else
                    {
                        walk_log entity = new walk_log();
                        entity = PopulateWalkLogFromHV(
                            entity, aerobic, profile);
                        WalkLogModel.Insert(entity);
                    }
                }

            }
            else if (item.TypeId.Equals(Exercise.TypeId))
            {
                Exercise exercise = (Exercise)item;

                // Only add items with Steps
                double numberOfSteps = 0;
                try
                {
                    numberOfSteps =
                        exercise.Details[ExerciseDetail.Steps_count].Value.Value;
                }
                catch
                {
                    WlkMiTracer.Instance.Log("HVSync.cs:ProcessStepsHealthItem", WlkMiEvent.AppDomain, WlkMiCat.Warning,
                        string.Format("UserId {0} has no pedometer data in HV item", profile.UserCtx.user_id));
                    return;
                }

                if (numberOfSteps > 0)
                {

                    // Is Step in Cache ?
                    DataClassesDataContext db = new DataClassesDataContext();
                    var query = (from g in db.walk_logs
                                 where ((g.log_user == profile.UserCtx.user_id) &&
                                       (g.hv_item_id == item.Key.Id))
                                 select g).SingleOrDefault();
                    // Update or Insert?
                    if (query != null)
                    {
                        query =
                            PopulateWalkLogFromHV(
                                query, exercise, profile);
                        db.SubmitChanges();
                    }
                    else
                    {
                        walk_log entity = new walk_log();
                        entity = PopulateWalkLogFromHV(
                            entity, exercise, profile);
                        WalkLogModel.Insert(entity);
                    }
                }
            }
        }
Exemple #15
0
        public static Dictionary<string, string> FetchSteps(string item, int id, string length)
        {
            Time periodSpan = (Time)Enum.Parse(typeof(Time), length);
            Item itemType = (Item)Enum.Parse(typeof(Item), item);
            DataClassesDataContext db = new DataClassesDataContext();
            switch (periodSpan)
            {
                case Time.Week:
                    {
                        Dictionary<string, string> dict = new Dictionary<string, string>();
                        var query = (from g in db.walk_logs
                                     where ((g.log_user == id) && (g.log_date >= (DateTime.Now.AddDays(-7))) && (g.log_date <= DateTime.Now))
                                     orderby g.log_date
                                     select g);
                        if (query.Count() == 0) return null;
                        double? sum = 0;
                        for (int i = 6; i >= 0; i--)
                        {
                            sum = 0;
                            foreach (var entry in query)
                            {
                                if (entry.log_date == DateTime.Now.Date.AddDays(-i))
                                {
                                    switch (itemType)
                                    {
                                        case Item.AerobicSteps:
                                            {
                                                if (entry.log_aerobicsteps.HasValue)
                                                    sum += (double?)entry.log_aerobicsteps;
                                                break;
                                            }
                                        case Item.Calories:
                                            {
                                                if (entry.log_calories.HasValue)
                                                    sum += entry.log_calories;
                                                break;
                                            }
                                        case Item.Distance:
                                            {
                                                if (entry.log_distance.HasValue)
                                                    sum += entry.log_distance;
                                                break;
                                            }
                                        default:
                                            {
                                                if (entry.log_steps.HasValue)
                                                    sum += (double)entry.log_steps;
                                                break;
                                            }
                                    }
                                }
                            }
                            String value = string.Format("{0}", sum);
                            String X_labels;
                            if (i == 0)
                                X_labels = "Today";
                            else
                                X_labels = string.Format("{0}", DateTime.Now.AddDays(-i).ToString("ddd"));

                            dict.Add(X_labels,
                                value);

                        }
                        return dict;
                    }
                case Time.WeekTrend:
                    {
                        Dictionary<string, string> dict = new Dictionary<string, string>();
                        var query = (from g in db.walk_logs
                                     where ((g.log_user == id) && (g.log_date >= (DateTime.Now.AddDays(-7))) && (g.log_date <= DateTime.Now))
                                     orderby g.log_date
                                     select g);
                        if (query.Count() == 0) return null;
                        double? sum = 0;
                        for (int i = 6; i >= 0; i--)
                        {
                            foreach (var entry in query)
                            {
                                if (entry.log_date == DateTime.Now.Date.AddDays(-i))
                                {
                                    switch (itemType)
                                    {
                                        case Item.AerobicSteps:
                                            {
                                                if (entry.log_aerobicsteps.HasValue)
                                                    sum += (double?)entry.log_aerobicsteps;
                                                break;
                                            }
                                        case Item.Calories:
                                            {
                                                if (entry.log_calories.HasValue)
                                                    sum += entry.log_calories;
                                                break;
                                            }
                                        case Item.Distance:
                                            {
                                                if (entry.log_distance.HasValue)
                                                    sum += entry.log_distance;
                                                break;
                                            }
                                        default:
                                            {
                                                if (entry.log_steps.HasValue)
                                                    sum += (double)entry.log_steps;
                                                break;
                                            }
                                    }
                                }
                            }
                            String value = string.Format("{0}", sum);
                            String X_labels;
                            if (i == 0)
                                X_labels = "Today";
                            else
                                X_labels = string.Format("{0}", DateTime.Now.AddDays(-i).ToString("ddd"));

                            dict.Add(X_labels,
                                value);

                        }
                        return dict;
                    }
                case Time.Month:
                    {
                        Dictionary<string, string> dict = new Dictionary<string, string>();
                        var query = (from g in db.walk_logs
                                     where ((g.log_user == id) && (g.log_date >= (DateTime.Now.AddDays(-7 * NUM_WEEKS))) && (g.log_date <= DateTime.Now))
                                     orderby g.log_date
                                     select g);
                        if (query.Count() == 0) return null;

                        double?[] sum = new double?[NUM_WEEKS];
                        for (int i = 0; i < sum.Length; i++)
                        {
                            sum[i] = 0;
                        }
                        foreach (var entry in query)
                        {
                            switch (itemType)
                            {
                                case Item.AerobicSteps:
                                    {
                                        sum[DateTime.Now.Subtract(entry.log_date).Days / 7] += (double?)entry.log_aerobicsteps;
                                        break;
                                    }
                                case Item.Calories:
                                    {
                                        sum[DateTime.Now.Subtract(entry.log_date).Days / 7] += entry.log_calories;
                                        break;
                                    }
                                case Item.Distance:
                                    {
                                        sum[DateTime.Now.Subtract(entry.log_date).Days / 7] += entry.log_distance;
                                        break;
                                    }
                                default:
                                    {
                                        sum[DateTime.Now.Subtract(entry.log_date).Days / 7] += (double)entry.log_steps;
                                        break;
                                    }
                            }

                        }
                        for (int i = sum.Length - 1; i >= 0; i--)
                        {
                            String value = string.Format("{0}", sum[i]);
                            String X_labels;
                            if (i == 0)
                                X_labels = "This Week";
                            else if (i == 1)
                                X_labels = string.Format("{0} Week Ago", i);
                            else
                                X_labels = string.Format("{0} Weeks Ago", i);
                            dict.Add(X_labels, value);
                        }

                        return dict;

                    }
                case Time.Year:
                    {
                        Dictionary<string, string> dict = new Dictionary<string, string>();
                        var query = (from g in db.walk_logs
                                     where ((g.log_user == id) && (g.log_date >= (DateTime.Now.AddMonths(-NUM_MONTHS))) && (g.log_date <= DateTime.Now))
                                     orderby g.log_date
                                     select g);
                        if (query.Count() == 0) return null;

                        double?[] sum = new double?[NUM_MONTHS];
                        for (int i = 0; i < sum.Length; i++)
                        {
                            sum[i] = 0;
                        }
                        foreach (var entry in query)
                        {
                            switch (itemType)
                            {
                                case Item.AerobicSteps:
                                    {
                                        sum[entry.log_date.Month - 1] += (double?)entry.log_aerobicsteps;
                                        break;
                                    }
                                case Item.Calories:
                                    {
                                        sum[entry.log_date.Month - 1] += entry.log_calories;
                                        break;
                                    }
                                case Item.Distance:
                                    {
                                        sum[entry.log_date.Month - 1] += entry.log_distance;
                                        break;
                                    }
                                default:
                                    {
                                        sum[entry.log_date.Month - 1] += (double)entry.log_steps;
                                        break;
                                    }
                            }

                        }
                        for (int i = sum.Length - 1; i >= 0; i--)
                        {
                            String value = string.Format("{0}", sum[i]);

                            String X_labels = string.Format("{0}", DateTime.Now.AddMonths(-i).ToString("MMM"));
                            dict.Add(X_labels, value);
                        }

                        return dict;
                    }
            }
            return null;
        }
Exemple #16
0
 public static long GetTotalSteps(int userId)
 {
     DataClassesDataContext db = new DataClassesDataContext();
     var query = (from g in db.users
                  where g.user_id == userId
                  select g.user_total_steps).FirstOrDefault();
     if (query != null)
         return (long)query;
     else
         return 0;
 }
Exemple #17
0
 public static List<WalkLogModel> GetLast10Logs(int userId)
 {
     DataClassesDataContext db = new DataClassesDataContext();
     var query = (from g in db.walk_logs
                  where g.log_user == userId
                  orderby g.log_date descending
                  select new WalkLogModel(g)).Take(10);
     return query.ToList();
 }
Exemple #18
0
 public static int TotalWidgetImpressions()
 {
     DataClassesDataContext db = new DataClassesDataContext();
     var query = (from g in db.wc_audit_logs
                  where (g.event_id == (int) WlkMiEvent.WidgetRss ||
                         g.event_id == (int) WlkMiEvent.WidgetImg ||
                         g.event_id == (int) WlkMiEvent.Widget) &&
                         g.event_severity == (int) WlkMiCat.Info
                  select g).Count();
     return query;
 }
Exemple #19
0
 public static int NumberOfLogs()
 {
     DataClassesDataContext db = new DataClassesDataContext();
     var query = (from g in db.walk_logs
                  select g).Count();
     return query;
 }