'use strict';
+
module.exports = function(sequelize, DataTypes) {
var SmsAccount = sequelize.define('SmsAccount', {
name: {
type: DataTypes.STRING
},
type: {
- type: DataTypes.STRING
+ type: DataTypes.ENUM('twilio', 'skebby')
+ },
+ smstype: {
+ type: DataTypes.ENUM('basic', 'classic', 'classic+')
},
+ remote: DataTypes.STRING,
fidelity: {
type: DataTypes.BOOLEAN,
defaultValue: false
defaultValue: 0
},
phone: {
- type: DataTypes.INTEGER,
- unique: true
-
+ // type: DataTypes.INTEGER,
+ // unique: true
+ type: DataTypes.STRING,
+ unique: true,
+ validate: {
+ is: /^[0-9]+$/
+ }
},
sid: {
type: DataTypes.STRING
},
password: {
type: DataTypes.STRING
+ },
+ acceptUrl: {
+ type: DataTypes.STRING
+ },
+ rejectUrl: {
+ type: DataTypes.STRING
+ },
+ acceptMethod: {
+ type: DataTypes.ENUM('GET', 'POST')
+ },
+ rejectMethod: {
+ type: DataTypes.ENUM('GET', 'POST')
+ },
+ closeUrl: {
+ type: DataTypes.STRING
+ },
+ closeMethod: {
+ type: DataTypes.ENUM('GET', 'POST')
+ },
+ actions: {
+ type: DataTypes.STRING,
+ get: function() {
+ return this.getDataValue('actions') ? JSON.parse(this.getDataValue('actions')) : [];
+ },
+ set: function(val) {
+ return this.setDataValue('actions', JSON.stringify(val));
+ }
}
-
}, {
tableName: 'sms_accounts',
associate: function(models) {
- // BINDING
SmsAccount.hasMany(models.SmsRoom);
+ SmsAccount.hasMany(models.SmsApplication, {
+ onDelete: 'cascade'
+ });
SmsAccount.hasMany(models.SmsMessage);
-
+ // SCOPES
+ SmsAccount.hasMany(models.SmsDisposition);
+ SmsAccount.belongsTo(models.List);
+ SmsAccount.addScope('default', {
+ include: [{
+ model: models.SmsApplication,
+ include: [{
+ model: models.User,
+ attributes: ['id',
+ 'name',
+ 'email',
+ 'internal',
+ 'fullname'
+ ]
+ }, {
+ model: models.SmsQueue
+ }]
+ }]
+ });
}
});
return SmsAccount;