public async Task <IActionResult> ChooseStandardForWithdrawal(int?pageIndex)
        {
            var contact = await GetUserContact();

            var org = await _orgApiClient.GetEpaOrganisationById(contact.OrganisationId?.ToString());

            var modelStateSelectedStandardForWithdrawal =
                int.TryParse(
                    ModelState[nameof(ChooseStandardForWithdrawalViewModel.SelectedStandardForWithdrawal)]?.AttemptedValue,
                    out int result)
                ? result
                : (int?)null;

            var applications = await GetWithdrawalApplications(contact.Id);

            var standards = await _standardsApiClient.GetEpaoRegisteredStandards(org.OrganisationId, pageIndex ?? 1, 10);

            var viewModel = new ChooseStandardForWithdrawalViewModel()
            {
                SelectedStandardForWithdrawal = ModelState.IsValid ? null : modelStateSelectedStandardForWithdrawal,
                Standards = standards.Convert(x => new RegisteredStandardsViewModel()
                {
                    StandardName     = x.StandardName,
                    Level            = x.Level,
                    ReferenceNumber  = x.ReferenceNumber,
                    NumberOfVersions = x.NumberOfVersions,
                    ApplicationId    = applications.FirstOrDefault(a => !string.IsNullOrWhiteSpace(a.StandardReference) &&
                                                                   a.StandardReference.Equals(x.ReferenceNumber, StringComparison.InvariantCultureIgnoreCase) &&
                                                                   a.ApplyData.Apply.Versions == null)?.Id
                })
            };

            return(View(viewModel));
        }
示例#2
0
        private async Task <string> ApplicationStandardStatus(ApplicationResponse application, int standardCode)
        {
            var validApplicationStatuses         = new string[] { ApplicationStatus.InProgress };
            var validApplicationSequenceStatuses = new string[] { ApplicationSequenceStatus.Draft };

            var applicationData = await _qnaApiClient.GetApplicationData(application.ApplicationId);

            var org = await _orgApiClient.GetEpaOrganisationById(applicationData.OrganisationReferenceId);

            var standards = await _orgApiClient.GetOrganisationStandardsByOrganisation(org?.OrganisationId);

            var standard = standards?.SingleOrDefault(x => x.StandardCode == standardCode);

            // does the org or the application not have the standard &&
            if (standard == null && application?.ApplyData != null)
            {
                var userId = await GetUserId();

                var applications = await _apiClient.GetStandardApplications(userId);

                foreach (var app in applications)
                {
                    if (app.OrganisationId == org?.Id && app.ApplyData.Apply.StandardCode == standardCode)
                    {
                        if (validApplicationStatuses.Contains(application.ApplicationStatus))
                        {
                            var sequence = application.ApplyData.Sequences?.FirstOrDefault(seq => seq.IsActive && seq.SequenceNo == ApplyConst.STANDARD_SEQUENCE_NO);

                            if (sequence != null && validApplicationSequenceStatuses.Contains(sequence.Status))
                            {
                                return(sequence.Status);
                            }
                        }
                    }
                }
            }
            else if ((standard.EffectiveTo == null || standard.EffectiveTo > DateTime.UtcNow) && org.Status == OrganisationStatus.Live)
            {
                return(ApplicationStatus.Approved);
            }

            return(string.Empty);
        }
示例#3
0
        public async Task <IActionResult> ChooseStandardForWithdrawal()
        {
            var contact = await GetUserContact();

            var org = await _orgApiClient.GetEpaOrganisationById(contact.OrganisationId?.ToString());

            var modelStateSelectedStandardForWithdrawal =
                int.TryParse(
                    ModelState[nameof(ChooseStandardForWithdrawalViewModel.SelectedStandardForWithdrawal)]?.AttemptedValue,
                    out int result)
                ? result
                : (int?)null;

            var viewModel = new ChooseStandardForWithdrawalViewModel()
            {
                SelectedStandardForWithdrawal = ModelState.IsValid ? null : modelStateSelectedStandardForWithdrawal,
                Standards = await _standardsApiClient.GetEpaoRegisteredStandards(org.OrganisationId, 1, int.MaxValue)
            };

            return(View(viewModel));
        }
示例#4
0
        public async Task <IActionResult> Index()
        {
            var user = await GetUser();

            var organisation = await _organisationApiClient.GetEpaOrganisationById(user?.OrganisationId?.ToString());

            if (user is null)
            {
                return(RedirectToAction("Index", "Home"));
            }
            else if (organisation is null)
            {
                return(RedirectToAction("Index", "OrganisationSearch"));
            }
            else if (user.Status == ContactStatus.Applying || organisation.Status == OrganisationStatus.Applying)
            {
                return(RedirectToAction("Applications", "Application"));
            }
            else if (user.EndPointAssessorOrganisationId is null && user.Status == "Invite Pending")
            {
                return(RedirectToAction("InvitePending", "Home"));
            }