using Microsoft.Extensions.Logging;
using SlnMesnac.Model.domain;
using SlnMesnac.Common;
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Text;
using SqlSugar;
using System.Linq;
using System.Threading.Tasks;

namespace SlnMesnac.Repository.service.Impl
{
    public class BaseMaterialServiceImpl : IBaseMaterialService
    {
        private Repository<BaseMaterialInfo> _repository;

        private ILogger<BaseMaterialServiceImpl> _logger;

        public BaseMaterialServiceImpl(Repository<BaseMaterialInfo> repository, ILogger<BaseMaterialServiceImpl> logger)
        {
            _repository = repository;
            _logger = logger;
        }

        /// <summary>
        /// 通过物料编码获取物料信息
        /// </summary>
        /// <param name="materialCode"></param>
        /// <returns></returns>
        public BaseMaterialInfo GetMaterialInfoByMaterialCode(string materialCode)
        {
            BaseMaterialInfo materialInfo = null;
            try
            {
                materialInfo = _repository.GetFirst(x => x.MaterialCode == materialCode);
            }
            catch (Exception ex)
            {
                _logger.LogError($"根据物料编号获取物料信息异常:{ex.Message}");
            }
            return materialInfo;
        }

      

        /// <summary>
        /// 获取所有的物料信息
        /// </summary>
        /// <returns></returns>
        public async Task<List<BaseMaterialInfo>> GetMaterialInfos()
        {
            List<BaseMaterialInfo> materialInfos = null;
            try
            {
                 materialInfos =_repository.GetPageList(x=>1==1,new PageModel() { PageIndex =2,PageSize = 10,TotalCount = 10});
               // materialInfos = await _repository.GetListAsync();
              
            }
            catch (Exception ex)
            {
                _logger.LogError($"获取物料信息异常:{ex.Message}");
            }
            return materialInfos;
        }

     
    }
}

