Skip to content

yotamblu/GooseNet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GooseNet 🪿 (latest Version 1.6)


Current Features:
• Registration & SignUp ✍️
• Acquiring Coach ID as Coach 🔢
• Connecting to Coach As Athlete 🤝
• Adding more complex workouts is now available as a Coach
• Adding workouts to Flocks(groups of runners
• Viewing and sharing workout details like avg HR Laps and Paces and Route map is now available for all users
• Profile Pictures 🖼️
• Password Changing
• Seeing planned workouts is now available
Average Heart Rate Per Lap
Elevation,Pace & HR graphs
NEW! Sleep Analysis!
NEW! Training Summary for a time range
NEW! Upload Previosuly Uploaded planned workouts from the Workout Library(and edit them if needed)
NEW! Upload and Review Strength Workouts! 🏋️

GooseNet Mobile in React Native is in the works!

Trailer

The Website is here

DataBase Used in this project is FireBase RealTime DataBase

GarminApi Credentials are hidden now and are in the database

public static Dictionary<string, string> GetGarminAPICredentials()
{
    // class used for Gettting and inserting data in from and to the database
    FirebaseService firebaseService = new FirebaseService();
    Dictionary<string, string> creds = firebaseService.GetData<Dictionary<string, string>>("GarminAPICredentials");

    return creds;
}

Constructing JSON to send Garmin API from form data

    private void ConstructJsonFromFromData()
    {

        int intervalCount = int.Parse(Request.Form["intervalCount"]);
        int currentInterval = 0;

        List<Interval> intervalList = new List<Interval>();
        for (int i = 0; currentInterval < intervalCount; i++)
        {
            currentInterval++;

            if (Request.Form[$"step-{i + 1}-type"] != null)
            {

                intervalCount++;
                if (Request.Form[$"step-{i + 1}-type"].ToString() == "rest")
                {
                    double durationVal = 0;
                    switch (Request.Form[$"step-{i + 1}-duration-type"])
                    {
                        case "Kilometers":
                            durationVal = double.Parse(Request.Form[$"step-{i + 1}-duration"].ToString()) * 1000;
                            break;
                        case "Meters":
                            durationVal = double.Parse(Request.Form[$"step-{i + 1}-duration"].ToString());
                            break;

                        case "Minutes":
                            durationVal = double.Parse(Request.Form[$"step-{i + 1}-duration"].ToString()) * 60;
                            break;
                        case "Seconds":
                            durationVal = double.Parse(Request.Form[$"step-{i + 1}-duration"].ToString());
                            break;
                    }

                    intervalList.Add(new Interval
                    {
                        type = "WorkoutStep",
                        description = "Rest",
                        intensity = "REST",
                        durationValue = durationVal,
                        durationType = Request.Form[$"step-{i + 1}-duration-type"] == "Minutes" || Request.Form[$"step-{i + 1}-duration-type"] == "Seconds" ? "TIME" : "DISTANCE",
                        stepOrder = i + 1,

                    });
                }
                else
                {
                    Interval interval = new Interval
                    {
                        stepOrder = i + 1,
                        description = "Run",
                        repeatValue = int.Parse(Request.Form[$"step-{i + 1}-repeat"]),
                        type = "WorkoutRepeatStep",
                        repeatType = "REPEAT_UNTIL_STEPS_CMPLT",
                        intensity = "INTERVAL"
                    };

                    List<Interval> stepsList = new List<Interval>();

                    for (int j = 0; j < int.Parse(Request.Form[$"step-{i + 1}-steps"]); j++)
                    {
                        double durationVal = 0;
                        switch (Request.Form[$"step-{i + 1}-{j + 1}-duration-type"])
                        {
                            case "Kilometers":
                                durationVal = double.Parse(Request.Form[$"step-{i + 1}-{j + 1}-duration"].ToString()) * 1000;
                                break;
                            case "Meters":
                                durationVal = double.Parse(Request.Form[$"step-{i + 1}-{j + 1}-duration"].ToString());
                                break;

                            case "Minutes":
                                durationVal = double.Parse(Request.Form[$"step-{i + 1}-{j + 1}-duration"].ToString()) * 60;
                                break;
                            case "Seconds":
                                durationVal = double.Parse(Request.Form[$"step-{i + 1}-{j + 1}-duration"].ToString());
                                break;
                        }
                        stepsList.Add(new Interval
                        {
                            stepOrder = j + 1,
                            description = Request.Form[$"step-{i + 1}-{j + 1}-type"],
                            durationType = Request.Form[$"step-{i + 1}-{j + 1}-duration-type"] == "Kilometers" || Request.Form[$"step-{i + 1}-{j + 1}-duration-type"] == "Meters" ? "DISTANCE" : "TIME",
                            durationValue = durationVal,
                            intensity = Request.Form[$"step-{i + 1}-{j + 1}-type"] == "run" ? "INTERVAL" : "REST",
                            type = "WorkoutStep",
                            targetValueHigh = GooseNetUtils.PaceToSpeed(Request.Form[$"step-{i + 1}-{j + 1}-pace"]),
                            targetValueLow = GooseNetUtils.PaceToSpeed(Request.Form[$"step-{i + 1}-{j + 1}-pace"])
                        });
                    }
                    interval.steps = stepsList;
                    intervalList.Add(interval);
                }
            }
        }
        WorkoutData workout = new WorkoutData
        {

            workoutName = Request.Form["workoutName"],
            description = Request.Form["workoutDescription"],
            steps = intervalList

        };
        json = JsonConvert.SerializeObject(workout);
    }

About

A platform that connects Athletes, Coaches & other Athletes

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published