コード例 #1
0
        /// <summary>
        /// manages creating exercises and responding to the user with information about that request
        /// including all the exercises that were created during the request
        /// </summary>
        /// <param name="root"></param>
        /// <param name="db"></param>
        /// <param name="manager"></param>
        static void SetupExerciseInfoManager(mpBase root, Database db, UserManager manager)
        {
            root.addProperty("exercise-info",
                             new mpRestfulTarget(
                                 new Func <System.Net.HttpListenerRequest, mpResponse>(
                                     req => {
                return(mpResponse.empty400());
            }
                                     ),
                                 new Func <System.Net.HttpListenerRequest, mpResponse>(
                                     req => {
                Console.Write("Exercise Data Requested...");

                string requestData  = req.data();
                string requestEmail = "", requestPasswordEmailHash = "";
                int requestNumItems = -1;

                try {
                    mpObject requestJSON = (mpObject)mpJson.parse(requestData);

                    requestEmail             = ((mpValue)requestJSON.getChild("email")).data.asString();
                    requestPasswordEmailHash = ((mpValue)requestJSON.getChild("passwordEmailHash")).data.asString();
                    requestNumItems          = ((mpValue)requestJSON.getChild("numItems")).data.asInt();
                } catch (Exception ex) {
                    Console.WriteLine("Exercise Request Error: " + ex.Message);
                    return(new mpResponse(new binaryData("{\"good\":false, \"message\":\"" + ex.Message + "\"}"), 400));
                }

                try {
                    User user           = manager.getUser(requestEmail, requestPasswordEmailHash);
                    UserDataAccess info = new UserDataAccess(db, user);
                    WorkoutGenerator p  = new WorkoutGenerator(info);

                    mpResponse res      = mpResponse.success();
                    WorkoutSession sesh = p.GenSesh(requestNumItems);
                    res.response        = new binaryData(sesh.toJSON(info).ToString());
                    info.AddDay(sesh);
                    info.Store();
                    info.Dispose();

                    Console.WriteLine(res.response.asString());

                    Console.WriteLine("Responded! (user = "******")");
                    return(res);
                } catch (Exception ex) {
                    Console.WriteLine("Exercise Request Error: " + ex.Message);
                    return(new mpResponse(new binaryData("{\"good\":false, \"message\":\"" + ex.Message + "\"}"), 400));
                }
            }
                                     )
                                 )
                             );
        }
コード例 #2
0
        public WorkoutSession GenSesh(int workoutSlots, HashSet <BodyPart> rejected = null)
        {
            WorkoutSession workout = new WorkoutSession();

            workout.bodyparts = CalculateBodyParts(rejected, workoutSlots);

            List <KeyValuePair <BodyPart, Tuple <int, int, int> > > bodyPartSubgroups = new List <KeyValuePair <BodyPart, Tuple <int, int, int> > >();

            int[] distribution = new int[workout.bodyparts.Count()];
            for (int i = 0; i < workoutSlots; i++)
            {
                distribution[i % distribution.Length]++;
            }

            for (int i = 0; i < workout.bodyparts.Count(); i++)
            {
                BodyPart part = workout.bodyparts[i];
                bodyPartSubgroups.Add(new KeyValuePair <BodyPart, Tuple <volume, volume, volume> >(part, CalculateSubgroups(part, distribution[i])));
            }

            //selects the exercises for the workout
            List <KeyValuePair <BodyPart, List <Exercise> > > exercises = new List <KeyValuePair <BodyPart, List <Exercise> > >();

            bodyPartSubgroups.ForEach(group => {
                exercises.Add(new KeyValuePair <BodyPart, List <Exercise> >(group.Key, CalculateExercises(group.Key, group.Value, history)));
            });

            List <WorkoutItem> items = new List <WorkoutItem>();

            items = OrderExercises(exercises);

            items = CalculateSets(items);

            items = CalculateReps(items);                         //depends on workout style???

            items = CalculateIntensity(items, workout.bodyparts); //depends on number of reps and location in the workout

            items = CalculateRestime(items);

            workout.workoutItems = items;
            return(workout);
        }
コード例 #3
0
ファイル: UserDataAccess.cs プロジェクト: jakegriesmaier/abs
 public void AddDay(WorkoutSession day)
 {
     newDays.Add(day);
 }