using langguanApi.Extensions.AutoDI;
using langguanApi.Model;
using langguanApi.Model.Entity;
using Mapster;
using MathNet.Numerics.Distributions;
using Npoi.Mapper;
using Org.BouncyCastle.Asn1.IsisMtt.X509;
using System.Linq.Expressions;
namespace langguanApi.Service
{
    [ServiceInjection(InjectionType.Transient)]
    /// 
    /// Ledger service
    /// 
    public class LedgerService : BaseService
    {
        public LedgerService(IConfiguration config) : base(config, nameof(Ledger))
        {
        }
        /// 
        /// 新增数据
        /// 
        /// 
        /// 
        public async Task AddLedger(LedgerDTO input)
        {
            var enity = input.Adapt();
            await base.CreateAsync(enity);
        }
        /// 
        /// 导出数据
        /// 
        /// 
        /// 
        /// 
        public async Task Export(DateTime start, DateTime end)
        {
            Expression> exp = filter =>
            filter.CreateDateTime >= start && filter.CreateDateTime <= end && filter.IsDelete == false;
            var list = await base.GetListWithExp(exp);
            var mapper = new Mapper();
            mapper.Map("进场时间", s => s.InTime)
            .Map("车牌号", s => s.CarNum)
            .Map("车型", s => s.CarModel)
            .Map("新能源", s => s.NewCar ? "是" : "否")
            .Map("燃油车", s => s.Emissions)
            .Map("出厂日间 ", s => s.OutTime)
             .Format("yyyy-MM-dd HH:mm:ss", s => s.InTime)
             .Format("yyyy-MM-dd HH:mm:ss", s => s.OutTime);
            MemoryStream stream = new MemoryStream();
            mapper.Save(stream, list.ToList(), sheetName: "sheet1", leaveOpen: true);
            return stream.ToArray();
        }
        /// 
        /// 分页取数据
        /// 
        /// 
        /// 
        public async Task