103 lines
3.5 KiB
C#
Raw Permalink Normal View History

2025-03-16 03:17:36 +08:00
using System.Collections.Concurrent;
using Microsoft.Extensions.DependencyInjection;
using Seyounth.Hyosung.Data.Entities;
using Seyounth.Hyosung.Data.Models;
using Seyounth.Hyosung.Data.Repositories;
namespace Seyounth.Hyosung.Data.Services;
public class VarietyService : IVarietyService
{
private readonly IRepository<VarietyEntity> _varietyRepository;
private readonly IRepository<PalletEntity> _palletRepository;
2025-03-17 22:44:15 +08:00
private readonly List<VarietyEntity> _varietiesCache;
private readonly List<PalletEntity> _palletsCache;
2025-03-16 03:17:36 +08:00
public VarietyService(IServiceProvider provider)
{
try
{
2025-03-17 22:44:15 +08:00
_varietyRepository =
provider.CreateScope().ServiceProvider.GetRequiredService<IRepository<VarietyEntity>>();
2025-03-21 10:19:10 +08:00
_palletRepository = provider.CreateScope().ServiceProvider.GetRequiredService<IRepository<PalletEntity>>();
//_varietyRepository = provider.GetService<IRepository<VarietyEntity>>();
// _palletRepository = provider.GetService<IRepository<PalletEntity>>();
_varietiesCache = new List<VarietyEntity>(_varietyRepository.GetList());
2025-03-17 22:44:15 +08:00
_palletsCache = new List<PalletEntity>(_palletRepository.GetList());
}
catch (Exception e)
2025-03-16 03:17:36 +08:00
{
Console.WriteLine(e.Message);
}
}
public async Task<Variety?> GetVarietyByCodeAsync(string code, int? layers = null)
{
var entity = layers != null
? _varietiesCache.FirstOrDefault(p => p.Code == code && p.StackingLayers == layers)
: _varietiesCache.FirstOrDefault(v => v.Code == code);
return entity is null ? null : Variety.Create(entity, _palletsCache.ToList());
}
public Task<Variety> GetById(int id)
{
var entity = _varietiesCache.FirstOrDefault(p => p.Id == id);
return Task.FromResult(Variety.Create(entity, _palletsCache.ToList()));
}
public async Task AddVarietyAsync(Variety variety)
{
2025-03-17 22:44:15 +08:00
try
{
var entity = await _varietyRepository.InsertReturnEntityAsync(variety.ToEntity());
_varietiesCache.Add(entity);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
public async Task UpdateVarietyAsync(Variety variety)
{
await _varietyRepository.UpdateAsync(variety.ToEntity());
_varietiesCache[_varietiesCache.IndexOf(variety.ToEntity())] = variety.ToEntity();
}
public async Task DeleteVarietyAsync(Variety variety)
{
await _varietyRepository.DeleteAsync(variety.ToEntity());
_varietiesCache.Remove(variety.ToEntity());
2025-03-16 03:17:36 +08:00
}
public async Task<List<Pallet>> GetPalletsAsync()
{
2025-03-17 22:44:15 +08:00
return _palletsCache.Select(Pallet.FromEntity).ToList();
2025-03-16 03:17:36 +08:00
}
public async Task AddPalletAsync(Pallet pallet)
{
var entity = await _palletRepository.InsertReturnEntityAsync(pallet);
_palletsCache.Add(entity);
}
2025-03-16 23:38:23 +08:00
public List<Variety> GetAll()
{
2025-03-17 22:44:15 +08:00
return _varietiesCache.Select(v => Variety.Create(v, _palletsCache.ToList())).ToList();
2025-03-16 23:38:23 +08:00
}
2025-03-23 13:09:36 +08:00
public async Task<int?> GetLastNo(int varietyId)
{
var variety = await (_varietyRepository.CopyNew().GetFirstAsync(x=>x.Id==varietyId));
return variety.LastNo;
}
public async Task SetLastNo(int varietyId,int lastNo)
{
await _varietyRepository.CopyNew().AsUpdateable()
.Where(x => x.Id == varietyId)
.SetColumns(x => x.LastNo , lastNo)
.ExecuteCommandAsync();
}
2025-03-16 03:17:36 +08:00
}