Skip to content

Commit 3c39447

Browse files
committed
ECER-5117: Handler changes to prevent dual submission for a icra eligibility
1 parent ffdee4d commit 3c39447

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

src/ECER.Managers.Registry/ICRAEligibilityHandlers.cs

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,12 +56,23 @@ public async Task<SubmitICRAEligibilityResult> Handle(SubmitICRAEligibilityComma
5656

5757
var eligibilities = await iCRARepository.Query(new ICRAQuery
5858
{
59-
ById = request.icraEligibilityId,
6059
ByApplicantId = request.userId,
61-
ByStatus = [Resources.Documents.ICRA.ICRAStatus.Draft]
60+
ByStatus = new Resources.Documents.ICRA.ICRAStatus[]
61+
{
62+
Resources.Documents.ICRA.ICRAStatus.Draft,
63+
Resources.Documents.ICRA.ICRAStatus.Submitted,
64+
Resources.Documents.ICRA.ICRAStatus.InReview,
65+
Resources.Documents.ICRA.ICRAStatus.ReadyforReview
66+
}
6267
}, cancellationToken);
6368

64-
var draft = mapper.Map<IEnumerable<Contract.ICRA.ICRAEligibility>>(eligibilities)!.FirstOrDefault();
69+
if (eligibilities.Any(e => e.Status == Resources.Documents.ICRA.ICRAStatus.Submitted || e.Status == Resources.Documents.ICRA.ICRAStatus.InReview || e.Status == Resources.Documents.ICRA.ICRAStatus.ReadyforReview))
70+
{
71+
return new SubmitICRAEligibilityResult { Eligibility = null, Error = Contract.ICRA.SubmissionError.DraftIcraEligibilityValidationFailed, ValidationErrors = new List<string> { "submitted icra eligibility already exists" } };
72+
}
73+
74+
var draftResource = eligibilities.FirstOrDefault(e => e.Id == request.icraEligibilityId && e.Status == Resources.Documents.ICRA.ICRAStatus.Draft);
75+
var draft = mapper.Map<Contract.ICRA.ICRAEligibility>(draftResource!);
6576
if (draft == null)
6677
{
6778
return new SubmitICRAEligibilityResult { Eligibility = null, Error = Contract.ICRA.SubmissionError.DraftIcraEligibilityNotFound, ValidationErrors = new List<string> { "draft icra eligibility does not exist" } };
@@ -73,7 +84,6 @@ public async Task<SubmitICRAEligibilityResult> Handle(SubmitICRAEligibilityComma
7384
return new SubmitICRAEligibilityResult { Eligibility = null, Error = Contract.ICRA.SubmissionError.DraftIcraEligibilityValidationFailed, ValidationErrors = validation.ValidationErrors };
7485
}
7586

76-
// Delegate status change to repository (mirror applications)
7787
var id = await iCRARepository.Submit(draft.Id!, cancellationToken);
7888

7989
var fresh = await iCRARepository.Query(new ICRAQuery { ById = id }, cancellationToken);

0 commit comments

Comments
 (0)