Built motion from commit 82438f7.|0.0.115
[motion.git] / server / models / openchannel_room.js
1 'use strict';
2
3 module.exports = function(sequelize, DataTypes) {
4   var OpenchannelRoom = sequelize.define('OpenchannelRoom', {
5     from: {
6       type: DataTypes.STRING
7     },
8     status: {
9       type: DataTypes.ENUM('NEW', 'OPEN', 'CLOSED', 'UNMANAGED'),
10       defaultValue: 'NEW'
11     },
12     tags: {
13       type: DataTypes.TEXT,
14       get: function() {
15         var tags;
16         if (this.getDataValue('tags')) {
17           tags = this.getDataValue('tags').split(';');
18           tags.pop();
19         } else {
20           tags = [];
21         }
22         return tags;
23       },
24       set: function(val) {
25         this.setDataValue('tags', val && val.length ? val.join(';') + ';' : null);
26       }
27     },
28     disposition: {
29       type: DataTypes.STRING
30     },
31     ParentId: {
32       type: DataTypes.INTEGER
33     }
34   }, {
35     tableName: 'openchannel_rooms',
36     associate: function(models) {
37       // BINDING
38       OpenchannelRoom.hasMany(models.OpenchannelMessage);
39       OpenchannelRoom.belongsToMany(models.User, {
40         through: 'user_has_openchannel_rooms'
41       });
42       OpenchannelRoom.belongsTo(models.OpenchannelAccount);
43       OpenchannelRoom.addScope('default', {
44         order: [
45           ['createdAt', 'DESC']
46         ],
47         include: [{
48           model: models.OpenchannelAccount
49         }, {
50           model: models.OpenchannelMessage,
51           include: [{
52             model: models.User,
53             attributes: ['id', 'name', 'fullname', 'email']
54           }]
55         }, {
56           model: models.User,
57           attributes: ['id', 'name', 'fullname', 'email']
58         }]
59       });
60       OpenchannelRoom.addScope('agent', function(id) {
61         return {
62           include: [{
63             model: models.User,
64             where: {
65               id: id
66             }
67           }]
68         }
69       });
70     }
71
72
73   });
74   return OpenchannelRoom;
75 };