var User = sequelize.define('User', {
name: {
type: DataTypes.STRING,
- unique: true,
+ unique: 'name',
validate: {
notEmpty: true,
is: /^[A-Za-z0-9\.\_]+$/i
fullname: {
type: DataTypes.STRING,
allowNull: false,
- unique: true
},
email: {
type: DataTypes.STRING,
- unique: true,
+ unique: 'email',
isEmail: true,
set: function(email) {
if (email) {
},
internal: {
type: DataTypes.INTEGER(11),
- unique: true,
+ unique: 'internal',
set: function(internal) {
this.setDataValue('internal', internal);
this.setDataValue('accountcode', internal);
voicePause: {
type: DataTypes.BOOLEAN,
defaultValue: false,
- set: function(voicePause) {
- this.setDataValue('voicePause', voicePause);
- if (voicePause) {
- this.setDataValue('queueStatus', 'paused');
- this.setDataValue('queueStatusAt', moment().format("YYYY-MM-DD HH:mm:ss"));
- } else {
- this.setDataValue('queueStatus', 'complete');
- this.setDataValue('queueStatusAt', moment().format("YYYY-MM-DD HH:mm:ss"));
- }
- }
+ // set: function(voicePause) {
+ // this.setDataValue('voicePause', voicePause);
+ // if (voicePause) {
+ // this.setDataValue('queueStatus', 'paused');
+ // this.setDataValue('queueStatusAt', moment().format("YYYY-MM-DD HH:mm:ss"));
+ // } else {
+ // this.setDataValue('queueStatus', 'complete');
+ // this.setDataValue('queueStatusAt', moment().format("YYYY-MM-DD HH:mm:ss"));
+ // }
+ // }
},
chatPause: {
type: DataTypes.BOOLEAN,
'PROHIB_FAILED_SCREEN', 'PROHIB'),
allowNull: true,
},
- permit: {
+ deny: {
type: DataTypes.STRING,
allowNull: true,
},
- deny: {
+ permit: {
type: DataTypes.STRING,
allowNull: true,
},
allow: {
type: DataTypes.STRING,
allowNull: true,
- defaultValue: 'alaw;ulaw;gsm'
+ defaultValue: 'ulaw;gsm'
},
autoframing: {
type: DataTypes.ENUM('yes', 'no'),
},
phoneBarEnableRecording: {
type: DataTypes.BOOLEAN,
+ defaultValue: true
+ },
+ showWebBar: {
+ type: DataTypes.BOOLEAN,
defaultValue: false
+ },
+ phoneBarShowOmniDesktop: {
+ type: DataTypes.BOOLEAN,
+ defaultValue: true
+ },
+ phoneBarRingInUse: {
+ type: DataTypes.BOOLEAN,
+ defaultValue: false
+ },
+ phoneBarDnd: {
+ type: DataTypes.BOOLEAN,
+ defaultValue: true
+ },
+ phoneBarUnansweredCallBadge: {
+ type: DataTypes.BOOLEAN,
+ defaultValue: true
+ },
+ phonebarEnableDtmfTone: {
+ type: DataTypes.BOOLEAN,
+ defaultValue: false
+ },
+ phonebarAutoAnswerDelay: {
+ type: DataTypes.INTEGER,
+ defaultValue: 0
}
}, {
tableName: 'users',
+ charset: 'utf8',
+ collate: 'utf8_bin',
instanceMethods: {
/**
* Authenticate - check if the passwords are the same
through: models.UserHasModule,
required: false
});
+ User.belongsToMany(models.MailRoom, {
+ through: models.UserHasMailRoom,
+ });
User.belongsToMany(models.Channel, {
through: 'user_has_channels'
});
- User.belongsToMany(models.MailRoom, {
- through: 'user_has_mail_rooms'
- });
User.belongsToMany(models.SmsRoom, {
through: 'user_has_sms_rooms'
});
'fullcontact',
'port',
'lastms',
- 'description'
+ 'description',
+ 'callgroup',
+ 'pickupgroup'
]
});
'port',
'lastms',
'description',
+ 'callgroup',
+ 'pickupgroup'
]
});
User.addScope('agent', {
'port',
'lastms',
'description',
- 'loginInPause'
+ 'loginInPause',
+ 'showWebBar',
+ 'callgroup',
+ 'pickupgroup',
+ 'phoneBarShowOmniDesktop',
+ 'phoneBarRingInUse',
+ 'phoneBarDnd',
+ 'phoneBarUnansweredCallBadge',
+ 'phone',
+ 'mobile',
+ 'phonebarEnableDtmfTone',
+ 'phonebarAutoAnswerDelay'
]
});
User.addScope('telephone', {
}
});
User.addScope('queues', {
- include: [models.VoiceQueue, models.ChatQueue, models.MailQueue,
- models.FaxQueue, models.SmsQueue, models.OpenchannelQueue
- ]
+ include: [{
+ model: models.VoiceQueue,
+ required: false
+ }, {
+ model: models.ChatQueue,
+ required: false
+ }, {
+ model: models.MailQueue,
+ required: false
+ }, {
+ model: models.FaxQueue,
+ required: false
+ }, {
+ model: models.SmsQueue,
+ required: false
+ }, {
+ model: models.OpenchannelQueue,
+ required: false
+ }]
});
User.addScope('checkPauseStatus', function(query) {
}
return scope;
});
- User.addScope('checkQueueStatus', function(query) {
+ User.addScope('checkQueueStatus', function(query) { //to be executed before checkOnlineStatus
var scope = {
where: {}
};
if (query.queueStatus) {
- scope.where.queueStatus = query.queueStatus;
+ if (query.queueStatus === 'paused') {
+ scope.where.voicePause = true;
+ } else {
+ scope.where.queueStatus = query.queueStatus;
+ scope.where.voicePause = false;
+ query.online = 'true';
+ }
delete query.queueStatus;
}
return scope;
'pauseType',
'phoneBarRemoteControl',
'phoneBarRemoteControlPort',
- 'loginInPause'
+ 'loginInPause',
+ 'showWebBar',
+ 'phonebarEnableDtmfTone',
+ 'phonebarAutoAnswerDelay'
],
include: [{
model: models.Module,
+ attributes: ['id', 'path'],
include: [{
model: models.Module,
+ attributes: ['id', 'path'],
as: 'SubModules',
required: false,
include: [{
- all: true
+ model: models.Module,
+ attributes: ['id', 'path'],
+ as: 'SubModules'
}]
}]
- }, {
- model: models.VoiceQueue,
- as: 'PVoiceQueues'
- }, {
- model: models.ChatQueue,
- as: 'PChatQueues'
- }, {
- model: models.MailQueue,
- as: 'PMailQueues'
- }, {
- model: models.FaxQueue,
- as: 'PFaxQueues'
- }, {
- model: models.SmsQueue,
- as: 'PSmsQueues'
}]
};
return scope;