master
 1import * as events from '../events';
 2import ApplicationCommand from './application-command';
 3
 4export default class CreateWorkoutCommand extends ApplicationCommand {
 5  constructor(eventAggregator, api, configuration) {
 6    super();
 7    this.eventAggregator = eventAggregator;
 8    this.api = api;
 9    this.configuration = configuration;
10  }
11
12  subscribeTo(eventAggregator) {
13    eventAggregator.subscribe(events.CREATE_WORKOUT, this);
14  }
15
16  run(event) {
17    const body = {
18      workout: {
19        body_weight: event.body_weight,
20        exercise_sets_attributes: event.sets,
21        routine_id: event.routine_id,
22      }
23    };
24    if (this.configuration.isEnabled('LOCAL_ONLY')) {
25      this.onResponse(this.exampleResponseFor(body));
26    } else {
27      this.api.post('/workouts', body, this.onResponse.bind(this));
28    }
29  }
30
31  onResponse(json) {
32    this.eventAggregator.publish({
33      event: events.CREATED_WORKOUT,
34      ...json
35    });
36  }
37
38  exampleResponseFor(body) {
39    return {
40      "body_weight":{"amount":body.workout.body_weight,"unit":"lbs"},
41      "routine":{"id":body.workout.routine_id,"name":"B"},
42      "exercises":[
43        {"id":"7d91de12-60f6-4a04-9ed4-a9bbeb05681b","name":"Squat"},
44        {"id":"98900216-dc06-474b-9f65-d72509aab218","name":"Overhead Press"},
45        {"id":"046bfecd-549a-43c3-b9c2-32459936fce7","name":"Deadlift"},
46        {"id":"91abf59a-1a4b-4d2f-9d3f-4434bf3068a3","name":"Chinups"},
47        {"id":"60278cc7-3d96-44a0-87af-c0df91064145","name":"Pull Ups"},
48        {"id":"4a5f6c3e-d659-4845-b3c4-3f6210a9464f","name":"Close Grip Bench Press"}
49      ],
50      "sets":[
51        {"id":"1FAAC0A7-6226-4FF9-A667-D6ED9A80386E","exercise_id":"7d91de12-60f6-4a04-9ed4-a9bbeb05681b","type":"WarmUpSet","target_weight":{"amount":45.0,"unit":"lbs"},"target_repetitions":5,"actual_repetitions":null,"actual_duration":null,"target_duration":null},
52        {"id":"835266B8-814D-4AB3-872E-07905AC5D3E1","exercise_id":"7d91de12-60f6-4a04-9ed4-a9bbeb05681b","type":"WarmUpSet","target_weight":{"amount":45.0,"unit":"lbs"},"target_repetitions":5,"actual_repetitions":null,"actual_duration":null,"target_duration":null},
53        {"id":"3F536888-2775-428D-B1D8-F795B659D66B","exercise_id":"7d91de12-60f6-4a04-9ed4-a9bbeb05681b","type":"WarmUpSet","target_weight":{"amount":95.0,"unit":"lbs"},"target_repetitions":5,"actual_repetitions":null,"actual_duration":null,"target_duration":null},
54        {"id":"0827B1ED-EA2F-47AB-AB2D-E389ACA6552E","exercise_id":"7d91de12-60f6-4a04-9ed4-a9bbeb05681b","type":"WarmUpSet","target_weight":{"amount":135.0,"unit":"lbs"},"target_repetitions":5,"actual_repetitions":null,"actual_duration":null,"target_duration":null},
55        {"id":"505FDAD5-065B-4107-87EE-A3414D4D2B17","exercise_id":"7d91de12-60f6-4a04-9ed4-a9bbeb05681b","type":"WarmUpSet","target_weight":{"amount":185.0,"unit":"lbs"},"target_repetitions":5,"actual_repetitions":null,"actual_duration":null,"target_duration":null},
56        {"id":"EDDF2250-E722-4AAC-A99A-FAEE4837A643","exercise_id":"7d91de12-60f6-4a04-9ed4-a9bbeb05681b","type":"WarmUpSet","target_weight":{"amount":225.0,"unit":"lbs"},"target_repetitions":3,"actual_repetitions":null,"actual_duration":null,"target_duration":null},
57        {"id":"55F92200-4C2A-4D35-9F46-A7FE876609F2","exercise_id":"7d91de12-60f6-4a04-9ed4-a9bbeb05681b","type":"WarmUpSet","target_weight":{"amount":265.0,"unit":"lbs"},"target_repetitions":2,"actual_repetitions":null,"actual_duration":null,"target_duration":null},
58        {"id":"2DF1682D-2F54-435E-B394-3EA157425814","exercise_id":"7d91de12-60f6-4a04-9ed4-a9bbeb05681b","type":"WarmUpSet","target_weight":{"amount":305.0,"unit":"lbs"},"target_repetitions":1,"actual_repetitions":null,"actual_duration":null,"target_duration":null},
59        {"id":"9C0D6B8C-8D25-4753-A1DE-1EE7F44BE1AF","exercise_id":"7d91de12-60f6-4a04-9ed4-a9bbeb05681b","type":"WorkSet","target_weight":{"amount":335.0,"unit":"lbs"},"target_repetitions":5,"actual_repetitions":null,"actual_duration":null,"target_duration":null},
60        {"id":"D6351B67-4C08-4201-822E-DC55C14F6B2F","exercise_id":"7d91de12-60f6-4a04-9ed4-a9bbeb05681b","type":"WorkSet","target_weight":{"amount":335.0,"unit":"lbs"},"target_repetitions":5,"actual_repetitions":null,"actual_duration":null,"target_duration":null},
61        {"id":"43A14019-2E23-4B63-8B93-BEB10441F6B5","exercise_id":"7d91de12-60f6-4a04-9ed4-a9bbeb05681b","type":"WorkSet","target_weight":{"amount":335.0,"unit":"lbs"},"target_repetitions":5,"actual_repetitions":null,"actual_duration":null,"target_duration":null},
62        {"id":"4E505112-098D-4171-A13B-54396EC40068","exercise_id":"98900216-dc06-474b-9f65-d72509aab218","type":"WarmUpSet","target_weight":{"amount":45.0,"unit":"lbs"},"target_repetitions":5,"actual_repetitions":null,"actual_duration":null,"target_duration":null},
63        {"id":"F520C8C7-5B08-4B53-89BD-75268DEB6461","exercise_id":"98900216-dc06-474b-9f65-d72509aab218","type":"WarmUpSet","target_weight":{"amount":45.0,"unit":"lbs"},"target_repetitions":5,"actual_repetitions":null,"actual_duration":null,"target_duration":null},
64        {"id":"C1ADC8B6-4656-433A-AE6A-B9121256CF13","exercise_id":"98900216-dc06-474b-9f65-d72509aab218","type":"WarmUpSet","target_weight":{"amount":75.0,"unit":"lbs"},"target_repetitions":3,"actual_repetitions":null,"actual_duration":null,"target_duration":null},
65        {"id":"DD049CFC-1F38-4D3D-8965-3D19FE72791A","exercise_id":"98900216-dc06-474b-9f65-d72509aab218","type":"WorkSet","target_weight":{"amount":110.0,"unit":"lbs"},"target_repetitions":5,"actual_repetitions":null,"actual_duration":null,"target_duration":null},
66        {"id":"B01403E2-E611-49E2-B3E0-BC72998357C9","exercise_id":"98900216-dc06-474b-9f65-d72509aab218","type":"WorkSet","target_weight":{"amount":110.0,"unit":"lbs"},"target_repetitions":5,"actual_repetitions":null,"actual_duration":null,"target_duration":null},
67        {"id":"4C8A1B36-F95C-40A5-BD69-EB285D5B3596","exercise_id":"98900216-dc06-474b-9f65-d72509aab218","type":"WorkSet","target_weight":{"amount":110.0,"unit":"lbs"},"target_repetitions":5,"actual_repetitions":null,"actual_duration":null,"target_duration":null},
68        {"id":"6F08B067-49A2-4C3C-8E52-270C155968CF","exercise_id":"046bfecd-549a-43c3-b9c2-32459936fce7","type":"WarmUpSet","target_weight":{"amount":135.0,"unit":"lbs"},"target_repetitions":5,"actual_repetitions":null,"actual_duration":null,"target_duration":null},
69        {"id":"4CC94C2E-118C-450A-814B-4356CD7E8444","exercise_id":"046bfecd-549a-43c3-b9c2-32459936fce7","type":"WarmUpSet","target_weight":{"amount":185.0,"unit":"lbs"},"target_repetitions":5,"actual_repetitions":null,"actual_duration":null,"target_duration":null},
70        {"id":"F494E849-2CBD-4BE3-A1F7-0753DB965A81","exercise_id":"046bfecd-549a-43c3-b9c2-32459936fce7","type":"WarmUpSet","target_weight":{"amount":225.0,"unit":"lbs"},"target_repetitions":5,"actual_repetitions":null,"actual_duration":null,"target_duration":null},
71        {"id":"9D48F62E-150A-4D90-AE7A-27302BDC3C31","exercise_id":"046bfecd-549a-43c3-b9c2-32459936fce7","type":"WarmUpSet","target_weight":{"amount":265.0,"unit":"lbs"},"target_repetitions":5,"actual_repetitions":null,"actual_duration":null,"target_duration":null},
72        {"id":"1AD93E05-FE8F-447B-9920-EC959E1DBA84","exercise_id":"046bfecd-549a-43c3-b9c2-32459936fce7","type":"WorkSet","target_weight":{"amount":290.0,"unit":"lbs"},"target_repetitions":5,"actual_repetitions":null,"actual_duration":null,"target_duration":null},
73        {"id":"961B0D3F-B8A5-4E39-887B-59AC5E10D168","exercise_id":"91abf59a-1a4b-4d2f-9d3f-4434bf3068a3","type":"WorkSet","target_weight":{"amount":0.0,"unit":"lbs"},"target_repetitions":5,"actual_repetitions":null,"actual_duration":null,"target_duration":null},
74        {"id":"3014CFEE-D23A-4DCD-886F-99B076A4F696","exercise_id":"91abf59a-1a4b-4d2f-9d3f-4434bf3068a3","type":"WorkSet","target_weight":{"amount":0.0,"unit":"lbs"},"target_repetitions":5,"actual_repetitions":null,"actual_duration":null,"target_duration":null},
75        {"id":"0FB11A4B-8A73-47D5-9CF4-0EDFBB223278","exercise_id":"91abf59a-1a4b-4d2f-9d3f-4434bf3068a3","type":"WorkSet","target_weight":{"amount":0.0,"unit":"lbs"},"target_repetitions":5,"actual_repetitions":null,"actual_duration":null,"target_duration":null},
76        {"id":"31C8D82E-D9AE-453F-A865-D554FF73A0DE","exercise_id":"60278cc7-3d96-44a0-87af-c0df91064145","type":"WorkSet","target_weight":{"amount":45.0,"unit":"lbs"},"target_repetitions":5,"actual_repetitions":null,"actual_duration":null,"target_duration":null},
77        {"id":"DA41E9A1-8C56-45A1-A268-71763E3E1BF1","exercise_id":"60278cc7-3d96-44a0-87af-c0df91064145","type":"WorkSet","target_weight":{"amount":45.0,"unit":"lbs"},"target_repetitions":5,"actual_repetitions":null,"actual_duration":null,"target_duration":null},
78        {"id":"5EAFA820-F129-4546-A2A4-A0E1FB5EAEBC","exercise_id":"60278cc7-3d96-44a0-87af-c0df91064145","type":"WorkSet","target_weight":{"amount":45.0,"unit":"lbs"},"target_repetitions":5,"actual_repetitions":null,"actual_duration":null,"target_duration":null},
79        {"id":"33C776DA-4F78-4884-A5B6-EF6D5BCEDE91","exercise_id":"4a5f6c3e-d659-4845-b3c4-3f6210a9464f","type":"WorkSet","target_weight":{"amount":45.0,"unit":"lbs"},"target_repetitions":5,"actual_repetitions":null,"actual_duration":null,"target_duration":null},
80        {"id":"F152DD0D-84C2-4F01-8458-B9FAEA875C8F","exercise_id":"4a5f6c3e-d659-4845-b3c4-3f6210a9464f","type":"WorkSet","target_weight":{"amount":45.0,"unit":"lbs"},"target_repetitions":5,"actual_repetitions":null,"actual_duration":null,"target_duration":null},
81        {"id":"7495AB75-B88C-4E9F-8433-58216806EC39","exercise_id":"4a5f6c3e-d659-4845-b3c4-3f6210a9464f","type":"WorkSet","target_weight":{"amount":45.0,"unit":"lbs"},"target_repetitions":5,"actual_repetitions":null,"actual_duration":null,"target_duration":null}
82      ]
83    };
84  }
85}