Built motion from commit 3594e56.|0.0.120
[motion.git] / server / models / mail_account.js
index caf5343..3235d20 100644 (file)
@@ -7,15 +7,37 @@ module.exports = function(sequelize, DataTypes) {
        var MailAccount = sequelize.define('MailAccount', {
                description: DataTypes.STRING,
                name: {
+                       type: DataTypes.STRING
+               },
+               address: {
                        type: DataTypes.STRING,
-                       unique: true
+                       unique: true,
+                       isEmail: true,
+                       set: function(address) {
+                               if (address) {
+                                       this.setDataValue('address', address.toLowerCase());
+                               }
+                       },
+               },
+               fidelity: {
+                       type: DataTypes.BOOLEAN,
+                       defaultValue: false
+               },
+               timeout: {
+                       type: DataTypes.INTEGER,
+                       defaultValue: 0
                },
-               address: DataTypes.STRING,
+               whiteLabel: {
+                       type: DataTypes.STRING
+               }
        }, {
                tableName: 'mail_accounts',
                associate: function(models) {
+                       // RELATIONS
+                       MailAccount.belongsTo(models.List);
+                       MailAccount.belongsTo(models.Template);
                        MailAccount.hasMany(models.MailRoom);
-                       MailAccount.hasMany(models.MailTemplate);
+                       MailAccount.hasMany(models.MailDisposition);
                        MailAccount.hasMany(models.MailApplication);
                        MailAccount.hasOne(models.MailServerIn, {
                                onDelete: 'cascade',
@@ -25,6 +47,30 @@ module.exports = function(sequelize, DataTypes) {
                                onDelete: 'cascade',
                                hooks: true
                        });
+
+                       // SCOPES
+                       MailAccount.addScope('default', {
+                               include: [{
+                                       model: models.MailServerIn,
+                                       attributes: ['id', 'host', 'port', 'username', 'password', 'ssl', 'delete', 'filter', 'state', 'mailbox', 'connTimeout', 'authTimeout', 'keepalive', 'source']
+                               }, {
+                                       model: models.MailServerOut,
+                                       attributes: ['id', 'host', 'port', 'username', 'password', 'ssl', 'service', 'state', 'source']
+                               }, {
+                                       model: models.MailApplication,
+                                       include: [{
+                                               model: models.User,
+                                               attributes: ['id',
+                                                       'name',
+                                                       'email',
+                                                       'internal',
+                                                       'fullname'
+                                               ]
+                                       }, {
+                                               model: models.MailQueue
+                                       }]
+                               }]
+                       });
                }
        });