5 const moment = require('moment');
7 NEW: ['OPEN', 'CLOSED'],
8 OPEN: ['PENDING', 'CLOSED'],
9 PENDING: ['OPEN', 'CLOSED'],
13 module.exports = function(sequelize, DataTypes) {
14 var MailRoom = sequelize.define('MailRoom', {
15 subject: DataTypes.STRING,
16 from: DataTypes.STRING,
17 account: DataTypes.STRING,
19 type: DataTypes.BOOLEAN,
23 type: DataTypes.INTEGER,
27 type: DataTypes.INTEGER,
31 type: DataTypes.ENUM('NEW', 'OPEN', 'PENDING', 'CLOSED'),
33 set: function(status) {
34 this.setDataValue('status', status);
38 this.setDataValue('arrivedAt', moment().format('YYYY-MM-DD HH:mm:ss'));
41 this.setDataValue('closedAt', moment().format('YYYY-MM-DD HH:mm:ss'));
49 type: DataTypes.ENUM('SENDING', 'SENT', 'RECEIVED', 'FAILED', 'NOTE')
55 type: DataTypes.BOOLEAN,
59 type: DataTypes.BOOLEAN,
66 if (this.getDataValue('tags')) {
67 tags = this.getDataValue('tags').split(';');
75 this.setDataValue('tags', val && val.length ? val.join(';') + ';' : null);
79 type: DataTypes.STRING
81 openReason: DataTypes.STRING,
83 type: DataTypes.INTEGER
92 tableName: 'mail_rooms',
94 associate: function(models) {
96 MailRoom.hasMany(models.MailMessage);
97 MailRoom.hasMany(models.MailRoomStatus, {
98 plural: 'MailRoomStatuses'
100 MailRoom.belongsTo(models.MailAccount);
101 MailRoom.belongsToMany(models.User, {
102 through: 'user_has_mail_rooms'
105 MailRoom.addScope('default', {
107 ['createdAt', 'DESC']
110 model: models.MailAccount
112 model: models.MailMessage,
114 model: models.MailAttachment
117 attributes: ['id', 'name', 'fullname', 'email', 'userpic']
121 attributes: ['id', 'name', 'fullname', 'email', 'userpic']