9c0864fcfda1ccb86752522523d6bdbe8df2bb7d
[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', 'CSQUARE'),
13       defaultValue: 'NEW'
14     }
15   }, {
16     tableName: 'sms_rooms',
17     associate: function(models) {
18       // BINDING
19       SmsRoom.hasMany(models.SmsMessage);
20       SmsRoom.belongsToMany(models.User, {
21         through: 'user_has_sms_rooms'
22       });
23       SmsRoom.belongsTo(models.SmsAccount);
24       SmsRoom.addScope('default', {
25         order: [
26           ['createdAt', 'DESC']
27         ],
28         include: [{
29           model: models.SmsAccount
30         }, {
31           model: models.SmsMessage,
32           include: [{
33             model: models.User,
34             attributes: ['id', 'name', 'fullname', 'email']
35           }]
36         }, {
37           model: models.User,
38           attributes: ['id', 'name', 'fullname', 'email']
39         }]
40       });
41       SmsRoom.addScope('agent', function(id) {
42         return {
43           include: [{
44             model: models.User,
45             where: {
46               id: id
47             }
48           }]
49         }
50       });
51     }
52
53
54   });
55   return SmsRoom;
56 };