import { Notification } from 'element-ui';
import Bus from '@/utils/bus.js'

const MSMQ = {
  msgTypeMap: {
    "Success": "success",
    "Error": "error",
    "Warning": "warning",
    "Info": "info",
  },
  moduleMap: {//消息模块映射
    "Model": "模型文件管理"
  },
  handleMsg (message, projects, userId, unreadNum ) {
    let data
    try {
      data = JSON.parse(message.body)
    } catch (err) {
      return false
    }
    if(data.ProjectId && projects.some((item) => {return item.id == data.ProjectId})) { //判断消息是否是当前用户拥有的项目
      if(!data.UserList || (userId && data.UserList && data.UserList.includes(userId))){//判断消息接收人是否是当前用户
        if(data.Module && data.Module == 'Model'){ //模型文件的消息触发模型文件列表刷新事件
          Bus.$emit('modelStatusChange', data)
        }
        if(data.Type != 'Refresh'){//消息列表可见消息(注类型为'Refresh'的消息用来驱动对应服务刷新,消息中心[用户]不可见)
          Notification({ 
            title: `${data.Title?data.Title:''}`, 
            dangerouslyUseHTMLString: true, 
            message: `【${this.moduleMap[data.Module]?this.moduleMap[data.Module]:data.Module}】${data.Content?data.Content.Message?data.Content.Message:'':''}`,
            type: this.msgTypeMap[data.Type]?this.msgTypeMap[data.Type]:'info'
          })
          // Notification.info({ title: '消息',dangerouslyUseHTMLString: true, message: `项目编号：${data.projectId}<br>消息类型：${data.type}<br>描述信息：${data.description}<br>` })
          unreadNum++
          Bus.$emit('messageListUpdate', data)//消息驱动消息列表刷新
        }
        return unreadNum
      }
    }
  }
}

export default MSMQ