Update scheme management to include IsActive
This commit is contained in:
@@ -46,7 +46,8 @@ public record UpdateSchemeRequest(
|
|||||||
DateTime DateRangeFrom,
|
DateTime DateRangeFrom,
|
||||||
DateTime DateRangeTo,
|
DateTime DateRangeTo,
|
||||||
bool AgentLimitExempt,
|
bool AgentLimitExempt,
|
||||||
decimal? BaselineExpectedSales);
|
decimal? BaselineExpectedSales,
|
||||||
|
bool IsActive);
|
||||||
|
|
||||||
public record ApplySchemeRequest(Guid SchemeId);
|
public record ApplySchemeRequest(Guid SchemeId);
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ public class SchemeRepository(AppDBContext context) : ISchemeRepository
|
|||||||
.Include(s => s.TriggerItem)
|
.Include(s => s.TriggerItem)
|
||||||
.Include(s => s.FreeItem)
|
.Include(s => s.FreeItem)
|
||||||
.Include(s => s.BundleComponents).ThenInclude(c => c.Item)
|
.Include(s => s.BundleComponents).ThenInclude(c => c.Item)
|
||||||
.Where(s => s.IsActive);
|
.AsQueryable();
|
||||||
|
|
||||||
if (regionId.HasValue) query = query.Where(s => s.FK_RegionId == regionId);
|
if (regionId.HasValue) query = query.Where(s => s.FK_RegionId == regionId);
|
||||||
|
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ public class SchemeService(
|
|||||||
public async Task<SchemeResponse?> GetByIdAsync(Guid id)
|
public async Task<SchemeResponse?> GetByIdAsync(Guid id)
|
||||||
{
|
{
|
||||||
var scheme = await repo.GetByIdAsync(id);
|
var scheme = await repo.GetByIdAsync(id);
|
||||||
return scheme is null || !scheme.IsActive ? null : ToResponse(scheme);
|
return scheme is null ? null : ToResponse(scheme);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -114,7 +114,7 @@ public class SchemeService(
|
|||||||
public async Task<SchemeResponse?> UpdateAsync(Guid id, UpdateSchemeRequest request, CancellationToken ct = default)
|
public async Task<SchemeResponse?> UpdateAsync(Guid id, UpdateSchemeRequest request, CancellationToken ct = default)
|
||||||
{
|
{
|
||||||
var scheme = await repo.GetByIdAsync(id);
|
var scheme = await repo.GetByIdAsync(id);
|
||||||
if (scheme is null || !scheme.IsActive) return null;
|
if (scheme is null) return null;
|
||||||
|
|
||||||
ValidatePercentRuleConfig(scheme.RuleType, request.RuleConfig);
|
ValidatePercentRuleConfig(scheme.RuleType, request.RuleConfig);
|
||||||
if (request.DateRangeFrom > request.DateRangeTo)
|
if (request.DateRangeFrom > request.DateRangeTo)
|
||||||
@@ -128,6 +128,7 @@ public class SchemeService(
|
|||||||
scheme.DateRangeTo = request.DateRangeTo;
|
scheme.DateRangeTo = request.DateRangeTo;
|
||||||
scheme.AgentLimitExempt = request.AgentLimitExempt;
|
scheme.AgentLimitExempt = request.AgentLimitExempt;
|
||||||
scheme.BaselineExpectedSales = request.BaselineExpectedSales;
|
scheme.BaselineExpectedSales = request.BaselineExpectedSales;
|
||||||
|
scheme.IsActive = request.IsActive;
|
||||||
|
|
||||||
await uow.BeginAsync(ct);
|
await uow.BeginAsync(ct);
|
||||||
try { repo.Update(scheme); await uow.CommitAsync(ct); }
|
try { repo.Update(scheme); await uow.CommitAsync(ct); }
|
||||||
@@ -255,7 +256,7 @@ public class SchemeService(
|
|||||||
var orderItems = await orderRepo.GetItemsByOrderIdAsync(orderId);
|
var orderItems = await orderRepo.GetItemsByOrderIdAsync(orderId);
|
||||||
var regionId = store.Route?.FK_RegionId;
|
var regionId = store.Route?.FK_RegionId;
|
||||||
|
|
||||||
var candidates = await repo.GetAllAsync();
|
var candidates = (await repo.GetAllAsync()).Where(s => s.IsActive);
|
||||||
var result = new List<SchemeEligibilityResponse>();
|
var result = new List<SchemeEligibilityResponse>();
|
||||||
|
|
||||||
foreach (var scheme in candidates)
|
foreach (var scheme in candidates)
|
||||||
|
|||||||
Reference in New Issue
Block a user