Built motion from commit 98555a2.|1.0.12
[motion.git] / server / models / voice_queue.js
index bc6429f..ccc5333 100644 (file)
@@ -5,7 +5,14 @@ module.exports = function(sequelize, DataTypes) {
     name: {
       type: DataTypes.STRING,
       primaryKey: true,
-      unique: true
+      unique: true,
+      validate: {
+        notEmpty: true,
+        is: {
+          args: /^[A-Za-z0-9._\+*!\-\[\]]+$/,
+          msg: 'The name is not valid!'
+        }
+      },
     },
     musiconhold: {
       type: DataTypes.STRING,
@@ -17,116 +24,98 @@ module.exports = function(sequelize, DataTypes) {
       allowNull: true,
       defaultValue: ''
     },
-    context: {
-      type: DataTypes.STRING,
-      allowNull: true,
-      defaultValue: null
+    strategy: {
+      type: DataTypes.ENUM('ringall', 'leastrecent', 'fewestcalls', 'random', 'rrmemory', 'linear', 'wrandom', 'rrordered'),
+      allowNull: false,
+      defaultValue: 'ringall'
     },
-    timeout: {
+    servicelevel: {
       type: DataTypes.INTEGER(11),
       allowNull: true,
       defaultValue: 0
     },
-    ringinuse: {
-      type: DataTypes.ENUM('yes', 'no'),
-      allowNull: true,
-      defaultValue: 'no'
-    },
-    setinterfacevar: {
-      type: DataTypes.ENUM('yes', 'no'),
-      allowNull: true,
-      defaultValue: 'yes'
-    },
-    setqueuevar: {
-      type: DataTypes.ENUM('yes', 'no'),
+    context: {
+      type: DataTypes.STRING,
       allowNull: true,
-      defaultValue: 'yes'
+      defaultValue: null
     },
-    setqueueentryvar: {
-      type: DataTypes.ENUM('yes', 'no'),
+    penaltymemberslimit: {
+      type: DataTypes.INTEGER(11),
       allowNull: true,
-      defautValue: 'yes'
     },
-    eventwhencalled: {
-      type: DataTypes.ENUM('yes', 'no', 'vars'),
+    timeout: {
+      type: DataTypes.INTEGER(11),
       allowNull: true,
-      defautValue: 'yes'
+      defaultValue: 15
     },
-    eventmemberstatus: {
-      type: DataTypes.ENUM('yes', 'no'),
+    retry: {
+      type: DataTypes.INTEGER(11),
       allowNull: true,
-      defautValue: 'yes'
+      defaultValue: 2
     },
-    monitor_format: {
+    timeoutpriority: {
       type: DataTypes.STRING,
       allowNull: true,
-      defaultValue: ''
     },
-    membermacro: {
-      type: DataTypes.STRING,
+    weight: {
+      type: DataTypes.INTEGER(11),
       allowNull: true,
+      defaultValue: 0
     },
-    description: {
-      type: DataTypes.STRING,
+    wrapuptime: {
+      type: DataTypes.INTEGER(11),
       allowNull: true,
+      defaultValue: 0
     },
-    membergosub: {
-      type: DataTypes.STRING,
+    autofill: {
+      type: DataTypes.ENUM('yes', 'no'),
       allowNull: true,
+      defaultValue: 'yes'
     },
-    queue_youarenext: {
-      type: DataTypes.STRING,
+    autopause: {
+      type: DataTypes.ENUM('yes', 'no', 'all'),
       allowNull: true,
-      defaultValue: null
+      defaultValue: 'no'
     },
-    queue_thereare: {
-      type: DataTypes.STRING,
+    autopausedelay: {
+      type: DataTypes.INTEGER(11),
       allowNull: true,
-      defaultValue: null
     },
-    queue_callswaiting: {
-      type: DataTypes.STRING,
+    autopausebusy: {
+      type: DataTypes.ENUM('yes', 'no'),
       allowNull: true,
-      defaultValue: null
-    },
-    queue_quantity1: {
-      type: DataTypes.STRING,
-      allowNull: true
-    },
-    queue_quantity2: {
-      type: DataTypes.STRING,
-      allowNull: true
+      defaultValue: 'no'
     },
-    queue_holdtime: {
-      type: DataTypes.STRING,
+    autopauseunavail: {
+      type: DataTypes.ENUM('yes', 'no'),
       allowNull: true,
-      defaultValue: null
+      defaultValue: 'no'
     },
-    queue_minutes: {
-      type: DataTypes.STRING,
+    maxlen: {
+      type: DataTypes.INTEGER(11),
       allowNull: true,
-      defaultValue: null
+      defaultValue: 0
     },
-    queue_seconds: {
-      type: DataTypes.STRING,
+    setinterfacevar: {
+      type: DataTypes.ENUM('yes', 'no'),
       allowNull: true,
-      defaultValue: null
+      defaultValue: 'no'
     },
-    queue_minute: {
-      type: DataTypes.STRING,
+    setqueueentryvar: {
+      type: DataTypes.ENUM('yes', 'no'),
       allowNull: true,
-      defaultValue: null
+      defautValue: 'no'
     },
-    queue_thankyou: {
-      type: DataTypes.STRING,
+    setqueuevar: {
+      type: DataTypes.ENUM('yes', 'no'),
       allowNull: true,
-      defaultValue: null
+      defaultValue: 'no'
     },
-    queue_callerannounce: {
+    membermacro: {
       type: DataTypes.STRING,
       allowNull: true,
     },
-    queue_reporthold: {
+    membergosub: {
       type: DataTypes.STRING,
       allowNull: true,
     },
@@ -135,22 +124,28 @@ module.exports = function(sequelize, DataTypes) {
       allowNull: true,
       defaultValue: 0
     },
-    announce_to_first_user: {
-      type: DataTypes.ENUM('yes', 'no'),
-      allowNull: true,
-    },
     min_announce_frequency: {
       type: DataTypes.INTEGER(11),
       allowNull: true,
       defaultValue: 0
     },
-    announce_round_seconds: {
+    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.STRING,
+      type: DataTypes.ENUM('yes', 'no', 'once'),
       allowNull: true,
       defaultValue: 'no'
     },
@@ -159,82 +154,92 @@ module.exports = function(sequelize, DataTypes) {
       allowNull: true,
       defaultValue: 'no'
     },
+    announce_to_first_user: {
+      type: DataTypes.ENUM('yes', 'no'),
+      allowNull: true,
+    },
     announce_position_limit: {
       type: DataTypes.INTEGER(11),
       allowNull: true,
     },
-    periodic_announce: {
+    announce_round_seconds: {
+      type: DataTypes.ENUM('0', '5', '10', '15', '20', '30'),
+      allowNull: true,
+      defaultValue: '0'
+    },
+    monitor_format: {
       type: DataTypes.STRING,
       allowNull: true,
       defaultValue: ''
     },
-    periodic_announce_frequency: {
-      type: DataTypes.INTEGER(11),
+    monitor_type: {
+      type: DataTypes.STRING,
       allowNull: true,
-      defaultValue: 0
     },
-    relative_periodic_announce: {
-      type: DataTypes.ENUM('yes', 'no'),
+    queue_youarenext: {
+      type: DataTypes.STRING,
       allowNull: true,
-      defaultValue: 'yes'
+      defaultValue: null
     },
-    random_periodic_announce: {
-      type: DataTypes.ENUM('yes', 'no'),
+    queue_thereare: {
+      type: DataTypes.STRING,
       allowNull: true,
-      defaultValue: 'no'
+      defaultValue: null
     },
-    retry: {
-      type: DataTypes.INTEGER(11),
+    queue_callswaiting: {
+      type: DataTypes.STRING,
       allowNull: true,
-      defaultValue: 0
+      defaultValue: null
     },
-    wrapuptime: {
-      type: DataTypes.INTEGER(11),
+    queue_holdtime: {
+      type: DataTypes.STRING,
       allowNull: true,
-      defaultValue: 0
+      defaultValue: null
     },
-    penaltymemberslimit: {
-      type: DataTypes.INTEGER(11),
+    queue_minute: {
+      type: DataTypes.STRING,
       allowNull: true,
+      defaultValue: null
     },
-    autofill: {
-      type: DataTypes.ENUM('yes', 'no'),
+    queue_minutes: {
+      type: DataTypes.STRING,
       allowNull: true,
+      defaultValue: null
     },
-    monitor_type: {
+    queue_seconds: {
       type: DataTypes.STRING,
       allowNull: true,
+      defaultValue: null
     },
-    autopause: {
-      type: DataTypes.ENUM('yes', 'no', 'all'),
+    queue_thankyou: {
+      type: DataTypes.STRING,
       allowNull: true,
-      defaultValue: 'no'
+      defaultValue: null
     },
-    autopausedelay: {
-      type: DataTypes.INTEGER(11),
+    queue_reporthold: {
+      type: DataTypes.STRING,
       allowNull: true,
     },
-    autopausebusy: {
-      type: DataTypes.ENUM('yes', 'no'),
-      allowNull: true,
+    queue_quantity1: {
+      type: DataTypes.STRING,
+      allowNull: true
     },
-    autopauseunavail: {
-      type: DataTypes.ENUM('yes', 'no'),
-      allowNull: true,
+    queue_quantity2: {
+      type: DataTypes.STRING,
+      allowNull: true
     },
-    maxlen: {
-      type: DataTypes.INTEGER(11),
-      allowNull: true,
-      defaultValue: 0
+    queue_periodic_announce: {
+      type: DataTypes.STRING,
+      allowNull: true
     },
-    servicelevel: {
-      type: DataTypes.INTEGER(11),
-      allowNull: true,
-      defaultValue: 0
+    queue_less_than: {
+      type: DataTypes.STRING,
+      allowNull: true
     },
-    strategy: {
-      type: DataTypes.ENUM('ringall', 'leastrecent', 'fewestcalls', 'random', 'rrmemory', 'linear', 'wrandom', 'rrordered'),
+    periodic_announce: {
+      type: DataTypes.STRING,
       allowNull: true,
+      defaultValue: ''
     },
     joinempty: {
       type: DataTypes.STRING,
@@ -251,12 +256,12 @@ module.exports = function(sequelize, DataTypes) {
       allowNull: true,
       defaultValue: 'no'
     },
-    memberdelay: {
-      type: DataTypes.INTEGER(11),
+    ringinuse: {
+      type: DataTypes.ENUM('yes', 'no'),
       allowNull: true,
-      defaultValue: 0
+      defaultValue: 'no'
     },
-    weight: {
+    memberdelay: {
       type: DataTypes.INTEGER(11),
       allowNull: true,
       defaultValue: 0
@@ -270,16 +275,29 @@ module.exports = function(sequelize, DataTypes) {
       type: DataTypes.STRING,
       allowNull: true,
     },
-    timeoutpriority: {
+    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'
+        foreignKey: 'queue',
+        required: false
+      });
+      VoiceQueue.belongsToMany(models.User, {
+        through: models.UserHasVoiceQueuePermit,
+        as: 'PVoiceQueues'
       });
     }
   });