Kaynağa Gözat

Add attendees field to event objects

Matt Coles 9 yıl önce
ebeveyn
işleme
32cce8f1b4
2 değiştirilmiş dosya ile 80 ekleme ve 32 silme
  1. 29 0
      README.md
  2. 51 32
      presenters/event-controller.js

+ 29 - 0
README.md

@@ -370,6 +370,7 @@ The response will look like this:
370 370
         "id": "101898721",
371 371
         "name": "Super Mario Kart Party",
372 372
         "organiser": "test1",
373
+        "attendees": [],
373 374
         "location": "Marioland",
374 375
         "society": "TestSociety",
375 376
         "start": "14605026110490",
@@ -401,6 +402,10 @@ The response will then look like this:
401 402
         "end": "14605026110500",
402 403
         "details": "Play some Mario Kart with us",
403 404
         "organiser": "test1",
405
+        "attendees": [
406
+            "test1",
407
+            "test2"
408
+        ],
404 409
         "id": "101898721"
405 410
     },
406 411
     "error": 0
@@ -429,6 +434,10 @@ The response will then look like this:
429 434
             "end": "14605026110500",
430 435
             "details": "Play some Mario Kart with us",
431 436
             "organiser": "test1",
437
+            "attendees": [
438
+                "test1",
439
+                "test2"
440
+            ],
432 441
             "id": "851133039"
433 442
         },
434 443
         {
@@ -439,6 +448,10 @@ The response will then look like this:
439 448
             "end": "14605026110500",
440 449
             "details": "Play some Mario Kart with us",
441 450
             "organiser": "test1",
451
+            "attendees": [
452
+                "test1",
453
+                "test2"
454
+            ],
442 455
             "id": "838450388"
443 456
         },
444 457
         { ... }
@@ -469,6 +482,10 @@ The response will then look like this:
469 482
             "end": "14605026110500",
470 483
             "details": "Play some Mario Kart with us",
471 484
             "organiser": "test1",
485
+            "attendees": [
486
+                "test1",
487
+                "test2"
488
+            ],
472 489
             "id": "851133039"
473 490
         },
474 491
         {
@@ -479,6 +496,10 @@ The response will then look like this:
479 496
             "end": "14605026110500",
480 497
             "details": "Play some Mario Kart with us",
481 498
             "organiser": "test1",
499
+            "attendees": [
500
+                "test1",
501
+                "test2"
502
+            ],
482 503
             "id": "838450388"
483 504
         },
484 505
         { ... }
@@ -509,6 +530,10 @@ The response will then look like this:
509 530
             "end": "14605026110500",
510 531
             "details": "Play some Mario Kart with us",
511 532
             "organiser": "test1",
533
+            "attendees": [
534
+                "test1",
535
+                "test2"
536
+            ],
512 537
             "id": "851133039"
513 538
         },
514 539
         {
@@ -519,6 +544,10 @@ The response will then look like this:
519 544
             "end": "14605026110500",
520 545
             "details": "Play some Mario Kart with us",
521 546
             "organiser": "test1",
547
+            "attendees": [
548
+                "test1",
549
+                "test2"
550
+            ],
522 551
             "id": "838450388"
523 552
         },
524 553
         { ... }

+ 51 - 32
presenters/event-controller.js

@@ -22,6 +22,7 @@ module.exports = {
22 22
               redis.hset(event_query, "end", event.end);
23 23
               redis.hset(event_query, "details", event.details);
24 24
               redis.hset(event_query, "organiser", organiser);
25
+              redis.hset(event_query, "attendees", JSON.stringify([]));
25 26
               redis.hset(event_query, "id", event_id);
26 27
               redis.hget(soc_query, "events", function (err, events) {
27 28
                 redis.hset(soc_query, "events", JSON.stringify(JSON.parse(events).concat(event_id)));
@@ -32,6 +33,7 @@ module.exports = {
32 33
                   "id": event_id,
33 34
                   "name": event.name,
34 35
                   "organiser": organiser,
36
+                  "attendees": [],
35 37
                   "location": event.location,
36 38
                   "society": soc_name,
37 39
                   "start": event.start,
@@ -57,6 +59,10 @@ module.exports = {
57 59
     });
58 60
   },
59 61
 
62
+  cancel_event: function (event_id, auth, complete, force) {
63
+
64
+  },
65
+
60 66
   invite_all: function (soc_name, event_id) {
61 67
     society_controller.get_society(soc_name, function (response) {
62 68
       response.society.users.map(function (user) {
@@ -69,6 +75,7 @@ module.exports = {
69 75
 
70 76
   get_event: function (event_id, auth, complete, preauth) {
71 77
     redis.hgetall("event:" + event_id, function (err, event) {
78
+      event.attendees = JSON.parse(event.attendees);
72 79
       if (preauth) {
73 80
         complete({
74 81
           "event": event,
@@ -138,36 +145,42 @@ module.exports = {
138 145
   },
139 146
 
140 147
   accept_event: function (event_id, auth, complete) {
148
+    var self = this;
141 149
     user_controller.get_user_from_auth(auth, function (username) {
142 150
       if (username) {
143 151
         user_controller.get_raw_user(username, function (userdata) {
144 152
           var pending_events = JSON.parse(userdata.pending_events);
145 153
           var declined_events = JSON.parse(userdata.declined_events);
146 154
           var accepted_events = JSON.parse(userdata.accepted_events);
147
-          if (pending_events.indexOf(event_id) > -1) {
148
-            pending_events.splice(pending_events.indexOf(event_id), 1);
149
-            accepted_events.push(event_id);
150
-            redis.hset("user:" + username, "pending_events", JSON.stringify(pending_events));
151
-            redis.hset("user:" + username, "accepted_events", JSON.stringify(accepted_events));
152
-            complete({
153
-              "success": 1,
154
-              "error": 0
155
-            });
156
-          } else if (declined_events.indexOf(event_id) > -1) {
157
-            declined_events.splice(declined_events.indexOf(event_id), 1);
158
-            accepted_events.push(event_id);
159
-            redis.hset("user:" + username, "declined_events", JSON.stringify(declined_events));
160
-            redis.hset("user:" + username, "accepted_events", JSON.stringify(accepted_events));
161
-            complete({
162
-              "success": 1,
163
-              "error": 0
164
-            });
165
-          } else {
166
-            complete({
167
-              "success": 0,
168
-              "error": 2
169
-            });
170
-          }
155
+          self.get_event(event_id, auth, function (data) {
156
+            var attendees = data.event.attendees;
157
+            if (pending_events.indexOf(event_id) > -1) {
158
+              pending_events.splice(pending_events.indexOf(event_id), 1);
159
+              accepted_events.push(event_id);
160
+              redis.hset("user:" + username, "pending_events", JSON.stringify(pending_events));
161
+              redis.hset("user:" + username, "accepted_events", JSON.stringify(accepted_events));
162
+              redis.hset("event:" + event_id, "attendees", JSON.stringify(attendees.concat(username.toLowerCase())));
163
+              complete({
164
+                "success": 1,
165
+                "error": 0
166
+              });
167
+            } else if (declined_events.indexOf(event_id) > -1) {
168
+              declined_events.splice(declined_events.indexOf(event_id), 1);
169
+              accepted_events.push(event_id);
170
+              redis.hset("user:" + username, "declined_events", JSON.stringify(declined_events));
171
+              redis.hset("user:" + username, "accepted_events", JSON.stringify(accepted_events));
172
+              redis.hset("event:" + event_id, "attendees", JSON.stringify(attendees.concat(username.toLowerCase())));
173
+              complete({
174
+                "success": 1,
175
+                "error": 0
176
+              });
177
+            } else {
178
+              complete({
179
+                "success": 0,
180
+                "error": 2
181
+              });
182
+            }
183
+          });
171 184
         });
172 185
       } else {
173 186
         complete({
@@ -179,6 +192,7 @@ module.exports = {
179 192
   },
180 193
 
181 194
   decline_event: function (event_id, auth, complete) {
195
+    var self = this;
182 196
     user_controller.get_user_from_auth(auth, function (username) {
183 197
       if (username) {
184 198
         user_controller.get_raw_user(username, function (userdata) {
@@ -195,14 +209,19 @@ module.exports = {
195 209
               "error": 0
196 210
             });
197 211
           } else if (accepted_events.indexOf(event_id) > -1) {
198
-            accepted_events.splice(accepted_events.indexOf(event_id), 1);
199
-            declined_events.push(event_id);
200
-            redis.hset("user:" + username, "accepted_events", JSON.stringify(accepted_events));
201
-            redis.hset("user:" + username, "declined_events", JSON.stringify(declined_events));
202
-            complete({
203
-              "success": 1,
204
-              "error": 0
205
-            });
212
+            self.get_event(event_id, auth, function (data) {
213
+              var attendees = data.event.attendees;
214
+              attendees.splice(attendees.indexOf(event_id), 1);
215
+              accepted_events.splice(accepted_events.indexOf(event_id), 1);
216
+              declined_events.push(event_id);
217
+              redis.hset("user:" + username, "accepted_events", JSON.stringify(accepted_events));
218
+              redis.hset("user:" + username, "declined_events", JSON.stringify(declined_events));
219
+              redis.hset("event:" + event_id, "attendees", JSON.stringify(attendees));
220
+              complete({
221
+                "success": 1,
222
+                "error": 0
223
+              });
224
+            })
206 225
           } else {
207 226
             complete({
208 227
               "success": 0,