package com.fs.his.validator.cpw;

import com.fs.common.exception.CustomException;
import com.fs.common.utils.StringUtils;
import com.fs.his.vo.AnswerVO;
import org.springframework.stereotype.Component;

/**
 * 选项校验器
 */
@Component
public class OptionValidator {

    /**
     * 校验单个选项
     */
    public void validate(AnswerVO.Options option, String questionTitle, int optionIndex) {
        if (option == null) {
            throw new CustomException(
                    String.format("问题【%s】的第%d个选项不能为null", questionTitle, optionIndex + 1),
                    400
            );
        }

        validateOptionName(option.getName(), questionTitle, optionIndex);
        validateOptionValue(option.getValue(), questionTitle, optionIndex);
    }

    /**
     * 校验选项名称
     */
    private void validateOptionName(String name, String questionTitle, int optionIndex) {
        if (StringUtils.isEmpty(name)) {
            throw new CustomException(
                    String.format("问题【%s】的第%d个选项的名称不能为空", questionTitle, optionIndex + 1),
                    400
            );
        }

        if (name.length() > 100) {
            throw new CustomException(
                    String.format("问题【%s】的第%d个选项名称不能超过100个字符", questionTitle, optionIndex + 1),
                    400
            );
        }
    }

    /**
     * 校验选项值
     */
    private void validateOptionValue(Integer value, String questionTitle, int optionIndex) {
        if (value == null) {
            throw new CustomException(
                    String.format("问题【%s】的第%d个选项的值不能为空", questionTitle, optionIndex + 1),
                    400
            );
        }
    }
}