Built motion from commit 06df96e on branch develop.
[motion.git] / server / models / user_has_voice_queue.js
1 /**
2  * Chat Website Model
3  */
4
5 var crypto = require('crypto');
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                 },
22                 stateinterface: {
23                         type: DataTypes.STRING
24                 },
25                 queue: {
26                         type: DataTypes.STRING
27                 },
28                 membername: {
29                         type: DataTypes.STRING
30                 },
31                 interface: {
32                         type: DataTypes.STRING
33                 },
34                 membership: {
35                         type: DataTypes.STRING
36                 },
37                 callstaken: {
38                         type: DataTypes.INTEGER
39                 },
40                 lastcall: {
41                         type: DataTypes.DATE,
42                         set: function(lastcall) {
43                                 if (lastcall === '0') {
44                                         this.setDataValue('lastcall', null);
45                                 } else {
46                                         this.setDataValue('lastcall', sequelize.fn('FROM_UNIXTIME', lastcall, '%Y-%m-%d %H:%i:%s'));
47                                 }
48                         }
49                 },
50                 status: {
51                         type: DataTypes.INTEGER,
52                         set: function(status) {
53                                 this.setDataValue('status', status);
54                                 var detail = 'UNKNOWN';
55                                 switch (status) {
56                                         case '0':
57                                                 detail = 'UNKNOWN';
58                                                 break;
59                                         case '1':
60                                                 detail = 'NOT_INUSE';
61                                                 break;
62                                         case '2':
63                                                 detail = 'INUSE';
64                                                 break;
65                                         case '3':
66                                                 detail = 'BUSY';
67                                                 break;
68                                         case '4':
69                                                 detail = 'INVALID';
70                                                 break;
71                                         case '5':
72                                                 detail = 'UNAVAILABLE';
73                                                 break;
74                                         case '6':
75                                                 detail = 'RINGING';
76                                                 break;
77                                         case '7':
78                                                 detail = 'RINGINUSE';
79                                                 break;
80                                         case '8':
81                                                 detail = 'ONHOLD';
82                                                 break;
83                                 }
84                                 this.setDataValue('statusdesc', detail);
85                                 this.setDataValue('statusAt', sequelize.fn('NOW'))
86                         },
87                 },
88                 statusdesc: {
89                         type: DataTypes.STRING
90                 },
91                 statusAt: {
92                         type: DataTypes.DATE
93                 },
94                 paused: {
95                         type: DataTypes.BOOLEAN,
96                         defaultValue: false,
97                         set: function(paused) {
98                                 this.setDataValue('paused', parseInt(paused, 10) ? true : false);
99                         }
100                 },
101                 pausedAt: {
102                         type: DataTypes.DATE
103                 },
104                 reason: {
105                         type: DataTypes.STRING
106                 }
107         }, {
108                 tableName: 'user_has_voice_queues',
109                 indexes: [{
110                         name: 'membername',
111                         fields: ['membername']
112                 }]
113         });
114
115         return UserHasVoiceQueue;
116 };