Built motion from commit 95b01fa.|0.0.70
[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                 attachment: {
11                         type: DataTypes.BOOLEAN,
12                         defaultValue: false
13                 },
14                 status: {
15                         type: DataTypes.ENUM('NEW', 'OPEN', 'CLOSED'),
16                         defaultValue: 'NEW'
17                 }
18         }, {
19                 tableName: 'mail_rooms',
20                 paranoid: true,
21                 associate: function(models) {
22                         // BINDING
23                         MailRoom.hasMany(models.MailMessage);
24                         MailRoom.belongsTo(models.MailAccount);
25                         MailRoom.belongsToMany(models.User, {
26                                 through: 'user_has_mail_rooms'
27                         });
28                         // SCOPES
29                         MailRoom.addScope('default', {
30                                 order: [
31                                         ['createdAt', 'DESC']
32                                 ],
33                                 include: [{
34                                         model: models.MailAccount
35                                 }, {
36                                         model: models.MailMessage,
37                                         include: [{
38                                                 model: models.MailAttachment
39                                         }, {
40                                                 model: models.User,
41                                                 attributes: ['id', 'name', 'fullname', 'email']
42                                         }]
43                                 }, {
44                                         model: models.User,
45                                         attributes: ['id', 'name', 'fullname', 'email']
46                                 }]
47                         });
48
49                         MailRoom.addScope('agent', function(id) {
50                                 return {
51                                         include: [{
52                                                 model: models.User,
53                                                 where: {
54                                                         id: id
55                                                 }
56                                         }]
57                                 }
58                         });
59                 }
60         });
61
62         return MailRoom;
63 };