package com.smppw.common.pojo.dto.indicator;

import com.smppw.common.pojo.IStrategy;
import com.smppw.common.pojo.enums.*;
import lombok.Builder;
import lombok.Data;

import java.util.List;
import java.util.Map;

@Data
@Builder
public class CalcMultipleSecMultipleTimeRangeIndicatorReq {
    private List<String> mainSecIdList;
    private Map<String, String> secBenchmarkIdMap;
    private List<String> indexIdList;
    private RaiseType raiseType;
    private IStrategy strategy;
    private Visibility visibility;
    private Map<String, List<DateIntervalDto>> secDateIntervalDtoListMap;
    private Frequency dataFrequency;
    private NavType navType;
    private List<Indicator> indicatorList;
    private List<Indicator> geoExtraindicatorList;
    private String riskOfFreeId;
    private Double riskOfFreeValue;
    private boolean ifAnnualize = true;
    private boolean calcIndexRetIndicatorValue;
    private boolean needRet;
    private boolean needExtraRet;
    private boolean ifConvertPerformanceConsistencyWord;
    private boolean ifExtract;
    private Integer userId;
    private boolean combExtract;
    private Integer combExtractCombId;

    public CalcMultipleSecMultipleTimeRangeIndicatorReq() {
    }

    public CalcMultipleSecMultipleTimeRangeIndicatorReq(List<String> mainSecIdList, Map<String, String> secBenchmarkIdMap, List<String> indexIdList,
                                                        RaiseType raiseType, IStrategy strategy, Visibility visibility, Map<String, List<DateIntervalDto>> secDateIntervalDtoListMap,
                                                        Frequency dataFrequency, NavType navType, List<Indicator> indicatorList, List<Indicator> geoExtraindicatorList, String riskOfFreeId,
                                                        Double riskOfFreeValue, boolean ifAnnualize, boolean calcIndexRetIndicatorValue, boolean needRet, boolean needExtraRet,
                                                        boolean ifConvertPerformanceConsistencyWord, boolean ifExtract, Integer userId, boolean combExtract, Integer combExtractCombId) {
        this.mainSecIdList = mainSecIdList;
        this.secBenchmarkIdMap = secBenchmarkIdMap;
        this.indexIdList = indexIdList;
        this.raiseType = raiseType;
        this.strategy = strategy;
        this.visibility = visibility;
        this.secDateIntervalDtoListMap = secDateIntervalDtoListMap;
        this.dataFrequency = dataFrequency;
        this.navType = navType;
        this.indicatorList = indicatorList;
        this.geoExtraindicatorList = geoExtraindicatorList;
        this.riskOfFreeId = riskOfFreeId;
        this.riskOfFreeValue = riskOfFreeValue;
        this.ifAnnualize = ifAnnualize;
        this.calcIndexRetIndicatorValue = calcIndexRetIndicatorValue;
        this.needRet = needRet;
        this.needExtraRet = needExtraRet;
        this.ifConvertPerformanceConsistencyWord = ifConvertPerformanceConsistencyWord;
        this.ifExtract = ifExtract;
        this.userId = userId;
        this.combExtract = combExtract;
        this.combExtractCombId = combExtractCombId;
    }
}
