using Nirvana.Common;
using Nirvana.Common.ApiBase;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using YBDevice.Application.AdInfo;
using YBDevice.Entity;

namespace YBDevice.Application
{
    /// <summary>
    /// 科普资讯
    /// </summary>
    public interface IInfoService

    {
        /// <summary>
        /// 资讯列表
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        Task<PageParms<SecInfoListModel>> GetListAsync(QueryParams param);
        /// <summary>
        /// 信息提交
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        Task<ResultInfo> SubmitAsync(SecInfoSubmitModel model);
        /// <summary>
        /// 状态修改
        /// </summary>
        /// <param name="id">记录ID</param>
        /// <param name="status">状态</param>
        /// <param name="remark">状态描述</param>
        /// <returns></returns>
        Task<ResultInfo> SetStatusAsync(Guid id, AdStatus status, string remark);
        /// <summary>
        /// 详情
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<SecInfoSubmitModel> DetailAsync(Guid id);
        /// <summary>
        /// 类型列表
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        Task<PageParms<SecInfoTypeModel>> GetTypeListAsync(QueryParams param);

        /// <summary>
        /// 所有类型列表
        /// </summary>
        /// <returns></returns>
        Task<List<YB_SecInfoType>> GetAllTypeAsync();

        /// <summary>
        /// 类型信息修改
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        Task<ResultInfo> SubmitTypeAsync(SecInfoTypeCS2Dto model);

        /// <summary>
        /// 类型状态修改
        /// </summary>
        /// <param name="id">记录ID</param>
        /// <param name="status">状态</param>
        /// <returns></returns>
        Task<ResultInfo> SetTypeStatusAsync(int id, StatusType status);

        /// <summary>
        /// 类型详情
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<YB_SecInfoType> DetailTypeAsync(int id);
    }
}
