Fixed project status update on approval to do perform compliance check
This commit is contained in:
@@ -20,27 +20,6 @@ public sealed class ProjectService(IDbContextFactory<ApplicationDbContext> conte
|
||||
if (!await context.Users.AnyAsync(u => u.Id == userId, cancellationToken))
|
||||
return Result.Fail(NotFoundError.New);
|
||||
|
||||
if (request.Status == ApprovalStatus.Approved)
|
||||
{
|
||||
var hasUnmetCompliance = await context.ComplianceItems
|
||||
.AnyAsync(c => c.ProjectId == request.ProjectId && c.Status == ComplianceStatus.NotMet, cancellationToken);
|
||||
if (hasUnmetCompliance)
|
||||
return Result.Fail(ValidationError.Create("Project cannot be approved because some compliance items are not met."));
|
||||
|
||||
var projectBeneficiaryIds = await context.Beneficiaries
|
||||
.Where(b => b.ProjectId == request.ProjectId)
|
||||
.Select(b => b.Id)
|
||||
.ToListAsync(cancellationToken);
|
||||
|
||||
if (projectBeneficiaryIds.Count > 0)
|
||||
{
|
||||
var hasUnmetOutcomes = await context.Outcomes
|
||||
.AnyAsync(o => projectBeneficiaryIds.Contains(o.BeneficiaryId) && o.Status == ComplianceStatus.NotMet, cancellationToken);
|
||||
if (hasUnmetOutcomes)
|
||||
return Result.Fail(ValidationError.Create("Project cannot be approved because some beneficiary outcomes are not met."));
|
||||
}
|
||||
}
|
||||
|
||||
var changedTotal = await context.Projects
|
||||
.Where(f => f.Id == request.ProjectId)
|
||||
.ExecuteUpdateAsync(f => f
|
||||
|
||||
Reference in New Issue
Block a user