package com.reyun.report;

import com.reyun.dic.DataViewEnumType;
import com.reyun.model.Account;
import com.reyun.model.ReportListResult;
import com.reyun.report.parse.*;
import org.json.JSONException;

import java.io.IOException;
import java.util.List;
import java.util.Map;

/**
 * Created by nolan on 19/12/2016.
 * description:
 */
public class RefluxanalysisReportResultBuilder
{

    /**
     * 列表报表处理
     *
     * @param reportListResult
     * @param dataViewEnumType
     * @return
     * @throws IOException
     */
    public ReportListResult doListReport(ReportListResult reportListResult, DataViewEnumType dataViewEnumType, Long appid,
                                         Account loginAcount, List<String> viewColumns, String reportName, List<String> fillCampids,
                                         boolean isSearchText, List<String> searchIds, Map<String, String> conditions) {
        if ("refluxanalysis_date".equals(reportName)) {
            return new ListCampaignDateParse().parse(reportListResult, appid, loginAcount.getId(), viewColumns, reportName, isSearchText, isSearchText ? searchIds : fillCampids);
        } else if("refluxanalysis_channel".equals(reportName)){
            return new ListChannelNoDivideParse().parse(reportListResult, appid, loginAcount.getId(), viewColumns, reportName, isSearchText, isSearchText ? searchIds : fillCampids);
        }else if("refluxanalysis_campaign".equals(reportName)) {
            return new ListCampaignNoDivideParse().parse(reportListResult, appid, loginAcount.getId(), viewColumns, reportName, isSearchText, isSearchText ? searchIds : fillCampids);
        }else if("refluxanalysis_serverid".equals(reportName)) {
            return new ListServeridNoDivideParse().parse(reportListResult, appid, loginAcount.getId(), viewColumns, reportName, isSearchText, isSearchText ? searchIds : fillCampids,conditions);
        } else {
            return new ListTransNameParse().parse(reportListResult, appid, loginAcount.getId(), null, reportName, isSearchText, null);
        }
    }


    /**
     * 列表报表处理
     *
     * @param reportListResult
     * @param dataViewEnumType
     * @return
     * @throws IOException
     */
    public ReportListResult doListReport(ReportListResult reportListResult, DataViewEnumType dataViewEnumType, Long appid,
                                         Account loginAcount, List<String> viewColumns, String reportName, List<String> fillCampids,
                                         boolean isSearchText, List<String> searchIds, Long cid,  Map<String, String> conditions)
            throws IOException, JSONException {
        return new ListBDKeywordParse().parse(reportListResult, appid, loginAcount.getId(), viewColumns, reportName, isSearchText, null, cid, conditions);
    }

}