Built motion from commit b7ec679.|0.0.83
[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         }, {
20                 tableName: 'mail_rooms',
21                 paranoid: true,
22                 associate: function(models) {
23                         // BINDING
24                         MailRoom.hasMany(models.MailMessage);
25                         MailRoom.belongsTo(models.MailAccount);
26                         MailRoom.belongsToMany(models.User, {
27                                 through: 'user_has_mail_rooms'
28                         });
29                         // SCOPES
30                         MailRoom.addScope('default', {
31                                 order: [
32                                         ['createdAt', 'DESC']
33                                 ],
34                                 include: [{
35                                         model: models.MailAccount
36                                 }, {
37                                         model: models.MailMessage,
38                                         include: [{
39                                                 model: models.MailAttachment
40                                         }, {
41                                                 model: models.User,
42                                                 attributes: ['id', 'name', 'fullname', 'email']
43                                         }]
44                                 }, {
45                                         model: models.User,
46                                         attributes: ['id', 'name', 'fullname', 'email']
47                                 }]
48                         });
49
50                         MailRoom.addScope('agent', function(id) {
51                                 return {
52                                         include: [{
53                                                 model: models.User,
54                                                 where: {
55                                                         id: id
56                                                 }
57                                         }]
58                                 }
59                         });
60                 }
61         });
62
63         return MailRoom;
64 };