
using QYZH.InteractiveMagazine.Models.Dto.Journal;
using QYZH.InteractiveMagazine.Models.Dto.DotMatrix;
using QYZH.InteractiveMagazine.Models.Enum;
using QYZH.InteractiveMagazine.Models.Dto;
using QYZH.InteractiveMagazine.Models.Entity;

namespace QYZH.InteractiveMagazine.IService;

public interface IJournalService : IBaseService<Journal>
{
    /// <summary>
    /// 查询List
    /// </summary>
    /// <param name="dto"></param>
    /// <returns></returns>
    Task<List<JournalDto>> GetListAsync(JournalQueryDto dto);

    /// <summary>
    /// 分页查询
    /// </summary>
    /// <param name="search"></param>
    /// <returns></returns>
    Task<PageListModel<JournalDto>> GetPageListAsync(PageQueryModel<JournalQueryDto> search);


    /// <summary>
    /// 创建杂志
    /// </summary>
    /// <param name="input">杂志信息</param>
    /// <returns>新杂志ID</returns>
    Task<BaseResponse<long>> AddAsync(JournalAddDto input);

    /// <summary>
    /// 编辑
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    Task<BaseResponse<bool>> EditAsync(JournalEditDto input);

    Task<List<JournalTaskOutput>> Tasks(long id);

    Task<JournalDto> DetailAsync(long id);

    Task<bool> DeleteAsync(List<long> id);


    Task<bool> StartPageAsync(long Id, int Index);

    Task<bool> StatusAsync(long id, JournalStatusEnum status);

    Task<bool> PublishAsync(long id);

    Task<DotMatrixOutput> PrintCodeAsync(long id);

    Task<bool> ResultReportAsync(DotMatrixNoteJournalReportInput input);
}
