Update scheme management to include IsActive

This commit is contained in:
2026-09-09 16:29:54 +05:30
parent 7dbeaa722a
commit f9e4bb3a97
3 changed files with 7 additions and 5 deletions
+2 -1
View File
@@ -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)