Built motion from commit 3594e56.|0.0.120
[motion.git] / server / models / mail_account.js
1 /**
2  * Chat Website Model
3  */
4
5 module.exports = function(sequelize, DataTypes) {
6
7         var MailAccount = sequelize.define('MailAccount', {
8                 description: DataTypes.STRING,
9                 name: {
10                         type: DataTypes.STRING
11                 },
12                 address: {
13                         type: DataTypes.STRING,
14                         unique: true,
15                         isEmail: true,
16                         set: function(address) {
17                                 if (address) {
18                                         this.setDataValue('address', address.toLowerCase());
19                                 }
20                         },
21                 },
22                 fidelity: {
23                         type: DataTypes.BOOLEAN,
24                         defaultValue: false
25                 },
26                 timeout: {
27                         type: DataTypes.INTEGER,
28                         defaultValue: 0
29                 },
30                 whiteLabel: {
31                         type: DataTypes.STRING
32                 }
33         }, {
34                 tableName: 'mail_accounts',
35                 associate: function(models) {
36                         // RELATIONS
37                         MailAccount.belongsTo(models.List);
38                         MailAccount.belongsTo(models.Template);
39                         MailAccount.hasMany(models.MailRoom);
40                         MailAccount.hasMany(models.MailDisposition);
41                         MailAccount.hasMany(models.MailApplication);
42                         MailAccount.hasOne(models.MailServerIn, {
43                                 onDelete: 'cascade',
44                                 hooks: true
45                         });
46                         MailAccount.hasOne(models.MailServerOut, {
47                                 onDelete: 'cascade',
48                                 hooks: true
49                         });
50
51                         // SCOPES
52                         MailAccount.addScope('default', {
53                                 include: [{
54                                         model: models.MailServerIn,
55                                         attributes: ['id', 'host', 'port', 'username', 'password', 'ssl', 'delete', 'filter', 'state', 'mailbox', 'connTimeout', 'authTimeout', 'keepalive', 'source']
56                                 }, {
57                                         model: models.MailServerOut,
58                                         attributes: ['id', 'host', 'port', 'username', 'password', 'ssl', 'service', 'state', 'source']
59                                 }, {
60                                         model: models.MailApplication,
61                                         include: [{
62                                                 model: models.User,
63                                                 attributes: ['id',
64                                                         'name',
65                                                         'email',
66                                                         'internal',
67                                                         'fullname'
68                                                 ]
69                                         }, {
70                                                 model: models.MailQueue
71                                         }]
72                                 }]
73                         });
74                 }
75         });
76
77         return MailAccount;
78 };