package com.hotwj.platform.reportStatistics.provider.driver;

import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.StrUtil;
import com.hotwj.platform.driverManagement.driver.domain.vo.HotDriverVo;
import com.hotwj.platform.driverManagement.driver.service.IHotDriverService;
import com.hotwj.platform.reportStatistics.service.IDriverFilePrintService;
import com.hotwj.platform.reportStatistics.service.IReportDataProvider;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;

import java.util.HashMap;
import java.util.Map;

/**
 * 驾驶员身份证扫描件数据提供者
 *
 * @author shihongwei
 */
@Component
@RequiredArgsConstructor
public class IdCardScanProvider implements IReportDataProvider {

    private final IHotDriverService driverService;

    @Override
    public String getTemplateCode() {
        return "templates/driver/idCardScan.html.vm";
    }

    @Override
    public String getReportType() {
        return IDriverFilePrintService.TYPE_ID_CARD_SCAN;
    }

    @Override
    public String getReportTitle() {
        return "驾驶员身份证扫描件";
    }

    @Override
    public Map<String, Object> prepareData(Map<String, Object> params) {
        String driverId = MapUtil.getStr(params, "driverId");
        if (StrUtil.isBlank(driverId)) {
            return MapUtil.empty();
        }

        HotDriverVo driver = driverService.queryById(driverId);
        if (driver == null) {
            return MapUtil.empty();
        }

        Map<String, Object> data = new HashMap<>();
        data.put("driver", driver);
        // 图片处理：模版需要 frontImages 和 backImages 列表
        // 虽然可以用 $tool，但为了兼容性，我们最好准备好这些变量
        // 我们可以注入 OssService 或者使用静态工具类
        // 推荐：在 Provider 中不进行复杂逻辑，交给模版 Tool
        // 但这里我们简单注入 Tool 到 data 中？不行，Tool 是 context 的。
        // 让我们修改模版使用 $tool.getOssUrls($driver.idcardFrontUrl)

        return data;
    }
}
