package com.qmth.distributed.print.business.enums;

import com.qmth.teachcloud.common.enums.EnumResult;

import java.util.ArrayList;
import java.util.List;

/**
 * @Description: 发送消息枚举类
 * @Author: CaoZixuan
 * @Date: 2021-04-28
 */
public enum MessageEnum {

    /**
     * 审核结果通知(考务老师审核触发，业务id为命题任务id，短信发送给命题老师 examTask.getUserId())
     */
    NOTICE_OF_AUDIT_PASS("审核通过通知", "${userName}您好，${courseName}课程、${paperNumber}试卷入库申请已通过，您可在卷库里进行查看已审核通过的试卷！"),
    NOTICE_OF_AUDIT_NOT_PASS("审核不通过通知", "${userName}您好，${courseName}课程、${paperNumber}试卷入库申请未通过，您可查看审核意见后重新提交入库申请！"),

    /**
     * 命题任务待办提醒
     */
    NOTICE_OF_EXAM_TASK_CREATED("命题任务待办生成通知","${userName}您好，您有${count}条新命题待办生成，请您处理！"),
    // 定时任务查询触发，业务id为命题老师id，短信发送给命题老师
    NOTICE_OF_EXAM_TASK_WILL_EXPIRE("命题任务待办到期预警通知","${userName}您好，您还有${count}条命题待办即将逾期，请您尽快处理！"),
    NOTICE_OF_EXAM_TASK_OVERDUE("命题任务待办逾期通知","${userName}您好，您今日新增${count}条命题待办逾期，请您尽快处理！"),

    /**
     * 命题分配待办提醒(定时任务查询触发，业务id为考务老师id，短信发送给考务老师)
     */
    NOTICE_OF_ALLOCATION_WILL_EXPIRE("命题分配待办到期预警通知","${userName}您好，您还有${count}条命题任务尚未分配命题老师，任务即将逾期，请您尽快处理！"),
    NOTICE_OF_ALLOCATION_OVERDUE("命题分配待办逾期通知","${userName}您好，您今日新增${count}条命题分配待办逾期，请您尽快处理！"),

    /**
     * 审核待办提醒
     */
    // 命题任务被命题老师提交后触发，业务id为命题任务id，短信发送给考务老师 examTask.getCreateId()
    NOTICE_OF_AUDIT_CREATED("审核待办生成通知","${userName}您好，${courseName}试卷已提交入库，请您尽快审核！"),
    NOTICE_OF_AUDIT_REVIEW("审核待办修改申请通知","${userName}您好，${courseName}试卷重新提交修改申请，请您尽快审核！"),
    // 定时任务查询触发，业务id为考务老师id，短信发送给考务老师
    NOTICE_OF_AUDIT_WILL_EXPIRE("审核待办到期预警通知","${userName}您好，您还有${count}条审核待办即将逾期，请您尽快处理！"),
    NOTICE_OF_AUDIT_OVERDUE("审核待办逾期通知","${userName}您好，您有${count}条审核待办已逾期！"),

    NOTICE_OF_AUDIT_REJECT("审核驳回生成通知","${userName}您好，${courseName}试卷审核未通过，请您尽快处理！"),
    NOTICE_OF_UPLOAD_STRUCTURE("试卷结构标答上传通知","${userName}您好，${courseName}试卷印刷任务已经完成，请上传试卷结构及标答生成阅卷任务，请您尽快处理！"),

    /**
     * 审核抄送
     */
    NOTICE_OF_AUDIT_COPY_USER("审核抄送生成通知","${userName}您好，${courseName}相关命题任务已经提交，由${auditUserNames}负责审核，请您查看！");

    MessageEnum(String name, String template) {
        this.name = name;
        this.template = template;
    }

    private final String name;
    private final String template;


    public static List<EnumResult> listTypes() {
        List<EnumResult> list = new ArrayList<>();
        for (MessageEnum value : MessageEnum.values()) {
            EnumResult result = new EnumResult();
            result.setName(value.name());
            result.setOrdinal(value.ordinal());
            result.setCode(null);
            result.setDesc(value.getName());
            list.add(result);
        }
        return list;
    }

    public String getName() {
        return name;
    }

    public String getTemplate() {
        return template;
    }
}
