package com.xdap.self_development.service;

import com.xdap.self_development.common.MyPageResult;
import com.xdap.self_development.controller.form.ParameterForm;
import com.xdap.self_development.controller.form.ParameterPageForm;
import com.xdap.self_development.controller.form.UpdateParameterForm;
import com.xdap.self_development.domain.pojo.ParameterPojo;
import com.xdap.self_development.domain.pojo.TemplatePojo;
import com.xdap.self_development.domain.view.TemplateInfoView;
import com.xdap.self_development.service.impl.ParameterServiceImpl;

import java.util.List;

public interface ParameterService {
	MyPageResult<ParameterPojo> getParameterByCondition(ParameterPageForm form);

	TemplateInfoView maintenanceParameters(UpdateParameterForm form);

	ParameterServiceImpl.TemplateBenchmark getTemplateBenchmark(String templateRowId);

	void validateTemplateStatus(ParameterServiceImpl.TemplateBenchmark benchmark);

	TemplatePojo createOrReuseNewTemplate(ParameterServiceImpl.TemplateBenchmark benchmark, String userId);

	ParameterServiceImpl.ParameterProcessingResult processParameters(
			List<ParameterForm> parameterForms,
			List<ParameterPojo> existingParameters,
			TemplatePojo baseTemplate,
			TemplatePojo newTemplate,
			String userId,
			boolean isLastComplete
	);

	void saveAllData(TemplatePojo originalTemplate, TemplatePojo newTemplate, ParameterServiceImpl.ParameterProcessingResult result);
}
