Built motion from commit 1038d87.|0.0.141
[motion.git] / server / models / mail_room.js
index 1c41f80..3e1d176 100644 (file)
@@ -1,7 +1,12 @@
-/**
- * Chat Website Model
- */
+'use strict';
 
+const moment = require('moment');
+const satuses = {
+       NEW: ['OPEN', 'CLOSED'],
+       OPEN: ['PENDING', 'CLOSED'],
+       PENDING: ['OPEN', 'CLOSED'],
+       CLOSED: []
+};
 
 module.exports = function(sequelize, DataTypes) {
        var MailRoom = sequelize.define('MailRoom', {
@@ -21,11 +26,25 @@ module.exports = function(sequelize, DataTypes) {
                        defaultValue: 0
                },
                status: {
-                       type: DataTypes.ENUM('NEW', 'OPEN', 'CLOSED', 'UNMANAGED'),
-                       defaultValue: 'NEW'
+                       type: DataTypes.ENUM('NEW', 'OPEN', 'PENDING', 'CLOSED'),
+                       defaultValue: 'NEW',
+                       set: function(status) {
+                               this.setDataValue('status', status);
+
+                               switch (status) {
+                                       case 'NEW':
+                                               this.setDataValue('arrivedAt', moment().format('YYYY-MM-DD HH:mm:ss'));
+                                               break;
+                                       case 'CLOSED':
+                                               this.setDataValue('closedAt', moment().format('YYYY-MM-DD HH:mm:ss'));
+                                               break;
+                                       default:
+
+                               }
+                       }
                },
                lastEvent: {
-                       type: DataTypes.ENUM('SENT', 'SENDING', 'RECEIVED', 'FAILED', 'NOTE')
+                       type: DataTypes.ENUM('SENDING', 'SENT', 'RECEIVED', 'FAILED', 'NOTE')
                },
                lastEventAt: {
                        type: DataTypes.DATE
@@ -34,6 +53,10 @@ module.exports = function(sequelize, DataTypes) {
                        type: DataTypes.BOOLEAN,
                        defaultValue: false
                },
+               waiting: {
+                       type: DataTypes.BOOLEAN,
+                       defaultValue: false
+               },
                tags: {
                        type: DataTypes.TEXT,
                        get: function() {
@@ -53,15 +76,25 @@ module.exports = function(sequelize, DataTypes) {
                disposition: {
                        type: DataTypes.STRING
                },
-               deletedAt: {
+               openReason: DataTypes.STRING,
+               ParentId: {
+                       type: DataTypes.INTEGER
+               },
+               arrivedAt: {
                        type: DataTypes.DATE
                },
+               closedAt: {
+                       type: DataTypes.DATE
+               }
        }, {
                tableName: 'mail_rooms',
                paranoid: true,
                associate: function(models) {
                        // BINDING
                        MailRoom.hasMany(models.MailMessage);
+                       MailRoom.hasMany(models.MailRoomStatus, {
+                               plural: 'MailRoomStatuses'
+                       });
                        MailRoom.belongsTo(models.MailAccount);
                        MailRoom.belongsToMany(models.User, {
                                through: 'user_has_mail_rooms'