using Furion.JsonSerialization;
using YBEE.EQM.Core;

namespace YBEE.EQM.Application;

/// <summary>
/// 监测数据上报类型管理服务
/// </summary>
public interface IExamDataReportService
{
    #region 创建更新
    /// <summary>
    /// 添加上报类型
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    Task Add(AddExamDataReportInput input);
    /// <summary>
    /// 更新上报类型
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    Task Update(UpdateExamDataReportInput input);
    /// <summary>
    /// 删除上报类型
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    Task Del(BaseId input);

    /// <summary>
    /// 添加附件
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    Task AddAttachment(AddAttachmentInput input);
    /// <summary>
    /// 删除附件
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    Task DelAttachment(DeleteAttachmentInput input);
    #endregion

    #region 状态处理
    /// <summary>
    /// 开始
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    Task Start(BaseId input);
    /// <summary>
    /// 结束
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    Task Stop(BaseId input);
    /// <summary>
    /// 取消
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    Task Cancel(BaseId input);
    #endregion

    #region 查询
    /// <summary>
    /// 根据ID获取监测数据上报类型
    /// </summary>
    /// <param name="id"></param>
    /// <returns></returns>
    Task<ExamDataReportOutput> GetById(int id);
    /// <summary>
    /// 根据监测计划ID获取数据上报类型列表
    /// </summary>
    /// <param name="examPlanId"></param>
    /// <returns></returns>
    Task<List<ExamDataReportOutput>> GetListByExamPlanId(int examPlanId);
    #endregion
}
