package org.qinan.safetyeval.client.api;

import org.qinan.safetyeval.client.co.QualFilingCO;
import org.qinan.safetyeval.client.co.QualFilingComplianceCheckResultCO;
import org.qinan.safetyeval.client.co.QualFilingDetailCO;
import org.qinan.safetyeval.client.dto.*;

import java.util.List;

/**
 * 资质备案申请接口定义（Client层）
 */
public interface QualFilingApi {

    SingleResponse<QualFilingCO> add(QualFilingAddCmd cmd);

    SingleResponse<QualFilingCO> get(Long id);

    SingleResponse<QualFilingCO> modify(QualFilingModifyCmd cmd);

    SingleResponse<Void> delete(Long id);

    PageResponse<QualFilingCO> page(QualFilingPageQuery query);

    SingleResponse<QualFilingCO> draft(Integer applyTypeCode);

    SingleResponse<QualFilingCO> saveDraft(QualFilingModifyCmd cmd);

    SingleResponse<QualFilingCO> submit(Long id);

    SingleResponse<QualFilingCO> approve(Long id);

    SingleResponse<QualFilingCO> reject(QualFilingRejectCmd cmd);

    SingleResponse<QualFilingDetailCO> detail(Long id);

    SingleResponse<QualFilingCO> filedDraft();

    SingleResponse<QualFilingCO> uploadAttachment(QualFilingAttachmentUploadCmd cmd);

    SingleResponse<List<QualFilingComplianceCheckResultCO>> complianceCheck(Long id);

    SingleResponse<QualFilingCO> aggregationSaveOrEdit(AggregationSaveOrEditQualFilingCmd cmd);

    void review(QualFilingReviewAddCmd cmd);
}
