Built motion from commit d127c62.|0.0.151
[motion.git] / server / models / mail_account.js
index 38dd0cf..d9c86ef 100644 (file)
@@ -1,9 +1,8 @@
-/**
- * Chat Website Model
- */
+'use strict';
 
-module.exports = function(sequelize, DataTypes) {
+const _ = require('lodash');
 
+module.exports = function(sequelize, DataTypes) {
        var MailAccount = sequelize.define('MailAccount', {
                description: DataTypes.STRING,
                name: {
@@ -17,7 +16,7 @@ module.exports = function(sequelize, DataTypes) {
                                if (address) {
                                        this.setDataValue('address', address.toLowerCase());
                                }
-                       },
+                       }
                },
                fidelity: {
                        type: DataTypes.BOOLEAN,
@@ -26,12 +25,61 @@ module.exports = function(sequelize, DataTypes) {
                timeout: {
                        type: DataTypes.INTEGER,
                        defaultValue: 0
+               },
+               whiteLabel: {
+                       type: DataTypes.STRING
+               },
+               acceptUrl: {
+                       type: DataTypes.STRING
+               },
+               rejectUrl: {
+                       type: DataTypes.STRING
+               },
+               acceptMethod: {
+                       type: DataTypes.ENUM('GET', 'POST')
+               },
+               rejectMethod: {
+                       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));
+                       }
+               },
+               closeUrl: {
+                       type: DataTypes.STRING
+               },
+               closeMethod: {
+                       type: DataTypes.ENUM('GET', 'POST')
+               },
+               signature: {
+                       type: DataTypes.BLOB,
+                       get: function() {
+                               if (this.getDataValue('signature')) {
+                                       return _.toString(this.getDataValue('signature'));
+                               }
+                       }
+               },
+               custom: {
+                       type: DataTypes.BOOLEAN,
+                       defaultValue: false
+               },
+               service: {
+                       type: DataTypes.BOOLEAN,
+                       defaultValue: false
                }
        }, {
                tableName: 'mail_accounts',
                associate: function(models) {
                        // RELATIONS
+                       MailAccount.belongsTo(models.List);
+                       MailAccount.belongsTo(models.Template);
                        MailAccount.hasMany(models.MailRoom);
+                       MailAccount.hasMany(models.MailDisposition);
                        MailAccount.hasMany(models.MailApplication);
                        MailAccount.hasOne(models.MailServerIn, {
                                onDelete: 'cascade',
@@ -44,12 +92,15 @@ module.exports = function(sequelize, DataTypes) {
 
                        // SCOPES
                        MailAccount.addScope('default', {
+                               where: {
+                                       custom: false,
+                               },
                                include: [{
                                        model: models.MailServerIn,
-                                       attributes: ['id', 'host', 'port', 'username', 'password', 'ssl', 'delete', 'filter', 'state', 'mailbox', 'connTimeout', 'authTimeout', 'keepalive', 'source']
+                                       attributes: ['id', 'host', 'port', 'username', 'password', 'ssl', 'delete', 'filter', 'state', 'mailbox', 'connTimeout', 'authTimeout', 'keepalive', 'source', 'polling', 'pollingTimeout']
                                }, {
                                        model: models.MailServerOut,
-                                       attributes: ['id', 'host', 'port', 'username', 'password', 'ssl', 'service', 'state', 'source']
+                                       attributes: ['id', 'host', 'port', 'username', 'password', 'ssl', 'state', 'source', 'description']
                                }, {
                                        model: models.MailApplication,
                                        include: [{