using System.Threading.Tasks;
using GxPress.Common.Page;
using GxPress.Entity.WaitHandle;
using GxPress.Request.App.WaitHandle;
using GxPress.Result.App.WaitHandle;

namespace GxPress.Service.Interface.WaitHandle
{
    public interface IWaitHandleService : IService
    {

        /// <summary>
        /// 添加修改待办事项
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        Task<Entity.WaitHandle.WaitHandle> AddOrUpdateWaitHandleAsync(WaitHandleAddOrUpdateRequest request);

        /// <summary>
        /// 删除待办事项
        /// </summary>
        /// <returns></returns>
        Task<bool> DeleteWaitHandleAsync(DeleteWaitHandleRequest request);

        /// <summary>
        /// // 待办搜索  Sort :hand  手动 time按时间 label 标签 level 优先级
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        Task<PagedList<Entity.WaitHandle.WaitHandle>> PageWaitHandleAsync(PageWaitHandleRequest request);

        /// <summary>
        /// 添加修改标签
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        Task<bool> AddOrUpdateWaitHandleLabelAsync(WaitHandleLabelAddOrUpdateRequest request);

        /// <summary>
        /// 删除标签
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        Task<bool> DeleteWaitHandleLabelAsync(DeleteWaitHandleRequest request);


        /// <summary>
        /// // 待办搜索  Sort :hand  手动 time按时间 label 标签 level 优先级
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        Task<PagedList<WaitHandleLabel>> PageWaitHandleLabelAsync(PageWaitHandleRequest request);

        /// <summary>
        /// 待办搜索  1  手动 2 按时间 3 标签 4 优先级
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        Task<WaitHandleListResult> WaitHandleListAsync(ListWaitHandleRequest request);

        /// <summary>
        /// 设置待办事项
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<bool> IsFinishAsync(int id);

           /// <summary>
        /// 获取详情
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<Entity.WaitHandle.WaitHandle> GetWaitAsync(int id);
        
    }
}