using MasaBlazorApp3.Pojo;
using MasaBlazorApp3.Pojo.Vo;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MasaBlazorApp3.DataAccess.Dao
{
    public interface IOrderInfoDao
    {
        public Task<PageData<OrderInfo>> GetAllOrderInfo(string OrderrNo,DateTime OrderDate, int? take, int? skip);
        //导入处方查询数据
        public Task<PageData<OrderInfo>> GetAllOrderInfoForImport(string name, string OrderrNo, DateTime OrderDate, BoxModel boxModel, int? take, int? skip);

        public Task<PageData<OrderInfo>> GetAllCanReturnOrderInfo(string OrderrNo, DateTime OrderDate, int? take, int? skip);

        public Task<List<OrderDetail>> getDetailByOrderNo(string OrderrNo);


        public Task<List<OrderTakeVo>> getTakeInfoByOrderNo(string OrderrNo);

        public Task<bool> OrderTakeFinish(List<OrderTakeVo> datas);


        public Task<bool> OrderReturnFinish(List<OperationVo<MachineRecord>> datas, string OrderrNo);

        public Task<List<OperationVo<MachineRecord>>> getReturnInfoByOrderNo(string OrderrNo);
        //获取药盒中的用药信息
        public Task<PageData<OrderInfo>> GetAllOrderInfoByBox(int box,string OrderrNo, DateTime OrderDate, int? take, int? skip);
        //获取待处理处方中的麻醉师
        public Task<PageData<OrderInfo>> GetAllOrderInfo(string Name, string BoxNum, string PatientName,string OrderrNo, DateTime? OrderDate, int? take, int? skip);

        public Task<PageData<ChannelStock>> GetAllOrderInfoDrugByBox(BoxModel boxNum, string roomName, DateTime? OrderDate);
        //获取麻醉师信息
        public Task<List<Anaesthetist>> GetAnaesthetistName();
        //获取麻醉师单对应的手术间号
        public Task<List<BoxModel>> GetOperationNum(int boxColor);
        //获取麻醉师单对应的手术间号(查询全部手术间已绑套餐的手术间)
        public Task<List<BoxModel>> GetAllBindOperationNum();
        //获取所有药盒号 
        public Task<List<ChannelStock>> GetDrawerNum(string machineId);
        /// 获取指定药盒号
        public Task<List<BoxModel>> GetDrawerNumByOperationNum(string machineId, List<int> operationNum);
        //核对处方
        public Task<bool> CheckOrderInfo(IList<OrderInfo> selectedOrderInfos, BoxModel boxModel);
        //查询药品对应的库位 drawerType=1药品库位，其他则是回收库位
        public Task<List<ChannelStock>> GetStockByDRrug(string drugId, string manuNo, int drawerType);
        //核对处方通过库位下的药品
        public Task<bool> CheckOrderInfoByChannelStock(IList<ChannelStock> csList, BoxModel boxModel);
    }
}
