Exemple #1
0
        public DataTable Calculate_annual_stats_by_week()
        {
            JOB_Utilities jOB_Utilities = new JOB_Utilities();

            Weekly_data.Clear();
            for (int i = 0; i < 20; i++)
            {
                for (int j = 1; j < 54; j++)
                {
                    if (activity_summary_count[i, j] > 0)
                    {
                        DataRow dataRow = Weekly_data.NewRow();
                        dataRow["Year"]      = i + 2010;
                        dataRow["Week"]      = j;
                        dataRow["Date"]      = jOB_Utilities.GetFirstDayOfWeek(i + 2010, j).ToString();
                        dataRow["Count"]     = activity_summary_count[i, j];
                        dataRow["Distance"]  = activity_summary_dist[i, j];
                        dataRow["Elevation"] = activity_summary_height[i, j];
                        dataRow["Time (h)"]  = (double)activity_summary_time[i, j] / 3600.0;
                        Weekly_data.Rows.Add(dataRow);
                    }
                }
            }
            return(Weekly_data);
        }
Exemple #2
0
        public DataTable Calculate_annual_stats()
        {
            JOB_Utilities jOB_Utilities = new JOB_Utilities();

            Annual_data.Clear();
            for (int i = 0; i < 20; i++)
            {
                for (int j = 1; j < 54; j++)
                {
                    annual_count_summary[i]     += activity_summary_count[i, j];
                    annual_distance_summary[i]  += activity_summary_dist[i, j];
                    annual_elevation_summary[i] += activity_summary_height[i, j];
                    annual_time_summary[i]      += activity_summary_time[i, j];
                }
            }
            for (int i = 0; i < 20; i++)
            {
                if (annual_count_summary[i] > 0)
                {
                    DataRow dataRow = Annual_data.NewRow();
                    dataRow["Year"]      = i + 2010;
                    dataRow["Count"]     = annual_count_summary[i];
                    dataRow["Distance"]  = annual_distance_summary[i];
                    dataRow["Elevation"] = annual_elevation_summary[i];
                    dataRow["Time (h)"]  = (double)annual_time_summary[i] / 3600.0;
                    string text2 = (string)(dataRow["Time (hh:mm:ss)"] = jOB_Utilities.Convert_sec_to_h_mm_ss(annual_time_summary[i]));
                    Annual_data.Rows.Add(dataRow);
                }
            }
            return(Annual_data);
        }
 public void Initialise(bool existing_data, JOB_Common_Parameters common_data)
 {
     Common_data         = new JOB_Common_Parameters();
     Common_data         = common_data;
     S_auth              = new StaticAuthentication(common_data.strava_token);
     client              = new StravaClient(S_auth);
     Activity_details    = new Activities_data();
     Activity_statistics = new JOB_Activities_Stats();
     Utilities           = new JOB_Utilities();
     if (!existing_data)
     {
         Logger.Info("No existing user data present - Creating Athlete Data", "Strava V2.0/JOB_Strava_Client/Initialise");
         Athlete_data = new JOB_Athlete_data(client, common_data.app_path);
         Logger.Info("No existing user data present - Athlete Data created", "Strava V2.0/JOB_Strava_Client/Initialise");
         Logger.Info("No existing user data present - Creating Gear Data", "Strava V2.0/JOB_Strava_Client/Initialise");
         Gear = new JOB_Gear(client, common_data);
         Logger.Info("No existing user data present - Gear Data created", "Strava V2.0/JOB_Strava_Client/Initialise");
     }
     if (existing_data)
     {
         Logger.Info("Existing user data present", "Strava V2.0/JOB_Strava_Client/Initialise");
         Athlete_data = new JOB_Athlete_data(common_data);
         Gear         = new JOB_Gear(client, common_data);
         Activity_statistics.Read_Activities_stats(common_data.activities_stats_filename_fullpath);
         stats_data           = new DataTable();
         stats_data           = Activity_statistics.Calculate_annual_stats();
         annual_stats_by_week = new DataTable();
         annual_stats_by_week = Activity_statistics.Calculate_annual_stats_by_week();
         Logger.Info("Existing user data present - Athlete Data Read and processed", "Strava V2.0/JOB_Strava_Client/Initialise");
     }
 }
Exemple #4
0
        public void Add_Activity_data(int year, int week, double distance, double elevation, int duration)
        {
            JOB_Utilities jOB_Utilities = new JOB_Utilities();

            activity_summary_count[year - 2010, week]++;
            activity_summary_dist[year - 2010, week]   += distance;
            activity_summary_height[year - 2010, week] += elevation;
            activity_summary_time[year - 2010, week]   += duration;
            if (year != last_added_year || week != last_added_week)
            {
                DataRow dataRow = Weekly_data.NewRow();
                dataRow["Year"] = year;
                dataRow["Week"] = week;
                dataRow["Date"] = jOB_Utilities.GetFirstDayOfWeek(year + 2010, week).ToString();
                if (distance > 0.0)
                {
                    dataRow["Count"] = 1;
                }
                else
                {
                    dataRow["Count"] = 0;
                }
                dataRow["Distance"]  = distance;
                dataRow["Elevation"] = elevation;
                dataRow["Time (h)"]  = (double)duration / 3600.0;
                Weekly_data.Rows.Add(dataRow);
                last_added_year = year;
                last_added_week = week;
            }
            else
            {
                foreach (DataRow row in Weekly_data.Rows)
                {
                    if (Convert.ToInt16(row["Year"]) == year && Convert.ToInt16(row["Week"]) == week)
                    {
                        row["Count"]     = Convert.ToInt16(row["Count"]) + 1;
                        row["Distance"]  = Convert.ToDouble(row["Distance"]) + distance;
                        row["Elevation"] = Convert.ToDouble(row["Elevation"]) + elevation;
                        row["Time (h)"]  = (double)Convert.ToInt32(row["Time (h)"]) + (double)duration / 3600.0;
                    }
                }
            }
        }
Exemple #5
0
 public JOB_Gear(StravaClient client, JOB_Common_Parameters common)
 {
     Logger.Info("Creating Gear Data", "Strava V2.0/JOB_Gear/Constructor");
     JOB_GearSummary = new Bike();
     utilities       = new JOB_Utilities();
     Gear_data       = new DataTable();
     strava_client   = client;
     common_data     = common;
     is_imperial     = common.unit_of_measure;
     Create_Gear_datatable();
     try
     {
         if (utilities.File_exists(common_data.gear_filename_fullpath))
         {
             Gear_data = Read_Gear_Data(common_data.gear_filename_fullpath);
             Update_gear(Gear_data);
             Write_Gear_Data(Gear_data, common_data.gear_filename_fullpath);
         }
     }
     catch (Exception ex)
     {
         Logger.Error(ex, "Exception occurred in Strava V2.0/JOB_Gear/Constructor");
     }
 }
        public void Single_activity_data(string activity_ID, JOB_Common_Parameters common_data, string activity_filename, string activity_stats_filename, string activity_stats_adv_filename, string activity_power_curve_filename)
        {
            single_activity = new Single_activity_data(Athlete_data.Get_athlete_weight(), Athlete_data.Get_athlete_FTP_int());
            List <ActivityStream> list = null;

            try
            {
                Logger.Info("Getting Activity Stream for id" + activity_ID, "Strava V2.0/JOB_Strava_Client/Single_activity_data");
                list = client.Streams.GetActivityStream(activity_ID, StreamType.Time | StreamType.LatLng | StreamType.Distance | StreamType.Altitude | StreamType.Velocity_Smooth | StreamType.Heartrate | StreamType.Cadence | StreamType.watts | StreamType.temp | StreamType.Moving | StreamType.grade_smooth);
            }
            catch (Exception ex)
            {
                Logger.Error(ex, "Exception Occurred in Getting Activity Stream for id" + activity_ID + "Strava V2.0/JOB_Strava_Client/Single_activity_data");
            }
            int num = 0;

            foreach (ActivityStream item in list)
            {
                switch (item.StreamType.ToString())
                {
                case "LatLng":
                {
                    double[,] array5 = new double[2, item.Data.Count];
                    string[] array6 = new string[2];
                    for (int m = 0; m < item.Data.Count; m++)
                    {
                        array6           = Convert_lat_long(item.Data[m].ToString());
                        double[,] array7 = array5;
                        int    num2 = m;
                        double num3 = Convert.ToDouble(array6[0]);
                        array7[0, num2]  = num3;
                        double[,] array8 = array5;
                        int    num4 = m;
                        double num5 = Convert.ToDouble(array6[1]);
                        array8[1, num4] = num5;
                    }
                    single_activity.Add_latlng_data(array5, item.Data.Count);
                    break;
                }

                case "Time":
                {
                    int[] array14 = new int[item.Data.Count];
                    for (int num10 = 0; num10 < item.Data.Count; num10++)
                    {
                        array14[num10] = Convert.ToInt32(item.Data[num10]);
                    }
                    single_activity.Add_Time_data(array14, item.Data.Count);
                    break;
                }

                case "Distance":
                {
                    double[] array9 = new double[item.Data.Count];
                    for (int n = 0; n < item.Data.Count; n++)
                    {
                        array9[n] = Convert.ToDouble(item.Data[n]);
                    }
                    single_activity.Add_Dist_data(array9, item.Data.Count, common_data.unit_of_measure);
                    break;
                }

                case "Altitude":
                {
                    double[] array12 = new double[item.Data.Count];
                    for (int num8 = 0; num8 < item.Data.Count; num8++)
                    {
                        array12[num8] = Convert.ToDouble(item.Data[num8]);
                    }
                    single_activity.Add_Alt_data(array12, item.Data.Count, common_data.unit_of_measure);
                    break;
                }

                case "Heartrate":
                {
                    int[] array2 = new int[item.Data.Count];
                    for (int j = 0; j < item.Data.Count; j++)
                    {
                        array2[j] = Convert.ToInt16(item.Data[j]);
                    }
                    single_activity.Add_HR_data(array2, item.Data.Count);
                    break;
                }

                case "Cadence":
                {
                    int[] array11 = new int[item.Data.Count];
                    for (int num7 = 0; num7 < item.Data.Count; num7++)
                    {
                        array11[num7] = Convert.ToInt16(item.Data[num7]);
                    }
                    single_activity.Add_Cadence_data(array11, item.Data.Count);
                    break;
                }

                case "Moving":
                {
                    bool[] array3 = new bool[item.Data.Count];
                    for (int k = 0; k < item.Data.Count; k++)
                    {
                        array3[k] = Convert.ToBoolean(item.Data[k]);
                    }
                    single_activity.Add_Moving_data(array3, item.Data.Count);
                    break;
                }

                case "Velocity_Smooth":
                {
                    double[] array13 = new double[item.Data.Count];
                    for (int num9 = 0; num9 < item.Data.Count; num9++)
                    {
                        array13[num9] = Convert.ToDouble(item.Data[num9]);
                    }
                    single_activity.Add_Velocity_data(array13, item.Data.Count, common_data.unit_of_measure);
                    break;
                }

                case "watts":
                {
                    int[] array10 = new int[item.Data.Count];
                    for (int num6 = 0; num6 < item.Data.Count; num6++)
                    {
                        array10[num6] = Convert.ToInt32(item.Data[num6]);
                    }
                    single_activity.Add_Power_data(array10, item.Data.Count);
                    break;
                }

                case "temp":
                {
                    int[] array4 = new int[item.Data.Count];
                    for (int l = 0; l < item.Data.Count; l++)
                    {
                        array4[l] = Convert.ToInt32(item.Data[l]);
                    }
                    array4 = Process_temperature_data(array4);
                    single_activity.Add_Temperature_data(array4, item.Data.Count);
                    break;
                }

                case "grade_smooth":
                {
                    double[] array = new double[item.Data.Count];
                    for (int i = 0; i < item.Data.Count; i++)
                    {
                        array[i] = Convert.ToDouble(item.Data[i]);
                    }
                    single_activity.Add_Gradient_data(array, item.Data.Count);
                    break;
                }
                }
                num++;
            }
            JOB_Utilities jOB_Utilities = new JOB_Utilities();

            single_activity.Generate_stream_data(common_data.unit_of_measure, activity_filename);
            DataTable dataTable_file_SQL = jOB_Utilities.GetDataTable_file_SQL(activity_filename);

            single_activity.Generate_stats_data(activity_stats_filename, common_data.unit_of_measure);
            DataTable dataTable_file_SQL2 = jOB_Utilities.GetDataTable_file_SQL(activity_stats_filename);

            single_activity.Generate_adv_stats_data(activity_stats_adv_filename, common_data.unit_of_measure);
            DataTable dataTable_file_SQL3 = jOB_Utilities.GetDataTable_file_SQL(activity_stats_adv_filename);

            if (single_activity.Has_power())
            {
                single_activity.Generate_power_curve_data(activity_power_curve_filename, common_data.unit_of_measure);
            }
        }