package pwc.taxtech.atms.dto.vatdto;

import pwc.taxtech.atms.common.util.MyAsserts;
import pwc.taxtech.atms.entity.Project;
import pwc.taxtech.atms.entity.Template;
import pwc.taxtech.atms.exception.Exceptions;
import pwc.taxtech.atms.vat.entity.PeriodJob;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.UUID;

public class WrapPeriodJobDto {
    public static final String STATUS_BEGIN = "Begin";
    public static final String STATUS_CANCEL = "Cancel";
    public static final String STATUS_ERROR = "Error";
    public static final String STATUS_END = "End";

    public static final String STEP_UPDATE_CONFIG = "UpdateConfig";

    public static PeriodJob createReportGenJob(String projectId, Integer period, List<Template> templates) {
        MyAsserts.assertNotEmpty(templates, Exceptions.NOT_FOUND_TEMPLATE_EXCEPTION);
        PeriodJob job = new PeriodJob();
        job.setCreateTime(new Date());
        job.setName("Gen All Report");
        job.setProjectId(projectId);
        job.setPeriod(period);
        job.setId(UUID.randomUUID().toString());
        job.setStatus(STATUS_BEGIN);
        job.setCurrentStep(STEP_UPDATE_CONFIG);

        StringBuilder builder = new StringBuilder(STEP_UPDATE_CONFIG);
        templates.forEach(m -> {
            builder.append(",").append(m.getCode());
        });

        job.setStepsCode(builder.toString());
        return job;
    }
}