using Hotline.Share.Dtos;
using Hotline.Share.Dtos.Snapshot;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Hotline.Application.Snapshot.Contracts;
public interface IRedPackApplication
{
    /// <summary>
    /// 审核红包发放
    /// </summary>
    /// <param name="dto"></param>
    /// <returns></returns>
    Task AuditRedPackAuditAsync(UpdateRedPackAuditInDto dto, CancellationToken token);

    /// <summary>
    /// 网格员红包审核通过或拒绝
    /// </summary>
    /// <param name="dto"></param>
    /// <returns></returns>
    Task AuditRedPackGuiderAuditAsync(UpdateRedPackGuiderAuditInDto dto);
    Task AuditRedPackSpecialAuditAsync(UpdateRedPackSpecialAuditInDto dto);

    /// <summary>
    /// 获取特提参数
    /// </summary>
    /// <param name="id"></param>
    /// <returns></returns>
    Task<GetAuditBackBaseDataOutDto> GetAuditBackBaseDataAsync(string id);

    /// <summary>
    /// 获取审核详情
    /// </summary>
    /// <param name="id">工单Id</param>
    /// <returns></returns>
    Task<SnapshotOrderAuditDetailOutDto> GetRedPackAuditDetailAsync(string id);

    /// <summary>
    /// 获取市民红包审批列表
    /// </summary>
    /// <returns></returns>
    ISugarQueryable<SnapshotOrderAuditItemsOutDto> GetRedPackAuditItems(SnapshotOrderAuditItemsInDto dto);

    /// <summary>
    /// 获取审核短信模板
    /// </summary>
    /// <param name="dto"></param>
    /// <returns></returns>
    Task<IList<GetRedPackAuditSMSTemplateOutDto>> GetRedPackAuditSMSTemplateAsync(GetRedPackAuditSMSTemplateInDto dto);

    /// <summary>
    /// 获取网格员审核详情
    /// </summary>
    /// <param name="id"></param>
    /// <returns></returns>
    Task<SnapshotOrderAuditDetailOutDto> GetRedPackGuiderAuditDetailAsync(string id);

    /// <summary>
    /// 网格员红包审核集合
    /// </summary>
    /// <param name="dto"></param>
    /// <returns></returns>
    ISugarQueryable<SnapshotOrderGuiderAuditItemsOutDto> GetRedPackGuiderAuditItems(SnapshotOrderGuiderAuditItemsInDto dto);

    /// <summary>
    /// 获取补充发放记录基础数据
    /// </summary>
    /// <param name="v"></param>
    /// <param name="orderId"></param>
    /// <returns></returns>
    Task<GetRedPackRecordBaseDataOutDto> GetRedPackRecordBaseDataAsync(string orderId);

    /// <summary>
    /// 红包发放明细
    /// </summary>
    /// <returns></returns>
    ISugarQueryable<SnapshotRedPackRecordSendOutDto> GetRedPackRecordDetail(SnapshotRedPackRecordSendInDto dto);

    /// <summary>
    /// 网格员红包发放记录
    /// </summary>
    /// <param name="dto"></param>
    /// <returns></returns>
    ISugarQueryable<SnapshotRedPackRecordItemsGuiderOutDto> GetRedPackRecordGuiderItems(SnapshotRedPackRecordItemsGuiderInDto dto);

    /// <summary>
    /// 市民红包发放记录
    /// </summary>
    /// <param name="dto"></param>
    /// <returns></returns>
    ISugarQueryable<SnapshotRedPackRecordItemsOutDto> GetRedPackRecordItems(SnapshotRedPackRecordItemsInDto dto);
    ISugarQueryable<SnapshotRedPackRecordSupplementItemsOutDto> GetRedPackRecordSupplementItems(SnapshotRedPackRecordSupplementItemsInDto dto);

    /// <summary>
    /// 特殊红包审核详情信息
    /// </summary>
    /// <param name="id"></param>
    /// <returns></returns>
    Task<SnapshotOrderAuditSpecialDetailOutDto> GetRedPackSpecialAuditBaseDataAsync(string id);

    /// <summary>
    /// 特殊红包审批集合
    /// </summary>
    /// <param name="dto"></param>
    /// <returns></returns>
    ISugarQueryable<SnapshotOrderAuditItemsOutDto> GetRedPackSpecialAuditItems(SnapshotOrderAuditItemsInDto dto);

    /// <summary>
    /// 撤销特殊红包审核
    /// </summary>
    /// <param name="ids"></param>
    /// <returns></returns>
    Task RevocationRedPackSpecialAuditAsync(IList<string> ids);

    /// <summary>
    /// 审核添加备注
    /// </summary>
    /// <param name="dto"></param>
    /// <returns></returns>
    Task UpdateRedPackAuditRemarkAsync(UpdateRedPackAuditRemarkInDto dto);

    /// <summary>
    /// 添加补充发放信息
    /// </summary>
    /// <param name="dto"></param>
    /// <returns></returns>
    Task UpdateRedPackRecordAsync(UpdateRedPackRecordInDto dto);

    /// <summary>
    /// 添加补充发放信息(特殊红包)
    /// </summary>
    /// <param name="dto"></param>
    /// <returns></returns>
    Task UpdateRedPackSpecialRecordAsync(UpdateRedPackRecordInDto dto);
}
