using Microsoft.Extensions.DependencyInjection; using Seyounth.Hyosung.Data.Entities; using Seyounth.Hyosung.Data.Repositories; namespace Seyounth.Hyosung.Data.Services; public class AgvBinService : IAgvBinService { private readonly List _cache; private readonly IRepository _repository; public AgvBinService(IServiceProvider provider) { _repository = provider.CreateScope().ServiceProvider.GetRequiredService>(); //_repository = provider.GetService>(); _cache = _repository.GetList(); } public async Task GetAvailableBin(int height) { var bin = await _repository.CopyNew().AsQueryable() .Where(x => x.IsFree && !x.IsDeleted).OrderBy(x => x.Sort).FirstAsync(); if (bin.BinCode == "B10") { await _repository.CopyNew().AsUpdateable() .Where(x => x.RackType == 2 && !x.IsDeleted) .SetColumns(x => x.IsFree, true) .ExecuteCommandAsync(); } else if (bin.BinCode == "B33") { await _repository.CopyNew().AsUpdateable() .Where(x => x.RackType == 1 && !x.IsDeleted) .SetColumns(x => x.IsFree, true) .ExecuteCommandAsync(); } return bin; } public Task BindAsync(AgvBinEntity entity) { entity.IsFree = false; _cache.First(e => e.Id == entity.Id).IsFree = false; return _repository.CopyNew().UpdateAsync(entity); } }