Built motion from commit 9030561.|0.0.88
[motion.git] / server / models / mail_room.js
1 /**
2  * Chat Website Model
3  */
4
5
6 module.exports = function(sequelize, DataTypes) {
7         var MailRoom = sequelize.define('MailRoom', {
8                 subject: DataTypes.STRING,
9                 from: DataTypes.STRING,
10                 account: DataTypes.STRING,
11                 attachment: {
12                         type: DataTypes.BOOLEAN,
13                         defaultValue: false
14                 },
15                 status: {
16                         type: DataTypes.ENUM('NEW', 'OPEN', 'CLOSED', 'UNMANAGED'),
17                         defaultValue: 'NEW'
18                 },
19                 lastEvent: {
20                         type: DataTypes.ENUM('SENT', 'SENDING', 'RECEIVED', 'FAILED', 'NOTE')
21                 }
22         }, {
23                 tableName: 'mail_rooms',
24                 paranoid: true,
25                 associate: function(models) {
26                         // BINDING
27                         MailRoom.hasMany(models.MailMessage);
28                         MailRoom.belongsTo(models.MailAccount);
29                         MailRoom.belongsToMany(models.User, {
30                                 through: 'user_has_mail_rooms'
31                         });
32                         // SCOPES
33                         MailRoom.addScope('default', {
34                                 order: [
35                                         ['createdAt', 'DESC']
36                                 ],
37                                 include: [{
38                                         model: models.MailAccount
39                                 }, {
40                                         model: models.MailMessage,
41                                         include: [{
42                                                 model: models.MailAttachment
43                                         }, {
44                                                 model: models.User,
45                                                 attributes: ['id', 'name', 'fullname', 'email']
46                                         }]
47                                 }, {
48                                         model: models.User,
49                                         attributes: ['id', 'name', 'fullname', 'email']
50                                 }]
51                         });
52                 }
53         });
54
55         return MailRoom;
56 };