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(); var maxRackType1 = await _repository.CopyNew().AsQueryable() .Where(x => x.RackType == 1) .MaxAsync(r => r.Sort); var maxRackType2 = await _repository.CopyNew().AsQueryable() .Where(x => x.RackType == 2) .MaxAsync(r => r.Sort); if (bin.Sort == maxRackType1) { await _repository.CopyNew().AsUpdateable() .Where(x => x.RackType == 2 && !x.IsDeleted) .SetColumns(x => x.IsFree, true) .ExecuteCommandAsync(); } else if (bin.Sort == maxRackType2) { 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); } public async Task> GetAllAsync() { var rs = await _repository.CopyNew().GetListAsync(); return rs; } public async Task ChangeDeletedStatus(int id, bool isDeleted) { await _repository.CopyNew().AsUpdateable() .Where(x => x.Id == id) .SetColumns(x => x.IsDeleted, isDeleted) .ExecuteCommandAsync(); } }