using YBEE.EQM.Core;

namespace YBEE.EQM.Application;

/// <summary>
/// 监测机构上报类型服务
/// </summary>
public interface IExamOrgDataReportService
{
    /// <summary>
    /// 提交上报
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    Task Submit(SubmitExamOrgDataReportInput input);
    /// <summary>
    /// 添加特殊学生佐证材料
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    Task AddAttachment(AddExamOrgDataReportAttachmentInput input);
    /// <summary>
    /// 删除特殊学生佐证材料
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    Task DelAttachment(DeleteAttachmentInput input);
    /// <summary>
    /// 退回机构上报
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    Task ReportReject(BaseId input);
    /// <summary>
    /// 获取监测机构上报类型列表
    /// </summary>
    /// <param name="examPlanId"></param>
    /// <param name="sysOrgId">不传取当前机构ID</param>
    /// <returns></returns>
    Task<List<ExamOrgDataReportUnionOutput>> GetListByExamPlanId(int examPlanId, short? sysOrgId = null);
    /// <summary>
    /// 根据监测计划ID和上报类型获取机构上报信息
    /// </summary>
    /// <param name="type"></param>
    /// <param name="examPlanId"></param>
    /// <param name="sysOrgId">不传取当前机构ID</param>
    /// <returns></returns>
    Task<ExamOrgDataReportUnionOutput> GetByTypeExamPlanId(DataReportType type, int examPlanId, short? sysOrgId = null);
    /// <summary>
    /// 分页查询机构上报类型列表
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    Task<PageResult<ExamPlanOrgDataReportOutput>> QueryPageList(ExamOrgDataReportPageInput input);

    Task RefreshFileSize();
}
