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);
        }
Esempio n. 2
0
 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 }));
        }