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