public async Task <Unit> Handle(CancelAppealCommand request, CancellationToken cancellationToken) { _auditService.StartTracking(UserAction.CancelAppeal, request.UserId, request.UserName); var appealFiles = await _appealFileRepository.GetAllForApplication(request.ApplicationId); if (appealFiles != null) { foreach (var file in appealFiles) { _auditService.AuditDelete(file); _appealFileRepository.Remove(file.Id); } } var currentAppeal = await _appealRepository.GetByApplicationId(request.ApplicationId); if (currentAppeal != null) { _auditService.AuditDelete(currentAppeal); _appealRepository.Remove(currentAppeal.Id); } _auditService.Save(); return(Unit.Value); }
public async Task <Unit> Handle(MakeAppealCommand request, CancellationToken cancellationToken) { var oversightReview = await _oversightReviewRepository.GetByApplicationId(request.ApplicationId); VerifyOversightReviewIsUnsuccessfulOrRemoved(oversightReview); var currentAppeal = await _appealRepository.GetByApplicationId(request.ApplicationId); VerifyAppealNotSubmitted(currentAppeal); _auditService.StartTracking(UserAction.MakeAppeal, request.UserId, request.UserName); if (currentAppeal is null) { currentAppeal = new Appeal { ApplicationId = request.ApplicationId, Status = AppealStatus.Submitted, AppealSubmittedDate = DateTime.UtcNow, HowFailedOnPolicyOrProcesses = request.HowFailedOnPolicyOrProcesses, HowFailedOnEvidenceSubmitted = request.HowFailedOnEvidenceSubmitted, UserId = request.UserId, UserName = request.UserName, }; _auditService.AuditInsert(currentAppeal); _appealRepository.Add(currentAppeal); } else { _auditService.AuditUpdate(currentAppeal); currentAppeal.Status = AppealStatus.Submitted; currentAppeal.AppealSubmittedDate = DateTime.UtcNow; currentAppeal.HowFailedOnPolicyOrProcesses = request.HowFailedOnPolicyOrProcesses; currentAppeal.HowFailedOnEvidenceSubmitted = request.HowFailedOnEvidenceSubmitted; currentAppeal.UserId = request.UserId; currentAppeal.UserName = request.UserName; currentAppeal.UpdatedOn = DateTime.UtcNow; _appealRepository.Update(currentAppeal); } _auditService.Save(); return(Unit.Value); }
private async Task <(Appeal, bool)> GetExistingAppeal(Guid applicationId) { var isNew = false; var appeal = await _appealRepository.GetByApplicationId(applicationId); if (appeal == null) { isNew = true; appeal = new Appeal { ApplicationId = applicationId }; _auditService.AuditInsert(appeal); } else { if (appeal.Status != AppealStatus.InProgress && appeal.Status != AppealStatus.Submitted) { throw new InvalidOperationException($"Unable to modify appeal review for application {applicationId} with a status of {appeal.Status}"); } _auditService.AuditUpdate(appeal); } return(appeal, isNew); }