item mng with sync
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
using Distribution.Data;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace Distribution.Features.Item;
|
||||
|
||||
public class ItemRepository(AppDBContext context) : IItemRepository
|
||||
{
|
||||
public async Task<Models.Item?> GetByIdAsync(Guid id) =>
|
||||
await context.Items
|
||||
.Include(i => i.Category)
|
||||
.Include(i => i.SubCategory)
|
||||
.Include(i => i.Brand)
|
||||
.Include(i => i.BaseUom)
|
||||
.Include(i => i.Conversions).ThenInclude(c => c.FromUom)
|
||||
.Include(i => i.Conversions).ThenInclude(c => c.ToUom)
|
||||
.FirstOrDefaultAsync(i => i.Id == id);
|
||||
|
||||
public async Task<List<Models.Item>> GetAllAsync(Guid? categoryId = null, Guid? subCategoryId = null, Guid? brandId = null)
|
||||
{
|
||||
var query = context.Items
|
||||
.Include(i => i.Category)
|
||||
.Include(i => i.SubCategory)
|
||||
.Include(i => i.Brand)
|
||||
.Include(i => i.BaseUom)
|
||||
.Where(i => i.IsActive);
|
||||
|
||||
if (categoryId.HasValue) query = query.Where(i => i.FK_CategoryId == categoryId);
|
||||
if (subCategoryId.HasValue) query = query.Where(i => i.FK_SubCategoryId == subCategoryId);
|
||||
if (brandId.HasValue) query = query.Where(i => i.FK_BrandId == brandId);
|
||||
|
||||
return await query.ToListAsync();
|
||||
}
|
||||
|
||||
public async Task<bool> SkuExistsAsync(string sku, Guid? excludeId = null)
|
||||
{
|
||||
var query = context.Items.Where(i => i.Sku == sku);
|
||||
if (excludeId.HasValue) query = query.Where(i => i.Id != excludeId);
|
||||
return await query.AnyAsync();
|
||||
}
|
||||
|
||||
public async Task<Models.Item?> GetByExternalErpItemIdAsync(int erpId) =>
|
||||
await context.Items
|
||||
.Include(i => i.Conversions)
|
||||
.FirstOrDefaultAsync(i => i.ExternalErpItemId == erpId);
|
||||
|
||||
public async Task AddAsync(Models.Item entity) =>
|
||||
await context.Items.AddAsync(entity);
|
||||
|
||||
public void Update(Models.Item entity) =>
|
||||
context.Items.Update(entity);
|
||||
|
||||
public void Remove(Models.Item entity)
|
||||
{
|
||||
entity.IsActive = false;
|
||||
context.Items.Update(entity);
|
||||
}
|
||||
|
||||
public async Task ReplaceConversionsAsync(Guid itemId, List<Models.UomConversion> conversions)
|
||||
{
|
||||
var existing = await context.UomConversions.Where(c => c.FK_ItemId == itemId).ToListAsync();
|
||||
context.UomConversions.RemoveRange(existing);
|
||||
await context.UomConversions.AddRangeAsync(conversions);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user