1 const moment = require('moment');
3 module.exports = function(sequelize, DataTypes) {
4 var OpenchannelRoom = sequelize.define('OpenchannelRoom', {
9 type: DataTypes.INTEGER,
13 type: DataTypes.INTEGER,
17 type: DataTypes.ENUM('NEW', 'OPEN', 'PENDING', 'CLOSED'),
19 set: function(status) {
20 this.setDataValue('status', status);
24 this.setDataValue('arrivedAt', moment().format('YYYY-MM-DD HH:mm:ss'));
27 this.setDataValue('closedAt', moment().format('YYYY-MM-DD HH:mm:ss'));
35 type: DataTypes.ENUM('SENDING', 'SENT', 'RECEIVED', 'FAILED', 'NOTE')
44 if (this.getDataValue('tags')) {
45 tags = this.getDataValue('tags').split(';');
53 this.setDataValue('tags', val && val.length ? val.join(';') + ';' : null);
57 type: DataTypes.STRING
60 type: DataTypes.INTEGER
63 type: DataTypes.BOOLEAN,
66 openReason: DataTypes.STRING,
74 tableName: 'openchannel_rooms',
75 associate: function(models) {
77 OpenchannelRoom.hasMany(models.OpenchannelMessage);
78 OpenchannelRoom.belongsToMany(models.User, {
79 through: 'user_has_openchannel_rooms'
81 OpenchannelRoom.belongsTo(models.OpenchannelAccount);
82 OpenchannelRoom.addScope('default', {
87 model: models.OpenchannelAccount
89 model: models.OpenchannelMessage,
92 attributes: ['id', 'name', 'fullname', 'email']
96 attributes: ['id', 'name', 'fullname', 'email']
99 OpenchannelRoom.addScope('agent', function(id) {
113 return OpenchannelRoom;