Built motion from commit 06df96e on branch develop.
[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
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.afterUpdate(function(doc) {
17     onSave(socket, doc);
18   });
19   UserHasChatRoom.afterDestroy(function(doc) {
20     onRemove(socket, doc);
21   });
22 }
23
24 function onSave(socket, doc, cb) {
25   if (socket.userId == doc.UserId) {
26     console.log('user_has_chat_room:save');
27     ChatRoom
28       .findById(doc.ChatRoomId, {
29         include: [{
30           model: ChatVisitor,
31           attributes: ['id', 'fullname', 'email']
32         }, {
33           model: User,
34           attributes: ['id', 'name', 'fullname', 'email', 'role', 'internal']
35         }]
36       })
37       .then(function(chatRoom) {
38         socket.emit('user_has_chat_room:save', chatRoom);
39       })
40       .catch(function(err) {
41         console.error(err);
42       });
43   }
44 }
45
46 function onRemove(socket, doc, cb) {
47   socket.emit('user_has_chat_room:remove', doc);
48 }