package com.qmth.distributed.print.api;

import com.qmth.boot.api.constant.ApiConstant;
import com.qmth.distributed.print.business.enums.*;
import com.qmth.teachcloud.common.enums.*;
import com.qmth.teachcloud.common.util.Result;
import com.qmth.teachcloud.common.util.ResultUtil;
import io.swagger.annotations.Api;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * 枚举类型查询接口
 *
 * @Date: 2021/3/29.
 */
@Api(tags = "枚举类型Controller")
@RestController
@RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + "/${prefix.url.common}/get_enums")
public class EnumsController {

    /**
     * 查询
     *
     * @param type
     * @return
     */
    @RequestMapping(method = RequestMethod.POST)
    public Result list(@RequestParam(value = "type", required = true) String type) {
        if (StringUtils.isBlank(type)) {
            throw ExceptionResultEnum.ERROR.exception("类型不能为空");
        }

        List<EnumResult> list = null;
        if (type.equals(EnumType.BACKUP_METHOD.name())) {
            //备份方式
            list = BackupMethodEnum.listTypes();
        } else if (type.equals(EnumType.CLASSIFY.name())) {
            //模板类型
            list = ClassifyEnum.listTypes();
        } else if (type.equals(EnumType.DRAW_RULE.name())) {
            // 抽卷规则
            list = DrawRuleEnum.listTypes();
        } else if (type.equals(EnumType.EXAM_NUMBER_STYLE.name())) {
            //考号版式
            list = ExamNumberStyleEnum.listTypes();
        } else if (type.equals(EnumType.EXAM_STATUS.name())) {
            //命题状态类型
            list = ExamStatusEnum.listTypes();
        } else if (type.equals(EnumType.PAPER_TYPE.name())) {
            //AB卷版式
            list = PaperTypeEnum.listTypes();
        } else if (type.equals(EnumType.PRINT_METHOD.name())) {
            //印刷方式
            list = PrintMethodEnum.listTypes();
        } else if (type.equals(EnumType.PRIVILEGE_TYPE.name())) {
            //菜单类型
            list = PrivilegeEnum.listTypes();
        } else if (type.equals(EnumType.REQUIRED_FIELDS.name())) {
            //考务必选字段
            list = RequiredFieldsEnum.listTypes();
        } else if (type.equals(EnumType.REVIEW_STATUS.name())) {
            //审核状态类型
            list = ReviewStatusEnum.listTypes();
        } else if (type.equals(EnumType.ROLE_TYPE.name())) {
            //内置角色类型
            list = RoleTypeEnum.listTypes(false);
        } else if (type.equals(EnumType.STORAGE_LEVEL.name())) {
            //附件存储级别
            list = StorageLevelEnum.listTypes();
        } else if (type.equals(EnumType.STORAGE_TYPE.name())) {
            //附件存储方式
            list = StorageTypeEnum.listTypes();
        } else if (type.equals(EnumType.TEMPLATE_TYPE.name())) {
            //模板类型
            list = TemplateTypeEnum.listTypes();
        } else if (type.equals(EnumType.CARD_REQUIRED_FIELDS.name())) {
            //题卡必选字段
            list = CardRequiredFieldsEnum.listTypes();
        } else if (type.equals(EnumType.ORG_CENTER_TYPE_ENUM.name())) {
            //机构用户中心类型
            list = OrgCenterTypeEnum.listTypes();
        } else if (type.equals(EnumType.PRINT_PLAN_STATUS_ENUM.name())) {
            //印刷计划状态
            list = PrintPlanStatusEnum.listTypes();
        } else if (type.equals(EnumType.MAKE_METHOD.name())) {
            // 题卡制作方式
            list = MakeMethodEnum.listTypes();
        } else if (type.equals(EnumType.CARD_TYPE.name())) {
            // 题卡类型
            list = CardTypeEnum.listTypes();
        } else if (type.equals(EnumType.EXAM_DETAIL_STATUS_ENUM.name())) {
            // 考场状态
            list = ExamDetailStatusEnum.listTypes();
        } else if (type.equals(EnumType.SYSTEM_CODE_ENUM.name())){
            // 系统自生成编码
            list = SystemCodeEnum.listTypes();
        } else if (type.equals(EnumType.PUSH_TYPE_ENUM.name())){
            // 同步云阅卷类型
            list = PushTypeEnum.listTypes();
        } else if (type.equals(EnumType.TB_TASK_STATUS.name())){
            // 同步云阅卷日志表状态类型
            list = TaskStatusEnum.listTypes();
        }
        return ResultUtil.ok(list);
    }
}
