Built motion from commit 16cc8f1.|1.0.14
[motion.git] / server / models / report_queue.js
1 /**
2  * QueueLog Model
3  */
4
5 var moment = require('moment');
6
7 module.exports = function(sequelize, DataTypes) {
8
9   var ReportQueue = sequelize.define('ReportQueue', {
10     uniqueid: DataTypes.STRING,
11     calleridnum: DataTypes.STRING,
12     calleridname: DataTypes.STRING,
13     queue: DataTypes.STRING,
14     queuecallerjoinAt: DataTypes.DATE,
15     queuecallerleaveAt: {
16       type: DataTypes.DATE,
17       set: function(queuecallerleaveAt) {
18         var a = moment(queuecallerleaveAt);
19         var b = moment(this.getDataValue('queuecallerjoinAt')).format("YYYY-MM-DD HH:mm:ss");
20         var holdtime = a.diff(b, 'seconds');
21
22         this.setDataValue('queuecallerleaveAt', queuecallerleaveAt);
23         this.setDataValue('holdtime', holdtime || null);
24       }
25     },
26     position: DataTypes.INTEGER,
27     count: DataTypes.INTEGER,
28     queuecallerabandon: {
29       type: DataTypes.BOOLEAN,
30       defaultValue: false
31     },
32     queuecallerabandonAt: DataTypes.DATE,
33     queuecallercomplete: {
34       type: DataTypes.BOOLEAN,
35       defaultValue: false
36     },
37     queuecallercompleteAt: DataTypes.DATE,
38     queuecallerexit: {
39       type: DataTypes.BOOLEAN,
40       defaultValue: false
41     },
42     queuecallerexitAt: DataTypes.DATE,
43     queuecallerexitreason: DataTypes.STRING,
44     originalposition: DataTypes.INTEGER,
45     channel: DataTypes.STRING,
46     channelstate: DataTypes.INTEGER,
47     channelstatedesc: DataTypes.STRING,
48     connectedlinenum: DataTypes.STRING,
49     connectedlinename: DataTypes.STRING,
50     language: DataTypes.STRING,
51     accountcode: DataTypes.STRING,
52     context: DataTypes.STRING,
53     exten: DataTypes.STRING,
54     priority: DataTypes.STRING,
55     holdtime: DataTypes.INTEGER,
56     assigned: {
57       type: DataTypes.BOOLEAN,
58       defaultValue: false
59     },
60     lastAssignedTo: DataTypes.STRING,
61     transfer: {
62       type: DataTypes.BOOLEAN,
63       defaultValue: false
64     },
65     transfertype: DataTypes.STRING,
66     transferextension: DataTypes.STRING,
67     transferuniqueid: DataTypes.STRING
68   }, {
69     tableName: 'report_queue',
70     indexes: [{
71       fields: ['uniqueid']
72     }],
73     associate: function(models) {
74       // SCOPES MANAGEMENT
75       ReportQueue
76         .addScope('queueFilter', function(queues) {
77           return {
78             where: {
79               queue: {
80                 $in: queues
81               }
82             }
83           }
84         });
85
86       ReportQueue
87         .addScope('waiting', {
88           where: {
89             queuecallerleaveAt: null,
90             queuecallerexit: false
91           }
92         });
93     }
94   });
95
96   return ReportQueue;
97 };