Built motion from commit 1038d87.|0.0.141
[motion.git] / server / models / mail_account.js
index 9acf1f4..94efd99 100644 (file)
@@ -1 +1,123 @@
-var _0x1bb7=["\x65\x78\x70\x6F\x72\x74\x73","\x4D\x61\x69\x6C\x41\x63\x63\x6F\x75\x6E\x74","\x53\x54\x52\x49\x4E\x47","\x42\x4F\x4F\x4C\x45\x41\x4E","\x49\x4E\x54\x45\x47\x45\x52","\x6D\x61\x69\x6C\x5F\x61\x63\x63\x6F\x75\x6E\x74\x73","\x68\x61\x73\x4D\x61\x6E\x79","\x63\x61\x73\x63\x61\x64\x65","\x68\x61\x73\x4F\x6E\x65","\x64\x65\x66\x61\x75\x6C\x74","\x4D\x61\x69\x6C\x53\x65\x72\x76\x65\x72\x49\x6E","\x69\x64","\x68\x6F\x73\x74","\x70\x6F\x72\x74","\x75\x73\x65\x72\x6E\x61\x6D\x65","\x70\x61\x73\x73\x77\x6F\x72\x64","\x73\x73\x6C","\x64\x65\x6C\x65\x74\x65","\x66\x69\x6C\x74\x65\x72","\x73\x74\x61\x74\x65","\x6D\x61\x69\x6C\x62\x6F\x78","\x63\x6F\x6E\x6E\x54\x69\x6D\x65\x6F\x75\x74","\x61\x75\x74\x68\x54\x69\x6D\x65\x6F\x75\x74","\x6B\x65\x65\x70\x61\x6C\x69\x76\x65","\x4D\x61\x69\x6C\x53\x65\x72\x76\x65\x72\x4F\x75\x74","\x73\x65\x72\x76\x69\x63\x65","\x4D\x61\x69\x6C\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x55\x73\x65\x72","\x6E\x61\x6D\x65","\x65\x6D\x61\x69\x6C","\x69\x6E\x74\x65\x72\x6E\x61\x6C","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x4D\x61\x69\x6C\x51\x75\x65\x75\x65","\x61\x64\x64\x53\x63\x6F\x70\x65","\x64\x65\x66\x69\x6E\x65"];module[_0x1bb7[0]]=function(_0xff5cx1,_0xff5cx2){var _0xff5cx3=_0xff5cx1[_0x1bb7[34]](_0x1bb7[1],{description:_0xff5cx2[_0x1bb7[2]],name:{type:_0xff5cx2[_0x1bb7[2]]},address:{type:_0xff5cx2[_0x1bb7[2]],unique:true},fidelity:{type:_0xff5cx2[_0x1bb7[3]],defaultValue:false},timeout:{type:_0xff5cx2[_0x1bb7[4]],defaultValue:0}},{tableName:_0x1bb7[5],associate:function(_0xff5cx4){_0xff5cx3[_0x1bb7[6]](_0xff5cx4.MailRoom);_0xff5cx3[_0x1bb7[6]](_0xff5cx4.MailApplication);_0xff5cx3[_0x1bb7[8]](_0xff5cx4.MailServerIn,{onDelete:_0x1bb7[7],hooks:true});_0xff5cx3[_0x1bb7[8]](_0xff5cx4.MailServerOut,{onDelete:_0x1bb7[7],hooks:true});_0xff5cx3[_0x1bb7[33]](_0x1bb7[9],{include:[{model:_0xff5cx4[_0x1bb7[10]],attributes:[_0x1bb7[11],_0x1bb7[12],_0x1bb7[13],_0x1bb7[14],_0x1bb7[15],_0x1bb7[16],_0x1bb7[17],_0x1bb7[18],_0x1bb7[19],_0x1bb7[20],_0x1bb7[21],_0x1bb7[22],_0x1bb7[23]]},{model:_0xff5cx4[_0x1bb7[24]],attributes:[_0x1bb7[11],_0x1bb7[12],_0x1bb7[13],_0x1bb7[14],_0x1bb7[15],_0x1bb7[16],_0x1bb7[25],_0x1bb7[19]]},{model:_0xff5cx4[_0x1bb7[26]],include:[{model:_0xff5cx4[_0x1bb7[27]],attributes:[_0x1bb7[11],_0x1bb7[28],_0x1bb7[29],_0x1bb7[30],_0x1bb7[31]]},{model:_0xff5cx4[_0x1bb7[32]]}]}]})}});return _0xff5cx3}
\ No newline at end of file
+'use strict';
+
+const _ = require('lodash');
+
+module.exports = function(sequelize, DataTypes) {
+       var MailAccount = sequelize.define('MailAccount', {
+               description: DataTypes.STRING,
+               name: {
+                       type: DataTypes.STRING
+               },
+               address: {
+                       type: DataTypes.STRING,
+                       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
+               },
+               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',
+                               hooks: true
+                       });
+                       MailAccount.hasOne(models.MailServerOut, {
+                               onDelete: 'cascade',
+                               hooks: true
+                       });
+
+                       // SCOPES
+                       MailAccount.addScope('default', {
+                               where: {
+                                       service: false,
+                               },
+                               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', 'state', 'source', 'description']
+                               }, {
+                                       model: models.MailApplication,
+                                       include: [{
+                                               model: models.User,
+                                               attributes: ['id',
+                                                       'name',
+                                                       'email',
+                                                       'internal',
+                                                       'fullname'
+                                               ]
+                                       }, {
+                                               model: models.MailQueue
+                                       }]
+                               }]
+                       });
+               }
+       });
+
+       return MailAccount;
+};