private string MapUnapprovedVersionStatus(AppliedStandardVersion version, bool approved, bool previouslyChanged) { string versionStatus = null; if (version.ApprovedStatus == ApprovedStatus.ApplyInProgress) { versionStatus = VersionStatus.InProgress; } else if (version.ApprovedStatus == ApprovedStatus.Withdrawn) { versionStatus = VersionStatus.Withdrawn; } else if (version.ApprovedStatus == ApprovedStatus.FeedbackAdded) { versionStatus = VersionStatus.FeedbackAdded; } else if (version.ApprovedStatus == ApprovedStatus.NotYetApplied && approved) { if (version.EPAChanged || previouslyChanged) { versionStatus = VersionStatus.NewVersionChanged; } else { versionStatus = VersionStatus.NewVersionNoChange; } } return(versionStatus); }
public StandardVersionApplication(AppliedStandardVersion standard) { StandardUId = standard.StandardUId; Title = standard.Title; Version = standard.Version; IFateReferenceNumber = standard.IFateReferenceNumber; LarsCode = standard.LarsCode; Level = standard.Level; EffectiveFrom = standard.LarsEffectiveFrom.GetValueOrDefault(); EffectiveTo = standard.LarsEffectiveTo; EPAChanged = standard.EPAChanged; StandardPageUrl = standard.StandardPageUrl; ApplicationStatus = standard.ApplicationStatus; ApplicationId = standard.ApplicationId; }
public async Task <IActionResult> ConfirmStandard(StandardVersionViewModel model, Guid id, string standardReference, string version) { var application = await _applicationApiClient.GetApplication(id); if (!CanUpdateApplicationAsync(application)) { return(RedirectToAction("Applications", "Application")); } var org = await _orgApiClient.GetEpaOrganisation(application.OrganisationId.ToString()); var standardVersions = (await _orgApiClient.GetAppliedStandardVersionsForEPAO(org?.OrganisationId, standardReference)) .OrderBy(s => s.Version); bool anyExistingVersions = standardVersions.Any(x => x.ApprovedStatus == ApprovedStatus.Approved || x.ApplicationStatus == ApplicationStatus.Submitted); AppliedStandardVersion selectedStandard = null; string applicationStatus = null; List <string> versions = null; if (string.IsNullOrWhiteSpace(version)) { selectedStandard = standardVersions.LastOrDefault(); versions = model.SelectedVersions ?? new List <string> { selectedStandard.Version }; if (model.SelectedVersions != null) { applicationStatus = await ApplicationStandardStatus(application, standardReference, model.SelectedVersions); } } else { selectedStandard = standardVersions.FirstOrDefault(x => x.Version == version); versions = new List <string> { selectedStandard.Version }; } // check that the confirm checkbox has been selected if (!model.IsConfirmed) { ModelState.AddModelError(nameof(model.IsConfirmed), "Confirm you have read the assessment plan"); TempData["ShowConfirmedError"] = true; } // check that a version has been selected if (string.IsNullOrWhiteSpace(version) && standardVersions.Count() > 1 && (model.SelectedVersions == null || !model.SelectedVersions.Any())) { ModelState.AddModelError(nameof(model.SelectedVersions), "You must select at least one version"); TempData["ShowVersionError"] = true; } if (!ModelState.IsValid || !string.IsNullOrWhiteSpace(applicationStatus)) { model.Results = string.IsNullOrWhiteSpace(version) ? standardVersions.Select(s => (StandardVersion)s).ToList() : new List <StandardVersion>() { selectedStandard }; model.SelectedStandard = (StandardVersion)selectedStandard; model.ApplicationStatus = applicationStatus; return(View("~/Views/Application/Standard/ConfirmStandard.cshtml", model)); } else if (anyExistingVersions) { await _applicationApiClient.UpdateStandardData(id, selectedStandard.LarsCode, selectedStandard.IFateReferenceNumber, selectedStandard.Title, versions, StandardApplicationTypes.Version); // update QnA application data for the Application Type var applicationData = await _qnaApiClient.GetApplicationData(application.ApplicationId); applicationData.ApplicationType = StandardApplicationTypes.Version; await _qnaApiClient.UpdateApplicationData(application.ApplicationId, applicationData); } else { await _applicationApiClient.UpdateStandardData(id, selectedStandard.LarsCode, selectedStandard.IFateReferenceNumber, selectedStandard.Title, versions, StandardApplicationTypes.Full); } return(RedirectToAction("SequenceSignPost", "Application", new { Id = id })); }