Built motion from commit 1038d87.|0.0.141
[motion.git] / server / models / user_has_voice_queue.js
1 /**
2  * Chat Website Model
3  */
4
5 var moment = require('moment');
6
7 module.exports = function(sequelize, DataTypes) {
8         var UserHasVoiceQueue = sequelize.define('UserHasVoiceQueue', {
9                 logged: {
10                         type: DataTypes.BOOLEAN,
11                         defaultValue: false
12                 },
13                 loggedAt: {
14                         type: DataTypes.DATE
15                 },
16                 ringinuse: {
17                         type: DataTypes.BOOLEAN
18                 },
19                 penalty: {
20                         type: DataTypes.INTEGER,
21                         defaultValue: 0
22                 },
23                 stateinterface: {
24                         type: DataTypes.STRING
25                 },
26                 queue: {
27                         type: DataTypes.STRING
28                 },
29                 membername: {
30                         type: DataTypes.STRING
31                 },
32                 interface: {
33                         type: DataTypes.STRING
34                 },
35                 membership: {
36                         type: DataTypes.STRING
37                 },
38                 callstaken: {
39                         type: DataTypes.INTEGER
40                 },
41                 lastcall: {
42                         type: DataTypes.DATE,
43                         set: function(lastcall) {
44                                 if (lastcall === '0') {
45                                         this.setDataValue('lastcall', null);
46                                 } else {
47                                         this.setDataValue('lastcall', moment().format('YYYY-MM-DD HH:mm:ss'));
48                                 }
49                         }
50                 },
51                 status: {
52                         type: DataTypes.INTEGER,
53                         set: function(status) {
54                                 this.setDataValue('status', status);
55                                 var detail = 'UNKNOWN';
56                                 switch (status) {
57                                         case '0':
58                                                 detail = 'UNKNOWN';
59                                                 break;
60                                         case '1':
61                                                 detail = 'NOT_INUSE';
62                                                 break;
63                                         case '2':
64                                                 detail = 'INUSE';
65                                                 break;
66                                         case '3':
67                                                 detail = 'BUSY';
68                                                 break;
69                                         case '4':
70                                                 detail = 'INVALID';
71                                                 break;
72                                         case '5':
73                                                 detail = 'UNAVAILABLE';
74                                                 break;
75                                         case '6':
76                                                 detail = 'RINGING';
77                                                 break;
78                                         case '7':
79                                                 detail = 'RINGINUSE';
80                                                 break;
81                                         case '8':
82                                                 detail = 'ONHOLD';
83                                                 break;
84                                 }
85                                 this.setDataValue('statusdesc', detail);
86                                 this.setDataValue('statusAt', sequelize.fn('NOW'))
87                         },
88                 },
89                 statusdesc: {
90                         type: DataTypes.STRING
91                 },
92                 statusAt: {
93                         type: DataTypes.DATE
94                 },
95                 paused: {
96                         type: DataTypes.BOOLEAN,
97                         defaultValue: false,
98                         set: function(paused) {
99                                 this.setDataValue('paused', parseInt(paused, 10) ? true : false);
100                         }
101                 },
102                 pausedAt: {
103                         type: DataTypes.DATE
104                 },
105                 reason: {
106                         type: DataTypes.STRING
107                 }
108         }, {
109                 tableName: 'user_has_voice_queues',
110                 indexes: [{
111                         name: 'membername',
112                         fields: ['membername']
113                 }]
114         });
115
116         return UserHasVoiceQueue;
117 };