Built motion from commit 4143fce.|0.0.15
[motion.git] / server / api / user_has_chat_room / user_has_chat_room.socket.js
1 /**
2  * Broadcast updates to client when the model changes
3  */
4
5 'use strict';
6 var _ = require('lodash');
7 var User = require('../../models').User;
8 var ChatRoom = require('../../models').ChatRoom;
9 var ChatVisitor = require('../../models').ChatVisitor;
10 var UserHasChatRoom = require('../../models').UserHasChatRoom;
11
12 exports.register = function (socket) {
13   UserHasChatRoom.afterCreate(function (doc) {
14     onSave(socket, doc);
15   });
16   UserHasChatRoom.afterDestroy(function (doc) {
17     onRemove(socket, doc);
18   });
19 }
20
21 function onSave(socket, doc) {
22
23   var _chatRoom;
24
25   return ChatRoom
26     .findById(doc.ChatRoomId, {
27       include: [{
28         model: ChatVisitor,
29         attributes: ['id', 'email', 'fullname']
30       }, {
31         model: User,
32         attributes: ['id', 'email', 'name', 'fullname']
33       }]
34     })
35     .then(function (chatRoom) {
36       _chatRoom = chatRoom;
37       _chatRoom.dataValues.ChatMessages = [];
38
39       console.log('_chatRoom', _chatRoom);
40
41       var ids = _.pluck(_chatRoom.Users, 'id');
42
43       ids.forEach(function (id) {
44         if (socket.userId == id) {
45           socket.emit('user_has_chat_room:save', _chatRoom.dataValues)
46         }
47       });
48
49       return;
50     })
51     .catch(function (err) {
52       console.error(err);
53     });
54 }
55
56 function onRemove(socket, doc) {
57   socket.emit('user_has_chat_room:remove', doc);
58 }