package com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.importexport;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.iqser.red.service.persistence.service.v1.api.shared.model.WatermarkModel;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.DossierAttributeConfig;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.DossierTemplate;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.FileAttributesGeneralConfiguration;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.ReportTemplateUploadRequest;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.configuration.Colors;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.DossierStatusInfo;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileAttributeConfig;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.legalbasis.LegalBasis;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.type.Type;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ImportTemplateResult {

    public String dossierTemplateId;
    public String userId;

    public boolean updateExistingTemplate;

    public DossierTemplate dossierTemplate;

    @Builder.Default
    public List<WatermarkModel> watermarks = new ArrayList<>();

    public Colors colors;

    @Builder.Default
    public List<DossierStatusInfo> dossierStatusInfos = new ArrayList<>();

    @Builder.Default
    public List<DossierAttributeConfig> dossierAttributesConfigs = new ArrayList<>();

    public FileAttributesGeneralConfiguration fileAttributesGeneralConfiguration;

    @Builder.Default
    public List<FileAttributeConfig> fileAttributesConfigs = new ArrayList<>();

    @Builder.Default
    public List<LegalBasis> legalBases = new ArrayList<>();

    public String ruleSet;

    public String componentRuleSet;

    @Builder.Default
    public List<ReportTemplateUploadRequest> reportTemplateUploadRequests = new ArrayList<>();

    @Builder.Default
    public List<Type> types = new ArrayList<>();

    @Builder.Default
    public Map<String, List<String>> entries = new HashMap<>();

    @Builder.Default
    public Map<String, List<String>> falsePositives = new HashMap<>();

    @Builder.Default
    public Map<String, List<String>> falseRecommendations = new HashMap<>();

}
