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.Entity;

namespace YBDevice.Application
{
    public interface IProductService
    {
        /// <summary>
        /// 出货列表
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        Task<PageParms<OutProductList>> GetListAsync(QueryParams param);

        /// <summary>
        /// 物流列表
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        Task<PageParms<YB_ExPress>> GetExpressListAsync(QueryParams param);
        /// <summary>
        /// 出货设备列表
        /// </summary>
        /// <param name="param"></param>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<PageParms<YB_OutProductDev>> GetDevListAsync(QueryParams param, int id);
        /// <summary>
        /// 信息编辑
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        Task<ResultInfo> SubmitAsync(YB_OutProduct data);
        /// <summary>
        /// 修改状态
        /// </summary>
        /// <param name="id"></param>
        /// <param name="status"></param>
        /// <returns></returns>
        Task<ResultInfo> SetStatusAsync(int id, OutProductStatus status);
        /// <summary>
        /// 取消订单
        /// </summary>
        /// <param name="id"></param>
        /// <param name="remark"></param>
        /// <returns></returns>
        Task<ResultInfo> CancelAsync(int id, string remark);
        /// <summary>
        /// 处理csv文件
        /// </summary>
        /// <param name="file">文件路径</param>
        /// <param name="virualpath">虚拟路径</param>
        /// <param name="savefolder"></param>
        /// <param name="id">记录id</param>
        /// <returns></returns>
        Task<ResultInfo> HandlerFileAsync(string file, string virualpath, string savefolder, int id);
        /// <summary>
        /// 物流信息编辑
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        Task<ResultInfo> SubmitExpressAsync(YB_ExPress data);
        /// <summary>
        /// 详情
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<YB_OutProduct> DetailAsync(int id);
        /// <summary>
        /// 物流详情
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<YB_ExPress> DetailExpressAsync(int id);
        /// <summary>
        /// 获取所有物流列表
        /// </summary>
        /// <returns></returns>
        Task<List<YB_ExPress>> GetAllExpressAsync();
        /// <summary>
        /// 批量设置
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        Task<ResultInfo> BatchSetAsync(OutProductBatchSetDto data);
    }
}
