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}