Built motion from commit 98555a2.|1.0.12
[motion.git] / server / models / voice_queue.js
index bf91efd..ccc5333 100644 (file)
@@ -1 +1,312 @@
-var _0xaa93=["\x65\x78\x70\x6F\x72\x74\x73","\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65","\x53\x54\x52\x49\x4E\x47","\x64\x65\x66\x61\x75\x6C\x74","","\x79\x65\x73","\x6E\x6F","\x76\x61\x72\x73","\x61\x6C\x6C","\x72\x69\x6E\x67\x61\x6C\x6C","\x6C\x65\x61\x73\x74\x72\x65\x63\x65\x6E\x74","\x66\x65\x77\x65\x73\x74\x63\x61\x6C\x6C\x73","\x72\x61\x6E\x64\x6F\x6D","\x72\x72\x6D\x65\x6D\x6F\x72\x79","\x6C\x69\x6E\x65\x61\x72","\x77\x72\x61\x6E\x64\x6F\x6D","\x72\x72\x6F\x72\x64\x65\x72\x65\x64","\x76\x6F\x69\x63\x65\x5F\x71\x75\x65\x75\x65\x73","\x55\x73\x65\x72\x48\x61\x73\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65","\x71\x75\x65\x75\x65","\x62\x65\x6C\x6F\x6E\x67\x73\x54\x6F\x4D\x61\x6E\x79","\x64\x65\x66\x69\x6E\x65","\x6E\x61\x6D\x65","\x63\x68\x61\x6E\x67\x65\x64","\x59\x6F\x75\x20\x63\x61\x6E\x27\x74\x20\x6D\x6F\x64\x69\x66\x79\x20\x61\x20\x71\x75\x65\x75\x65\x20\x6E\x61\x6D\x65","\x62\x65\x66\x6F\x72\x65\x55\x70\x64\x61\x74\x65"];module[_0xaa93[0]]=function(_0xa6edx1,_0xa6edx2){var _0xa6edx3=_0xa6edx1[_0xaa93[21]](_0xaa93[1],{name:{type:_0xa6edx2[_0xaa93[2]],primaryKey:true,unique:true},musiconhold:{type:_0xa6edx2[_0xaa93[2]],allowNull:true,defaultValue:_0xaa93[3]},announce:{type:_0xa6edx2[_0xaa93[2]],allowNull:true,defaultValue:_0xaa93[4]},context:{type:_0xa6edx2[_0xaa93[2]],allowNull:true,defaultValue:null},timeout:{type:_0xa6edx2.INTEGER(11),allowNull:true,defaultValue:0},ringinuse:{type:_0xa6edx2.ENUM(_0xaa93[5],_0xaa93[6]),allowNull:true,defaultValue:_0xaa93[6]},setinterfacevar:{type:_0xa6edx2.ENUM(_0xaa93[5],_0xaa93[6]),allowNull:true,defaultValue:_0xaa93[5]},setqueuevar:{type:_0xa6edx2.ENUM(_0xaa93[5],_0xaa93[6]),allowNull:true,defaultValue:_0xaa93[5]},setqueueentryvar:{type:_0xa6edx2.ENUM(_0xaa93[5],_0xaa93[6]),allowNull:true,defautValue:_0xaa93[5]},eventwhencalled:{type:_0xa6edx2.ENUM(_0xaa93[5],_0xaa93[6],_0xaa93[7]),allowNull:true,defautValue:_0xaa93[5]},eventmemberstatus:{type:_0xa6edx2.ENUM(_0xaa93[5],_0xaa93[6]),allowNull:true,defautValue:_0xaa93[5]},monitor_format:{type:_0xa6edx2[_0xaa93[2]],allowNull:true,defaultValue:_0xaa93[4]},membermacro:{type:_0xa6edx2[_0xaa93[2]],allowNull:true},description:{type:_0xa6edx2[_0xaa93[2]],allowNull:true},membergosub:{type:_0xa6edx2[_0xaa93[2]],allowNull:true},queue_youarenext:{type:_0xa6edx2[_0xaa93[2]],allowNull:true,defaultValue:null},queue_thereare:{type:_0xa6edx2[_0xaa93[2]],allowNull:true,defaultValue:null},queue_callswaiting:{type:_0xa6edx2[_0xaa93[2]],allowNull:true,defaultValue:null},queue_quantity1:{type:_0xa6edx2[_0xaa93[2]],allowNull:true},queue_quantity2:{type:_0xa6edx2[_0xaa93[2]],allowNull:true},queue_holdtime:{type:_0xa6edx2[_0xaa93[2]],allowNull:true,defaultValue:null},queue_minutes:{type:_0xa6edx2[_0xaa93[2]],allowNull:true,defaultValue:null},queue_seconds:{type:_0xa6edx2[_0xaa93[2]],allowNull:true,defaultValue:null},queue_minute:{type:_0xa6edx2[_0xaa93[2]],allowNull:true,defaultValue:null},queue_thankyou:{type:_0xa6edx2[_0xaa93[2]],allowNull:true,defaultValue:null},queue_callerannounce:{type:_0xa6edx2[_0xaa93[2]],allowNull:true},queue_reporthold:{type:_0xa6edx2[_0xaa93[2]],allowNull:true},announce_frequency:{type:_0xa6edx2.INTEGER(11),allowNull:true,defaultValue:0},announce_to_first_user:{type:_0xa6edx2.ENUM(_0xaa93[5],_0xaa93[6]),allowNull:true},min_announce_frequency:{type:_0xa6edx2.INTEGER(11),allowNull:true,defaultValue:0},announce_round_seconds:{type:_0xa6edx2.INTEGER(11),allowNull:true,defaultValue:0},announce_holdtime:{type:_0xa6edx2[_0xaa93[2]],allowNull:true,defaultValue:_0xaa93[6]},announce_position:{type:_0xa6edx2[_0xaa93[2]],allowNull:true,defaultValue:_0xaa93[6]},announce_position_limit:{type:_0xa6edx2.INTEGER(11),allowNull:true},periodic_announce:{type:_0xa6edx2[_0xaa93[2]],allowNull:true,defaultValue:_0xaa93[4]},periodic_announce_frequency:{type:_0xa6edx2.INTEGER(11),allowNull:true,defaultValue:0},relative_periodic_announce:{type:_0xa6edx2.ENUM(_0xaa93[5],_0xaa93[6]),allowNull:true,defaultValue:_0xaa93[5]},random_periodic_announce:{type:_0xa6edx2.ENUM(_0xaa93[5],_0xaa93[6]),allowNull:true,defaultValue:_0xaa93[6]},retry:{type:_0xa6edx2.INTEGER(11),allowNull:true,defaultValue:0},wrapuptime:{type:_0xa6edx2.INTEGER(11),allowNull:true,defaultValue:0},penaltymemberslimit:{type:_0xa6edx2.INTEGER(11),allowNull:true},autofill:{type:_0xa6edx2.ENUM(_0xaa93[5],_0xaa93[6]),allowNull:true},monitor_type:{type:_0xa6edx2[_0xaa93[2]],allowNull:true},autopause:{type:_0xa6edx2.ENUM(_0xaa93[5],_0xaa93[6],_0xaa93[8]),allowNull:true,defaultValue:_0xaa93[6]},autopausedelay:{type:_0xa6edx2.INTEGER(11),allowNull:true},autopausebusy:{type:_0xa6edx2.ENUM(_0xaa93[5],_0xaa93[6]),allowNull:true},autopauseunavail:{type:_0xa6edx2.ENUM(_0xaa93[5],_0xaa93[6]),allowNull:true},maxlen:{type:_0xa6edx2.INTEGER(11),allowNull:true,defaultValue:0},servicelevel:{type:_0xa6edx2.INTEGER(11),allowNull:true,defaultValue:0},strategy:{type:_0xa6edx2.ENUM(_0xaa93[9],_0xaa93[10],_0xaa93[11],_0xaa93[12],_0xaa93[13],_0xaa93[14],_0xaa93[15],_0xaa93[16]),allowNull:true},joinempty:{type:_0xa6edx2[_0xaa93[2]],allowNull:true,defaultValue:_0xaa93[5]},leavewhenempty:{type:_0xa6edx2[_0xaa93[2]],allowNull:true,defaultValue:_0xaa93[6]},reportholdtime:{type:_0xa6edx2.ENUM(_0xaa93[5],_0xaa93[6]),allowNull:true,defaultValue:_0xaa93[6]},memberdelay:{type:_0xa6edx2.INTEGER(11),allowNull:true,defaultValue:0},weight:{type:_0xa6edx2.INTEGER(11),allowNull:true,defaultValue:0},timeoutrestart:{type:_0xa6edx2.ENUM(_0xaa93[5],_0xaa93[6]),allowNull:true,defaultValue:_0xaa93[6]},defaultrule:{type:_0xa6edx2[_0xaa93[2]],allowNull:true},timeoutpriority:{type:_0xa6edx2[_0xaa93[2]],allowNull:true}},{tableName:_0xaa93[17],associate:function(_0xa6edx4){_0xa6edx3[_0xaa93[20]](_0xa6edx4.User,{through:_0xa6edx4[_0xaa93[18]],foreignKey:_0xaa93[19]})}});_0xa6edx3[_0xaa93[25]](function(_0xa6edx5){if(_0xa6edx5[_0xaa93[23]](_0xaa93[22])){throw  new Error(_0xaa93[24])}});return _0xa6edx3;};
\ No newline at end of file
+/* jshint indent: 2 */
+
+module.exports = function(sequelize, DataTypes) {
+  var VoiceQueue = sequelize.define('VoiceQueue', {
+    name: {
+      type: DataTypes.STRING,
+      primaryKey: true,
+      unique: true,
+      validate: {
+        notEmpty: true,
+        is: {
+          args: /^[A-Za-z0-9._\+*!\-\[\]]+$/,
+          msg: 'The name is not valid!'
+        }
+      },
+    },
+    musiconhold: {
+      type: DataTypes.STRING,
+      allowNull: true,
+      defaultValue: 'default'
+    },
+    announce: {
+      type: DataTypes.STRING,
+      allowNull: true,
+      defaultValue: ''
+    },
+    strategy: {
+      type: DataTypes.ENUM('ringall', 'leastrecent', 'fewestcalls', 'random', 'rrmemory', 'linear', 'wrandom', 'rrordered'),
+      allowNull: false,
+      defaultValue: 'ringall'
+    },
+    servicelevel: {
+      type: DataTypes.INTEGER(11),
+      allowNull: true,
+      defaultValue: 0
+    },
+    context: {
+      type: DataTypes.STRING,
+      allowNull: true,
+      defaultValue: null
+    },
+    penaltymemberslimit: {
+      type: DataTypes.INTEGER(11),
+      allowNull: true,
+    },
+    timeout: {
+      type: DataTypes.INTEGER(11),
+      allowNull: true,
+      defaultValue: 15
+    },
+    retry: {
+      type: DataTypes.INTEGER(11),
+      allowNull: true,
+      defaultValue: 2
+    },
+    timeoutpriority: {
+      type: DataTypes.STRING,
+      allowNull: true,
+    },
+    weight: {
+      type: DataTypes.INTEGER(11),
+      allowNull: true,
+      defaultValue: 0
+    },
+    wrapuptime: {
+      type: DataTypes.INTEGER(11),
+      allowNull: true,
+      defaultValue: 0
+    },
+    autofill: {
+      type: DataTypes.ENUM('yes', 'no'),
+      allowNull: true,
+      defaultValue: 'yes'
+    },
+    autopause: {
+      type: DataTypes.ENUM('yes', 'no', 'all'),
+      allowNull: true,
+      defaultValue: 'no'
+    },
+    autopausedelay: {
+      type: DataTypes.INTEGER(11),
+      allowNull: true,
+    },
+    autopausebusy: {
+      type: DataTypes.ENUM('yes', 'no'),
+      allowNull: true,
+      defaultValue: 'no'
+    },
+    autopauseunavail: {
+      type: DataTypes.ENUM('yes', 'no'),
+      allowNull: true,
+      defaultValue: 'no'
+    },
+    maxlen: {
+      type: DataTypes.INTEGER(11),
+      allowNull: true,
+      defaultValue: 0
+    },
+    setinterfacevar: {
+      type: DataTypes.ENUM('yes', 'no'),
+      allowNull: true,
+      defaultValue: 'no'
+    },
+    setqueueentryvar: {
+      type: DataTypes.ENUM('yes', 'no'),
+      allowNull: true,
+      defautValue: 'no'
+    },
+    setqueuevar: {
+      type: DataTypes.ENUM('yes', 'no'),
+      allowNull: true,
+      defaultValue: 'no'
+    },
+    membermacro: {
+      type: DataTypes.STRING,
+      allowNull: true,
+    },
+    membergosub: {
+      type: DataTypes.STRING,
+      allowNull: true,
+    },
+    announce_frequency: {
+      type: DataTypes.INTEGER(11),
+      allowNull: true,
+      defaultValue: 0
+    },
+    min_announce_frequency: {
+      type: DataTypes.INTEGER(11),
+      allowNull: true,
+      defaultValue: 0
+    },
+    periodic_announce_frequency: {
+      type: DataTypes.INTEGER(11),
+      allowNull: true,
+      defaultValue: 0
+    },
+    random_periodic_announce: {
+      type: DataTypes.ENUM('yes', 'no'),
+      allowNull: true,
+      defaultValue: 'no'
+    },
+    relative_periodic_announce: {
+      type: DataTypes.ENUM('yes', 'no'),
+      allowNull: true,
+      defaultValue: 'yes'
+    },
+    announce_holdtime: {
+      type: DataTypes.ENUM('yes', 'no', 'once'),
+      allowNull: true,
+      defaultValue: 'no'
+    },
+    announce_position: {
+      type: DataTypes.STRING,
+      allowNull: true,
+      defaultValue: 'no'
+    },
+    announce_to_first_user: {
+      type: DataTypes.ENUM('yes', 'no'),
+      allowNull: true,
+    },
+    announce_position_limit: {
+      type: DataTypes.INTEGER(11),
+      allowNull: true,
+    },
+    announce_round_seconds: {
+      type: DataTypes.ENUM('0', '5', '10', '15', '20', '30'),
+      allowNull: true,
+      defaultValue: '0'
+    },
+    monitor_format: {
+      type: DataTypes.STRING,
+      allowNull: true,
+      defaultValue: ''
+    },
+    monitor_type: {
+      type: DataTypes.STRING,
+      allowNull: true,
+    },
+    queue_youarenext: {
+      type: DataTypes.STRING,
+      allowNull: true,
+      defaultValue: null
+    },
+    queue_thereare: {
+      type: DataTypes.STRING,
+      allowNull: true,
+      defaultValue: null
+    },
+    queue_callswaiting: {
+      type: DataTypes.STRING,
+      allowNull: true,
+      defaultValue: null
+    },
+    queue_holdtime: {
+      type: DataTypes.STRING,
+      allowNull: true,
+      defaultValue: null
+    },
+    queue_minute: {
+      type: DataTypes.STRING,
+      allowNull: true,
+      defaultValue: null
+    },
+    queue_minutes: {
+      type: DataTypes.STRING,
+      allowNull: true,
+      defaultValue: null
+    },
+    queue_seconds: {
+      type: DataTypes.STRING,
+      allowNull: true,
+      defaultValue: null
+    },
+    queue_thankyou: {
+      type: DataTypes.STRING,
+      allowNull: true,
+      defaultValue: null
+    },
+    queue_reporthold: {
+      type: DataTypes.STRING,
+      allowNull: true,
+    },
+    queue_quantity1: {
+      type: DataTypes.STRING,
+      allowNull: true
+    },
+    queue_quantity2: {
+      type: DataTypes.STRING,
+      allowNull: true
+    },
+    queue_periodic_announce: {
+      type: DataTypes.STRING,
+      allowNull: true
+    },
+    queue_less_than: {
+      type: DataTypes.STRING,
+      allowNull: true
+    },
+    periodic_announce: {
+      type: DataTypes.STRING,
+      allowNull: true,
+      defaultValue: ''
+    },
+    joinempty: {
+      type: DataTypes.STRING,
+      allowNull: true,
+      defaultValue: 'yes'
+    },
+    leavewhenempty: {
+      type: DataTypes.STRING,
+      allowNull: true,
+      defaultValue: 'no'
+    },
+    reportholdtime: {
+      type: DataTypes.ENUM('yes', 'no'),
+      allowNull: true,
+      defaultValue: 'no'
+    },
+    ringinuse: {
+      type: DataTypes.ENUM('yes', 'no'),
+      allowNull: true,
+      defaultValue: 'no'
+    },
+    memberdelay: {
+      type: DataTypes.INTEGER(11),
+      allowNull: true,
+      defaultValue: 0
+    },
+    timeoutrestart: {
+      type: DataTypes.ENUM('yes', 'no'),
+      allowNull: true,
+      defaultValue: 'no'
+    },
+    defaultrule: {
+      type: DataTypes.STRING,
+      allowNull: true,
+    },
+    description: {
+      type: DataTypes.STRING,
+      allowNull: true,
+    },
+    acw: {
+      type: DataTypes.BOOLEAN,
+      defaultValue: 0
+    },
+    acwTimeout: {
+      type: DataTypes.INTEGER(11),
+      defaultValue: 10
+    }
+  }, {
+    tableName: 'voice_queues',
+    associate: function(models) {
+      VoiceQueue.belongsToMany(models.User, {
+        through: models.UserHasVoiceQueue,
+        foreignKey: 'queue',
+        required: false
+      });
+      VoiceQueue.belongsToMany(models.User, {
+        through: models.UserHasVoiceQueuePermit,
+        as: 'PVoiceQueues'
+      });
+    }
+  });
+
+  VoiceQueue.beforeUpdate(function(updatedQueue) {
+    if (updatedQueue.changed('name')) {
+      throw new Error("You can't modify a queue name");
+    }
+  });
+
+  return VoiceQueue;
+};