package com.casic.missiles.service.listeners.register;

import com.casic.missiles.dto.business.certificate.ElectronicImage;

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

/**
 * 这里保存的有文件自定义默认的电子签名、电子签章
 * 并包括自动化计算绝对路径的平铺位置，默认的绝对路径图片的大量信息
 */
public class FileImageTemplateProvider {


    /**
     * 电子签名获取的流程 keyParamList，customizedSignNames具有映射功能
     */
    protected List<String> keyParamList;
    /**
     * 自定义签名名字
     */
    protected List<String> customizedSignNames;

    /**
     * 文件自定义名称参数构建器
     */
    protected void customizedSignNamesParamCreator() {
        keyParamList = Arrays.asList("发起人", "审核人", "批准人");
        customizedSignNames = Arrays.asList("发起人", "核验人", "批准人");
    }

    protected FileImageTemplateProvider() {
        this.keyParamList = new ArrayList<>();
        customizedSignNames = new ArrayList<>();
    }

    /**
     * 默认电子签名的图片设置,支持重写
     */
    protected ElectronicImage defaultElectronicSignName(String keyWord) {
        ElectronicImage electronicImage = ElectronicImage.builder()
                .keyWordIndex(-1)
                .keyWord(keyWord)
                .vertical(-10f)
                .horizontal(60f)
                .stampHeight(40f)
                .stampWidth(60f)
                .diaphaneity(150f)
                .build();
        return electronicImage;
    }

    /**
     * 默认电子签章的图片设置,允许重写
     */
    protected ElectronicImage defaultElectronicSignSeal(String keyWord) {
        ElectronicImage electronicImage = ElectronicImage.builder()
                .keyWordIndex(-1)
                .keyWord(keyWord)
                .vertical(-10f)
                .horizontal(80f)
                .stampHeight(100f)
                .stampWidth(100f)
                .diaphaneity(150f)
                .build();
        return electronicImage;
    }

    /**
     * 自动生成是根据宽度设定取空隙平均值
     * 默认电子签章的图片设置,允许重写
     * word长度大约为400*600
     * 其中定位点图片中心位置
     */
    protected List<ElectronicImage> autoCreteAbsoluteSignSealByNumber(Integer sealsNumber) {
        List<ElectronicImage> electronicImageList = new ArrayList<>();
        ElectronicImage templateElectronic = defaultAbsoluteElectronicSignSeal("");
        Float intervalWith = templateElectronic.getStampWidth() * sealsNumber >= 400 ?
                0 : (400 + (templateElectronic.getStampWidth() / 2) - templateElectronic.getStampWidth() * sealsNumber) / (sealsNumber + 1);
        ElectronicImage electronicImage = null;
        Float tempIntervalWith = intervalWith;
        for (int i = 0; i < sealsNumber; i++) {
            electronicImage = defaultAbsoluteElectronicSignSeal("");
            electronicImage.setHorizontal(tempIntervalWith);
            tempIntervalWith += intervalWith + templateElectronic.getStampWidth();
            electronicImageList.add(electronicImage);
        }
        return electronicImageList;
    }

    /**
     * 默认电子签章的图片设置,允许重写
     * word长度大约为400*600
     * 其中定位点图片中心位置
     */
    protected ElectronicImage defaultAbsoluteElectronicSignSeal(String keyWord) {
        ElectronicImage electronicImage = ElectronicImage.builder()
                .keyWordIndex(-1)
                .keyWord(keyWord)
                .vertical(-20f)
                .horizontal(50f)
                .stampHeight(100f)
                .stampWidth(100f)
                .diaphaneity(150f)
                .build();
        return electronicImage;
    }


}
