Built motion from commit c2984ba.|0.0.114
[motion.git] / server / models / chat_queue.js
1 'use strict';
2
3 module.exports = function(sequelize, DataTypes) {
4
5   var ChatQueue = sequelize.define('ChatQueue', {
6     name: {
7       type: DataTypes.STRING,
8       unique: true,
9       allowNull: false,
10       validate: {
11         notEmpty: true,
12         is: /^[A-Za-z0-9\.\_]+$/i
13       }
14     },
15     description: {
16       type: DataTypes.STRING,
17     },
18     timeout: {
19       type: DataTypes.INTEGER,
20       validate: {
21         min: 1
22       }
23     },
24     strategy: {
25       type: DataTypes.ENUM('rrmemory', 'beepall', 'roundrobin')
26     },
27     lastAgent: {
28       type: DataTypes.INTEGER,
29       defaultValue: 0
30     },
31   }, {
32     tableName: 'chat_queues',
33     associate: function(models) {
34       // hasMany relations
35       ChatQueue.belongsToMany(models.User, {
36         through: models.UserHasChatQueue
37       });
38
39       ChatQueue.belongsToMany(models.User, {
40         through: models.UserHasChatQueuePermit,
41         as: 'PChatQueues'
42       });
43
44       //SCOPES
45       ChatQueue.addScope('default', {
46         include: [{
47           model: models.User,
48           attributes: ['id', 'name', 'fullname', 'email', 'online', 'lastLoginAt', 'chatPause', 'pauseType']
49         }]
50       });
51     }
52   });
53
54   return ChatQueue;
55 };