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
82 type: DataTypes.INTEGER
91 tableName: 'mail_rooms',
93 associate: function(models) {
95 MailRoom.hasMany(models.MailMessage);
96 MailRoom.hasMany(models.MailRoomStatus, {
97 plural: 'MailRoomStatuses'
99 MailRoom.belongsTo(models.MailAccount);
100 MailRoom.belongsToMany(models.User, {
101 through: 'user_has_mail_rooms'
104 MailRoom.addScope('default', {
106 ['createdAt', 'DESC']
109 model: models.MailAccount
111 model: models.MailMessage,
113 model: models.MailAttachment
116 attributes: ['id', 'name', 'fullname', 'email', 'userpic']
120 attributes: ['id', 'name', 'fullname', 'email', 'userpic']