Browse Source

Add society joining route

Matt Coles 9 years ago
parent
commit
8ef1d37a7d

+ 15 - 6
presenters/society-controller.js

55
               admins.map(function (admin_name) {
55
               admins.map(function (admin_name) {
56
                 redis.hget("user:" + admin_name, "societies", function (err, result) {
56
                 redis.hget("user:" + admin_name, "societies", function (err, result) {
57
                   if (result) {
57
                   if (result) {
58
-                    redis.hset("user:" + admin_name, "societies", result.concat(society_name));
58
+                    result = JSON.parse(result);
59
+                    redis.hset("user:" + admin_name, "societies", JSON.stringify(result.concat(society_name)));
59
                   } else {
60
                   } else {
60
-                    redis.hset("user:" + admin_name, "societies", [society_name]);
61
+                    redis.hset("user:" + admin_name, "societies", JSON.stringify([society_name]));
61
                   }
62
                   }
62
                 });
63
                 });
63
               });
64
               });
115
           user_query = "user:" + username;
116
           user_query = "user:" + username;
116
           redis.hget(user_query, "societies", function (err, result) {
117
           redis.hget(user_query, "societies", function (err, result) {
117
             if (result) {
118
             if (result) {
118
-              redis.hset(user_query, "societies", result.concat(society_name));
119
+              result = JSON.parse(result);
120
+              redis.hset(user_query, "societies", JSON.stringify(result.concat(soc_name)));
119
             } else {
121
             } else {
120
-              redis.hset(user_query, "societies", [society_name]);
122
+              redis.hset(user_query, "societies", JSON.stringify([soc_name]));
121
             }
123
             }
122
           });
124
           });
123
           redis.hget("society:" + soc_name, "users", function (err, users_result) {
125
           redis.hget("society:" + soc_name, "users", function (err, users_result) {
124
-            redis.hset("society" + soc_name, users_result.concat(username));
126
+            users_result = JSON.parse(users_result);
127
+            redis.hset("society:" + soc_name, "users", JSON.stringify(users_result.concat(username)));
125
           });
128
           });
126
         });
129
         });
127
         complete({
130
         complete({
145
     });
148
     });
146
     stream.on('end', function () {
149
     stream.on('end', function () {
147
       var soc_objects = [];
150
       var soc_objects = [];
151
+      if (society_names.length === 0) {
152
+        complete({
153
+          "societies": []
154
+        });
155
+        return;
156
+      }
148
       for (var ii = 0; ii < society_names.length; ii++) {
157
       for (var ii = 0; ii < society_names.length; ii++) {
149
         self.get_society(society_names[ii], function(response) {
158
         self.get_society(society_names[ii], function(response) {
150
           soc_objects.push(response.society);
159
           soc_objects.push(response.society);
160
           }
169
           }
161
         });
170
         });
162
       }
171
       }
163
-    })
172
+    });
164
   },
173
   },
165
 
174
 
166
   leave_society: function (soc_name, auth, complete) {
175
   leave_society: function (soc_name, auth, complete) {

+ 17 - 0
presenters/user-controller.js

16
     });
16
     });
17
   },
17
   },
18
 
18
 
19
+  get_public_user_info: function (user, complete) {
20
+    var user_key = "user:" + user;
21
+
22
+    redis.hgetall(user_key, function(err, result) {
23
+      var public = {};
24
+      public.username = user;
25
+      public.societies = result.societies || [];
26
+      public.friends = result.friends || [];
27
+      public.accepted_events = result.accepted_events || [];
28
+    });
29
+  },
30
+
19
   get_user_from_auth: function (auth, complete) {
31
   get_user_from_auth: function (auth, complete) {
20
     var auth_key = "auth-key:" + auth;
32
     var auth_key = "auth-key:" + auth;
21
 
33
 
83
 
95
 
84
           redis.hset(user_key, "password", new_user["password"]);
96
           redis.hset(user_key, "password", new_user["password"]);
85
           redis.hset(user_key, "auth-key", new_user["auth-key"]);
97
           redis.hset(user_key, "auth-key", new_user["auth-key"]);
98
+          redis.hset(user_key, "societies", JSON.stringify([]));
99
+          redis.hset(user_key, "friends", JSON.stringify([]));
100
+          redis.hset(user_key, "pending_events", JSON.stringify([]));
101
+          redis.hset(user_key, "accepted_events", JSON.stringify([]));
102
+          redis.hset(user_key, "declined_events", JSON.stringify([]));
86
           redis.set(auth_key, user);
103
           redis.set(auth_key, user);
87
           complete({
104
           complete({
88
             "registered": 1,
105
             "registered": 1,

+ 11 - 0
routes/society/join-society.js

1
 var Redis = require("ioredis");
1
 var Redis = require("ioredis");
2
 var redis = new Redis();
2
 var redis = new Redis();
3
+var society_controller = require("./../../presenters/society-controller.js");
3
 
4
 
4
 module.exports = {
5
 module.exports = {
5
   perform: function (a,b) {
6
   perform: function (a,b) {
8
 }
9
 }
9
 
10
 
10
 var perform = function (req, res) {
11
 var perform = function (req, res) {
12
+  var soc_name = req.body.society || req.query.society;
13
+  var auth_key = req.body.auth || req.query.auth;
11
 
14
 
15
+  if (soc_name && auth_key) {
16
+    society_controller.join_society(soc_name, auth_key, function (response) {
17
+      res.send(response);
18
+    });
19
+  } else {
20
+    res.send({"success": 0,
21
+              "error": 2});
22
+  }
12
 };
23
 };

+ 2 - 0
utils/route-manager.js

5
 var login = require("../routes/user/login.js");
5
 var login = require("../routes/user/login.js");
6
 var soc_create = require("../routes/society/create-society.js");
6
 var soc_create = require("../routes/society/create-society.js");
7
 var soc_view = require("../routes/society/view-society.js");
7
 var soc_view = require("../routes/society/view-society.js");
8
+var soc_join = require("../routes/society/join-society.js");
8
 
9
 
9
 module.exports = router;
10
 module.exports = router;
10
 
11
 
15
 
16
 
16
 router.all('/society/create', soc_create.perform);
17
 router.all('/society/create', soc_create.perform);
17
 router.all('/society/view/(:societyid)?', soc_view.perform);
18
 router.all('/society/view/(:societyid)?', soc_view.perform);
19
+router.all('/society/join/', soc_join.perform);