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