3 const moment = require('moment');
5 NEW: ['OPEN', 'CLOSED'],
6 OPEN: ['PENDING', 'CLOSED'],
7 PENDING: ['OPEN', 'CLOSED'],
11 module.exports = function(sequelize, DataTypes) {
12 var MailRoom = sequelize.define('MailRoom', {
13 subject: DataTypes.STRING,
14 from: DataTypes.STRING,
15 account: DataTypes.STRING,
17 type: DataTypes.BOOLEAN,
21 type: DataTypes.INTEGER,
25 type: DataTypes.INTEGER,
29 type: DataTypes.ENUM('NEW', 'OPEN', 'PENDING', 'CLOSED'),
31 set: function(status) {
32 this.setDataValue('status', status);
36 this.setDataValue('arrivedAt', moment().format('YYYY-MM-DD HH:mm:ss'));
39 this.setDataValue('closedAt', moment().format('YYYY-MM-DD HH:mm:ss'));
47 type: DataTypes.ENUM('SENDING', 'SENT', 'RECEIVED', 'FAILED', 'NOTE')
53 type: DataTypes.BOOLEAN,
57 type: DataTypes.BOOLEAN,
64 if (this.getDataValue('tags')) {
65 tags = this.getDataValue('tags').split(';');
73 this.setDataValue('tags', val && val.length ? val.join(';') + ';' : null);
77 type: DataTypes.STRING
79 openReason: DataTypes.STRING,
81 type: DataTypes.INTEGER
90 tableName: 'mail_rooms',
92 associate: function(models) {
94 MailRoom.hasMany(models.MailMessage);
95 MailRoom.hasMany(models.MailRoomStatus, {
96 plural: 'MailRoomStatuses'
98 MailRoom.belongsTo(models.MailAccount);
99 MailRoom.belongsToMany(models.User, {
100 through: 'user_has_mail_rooms'
103 MailRoom.addScope('default', {
105 ['createdAt', 'DESC']
108 model: models.MailAccount
110 model: models.MailMessage,
112 model: models.MailAttachment
115 attributes: ['id', 'name', 'fullname', 'email', 'userpic']
119 attributes: ['id', 'name', 'fullname', 'email', 'userpic']