public EditAatfDetails ViewModelToRequest(FacilityViewModelBase viewModel)
        {
            var data = new AatfData(
                viewModel.Id,
                viewModel.Name,
                viewModel.ApprovalNumber,
                viewModel.ComplianceYear,
                viewModel.CompetentAuthoritiesList.FirstOrDefault(p => p.Abbreviation == viewModel.CompetentAuthorityId),
                Enumeration.FromValue <AatfStatus>(viewModel.StatusValue),
                viewModel.SiteAddressData,
                Enumeration.FromValue <AatfSize>(viewModel.SizeValue),
                viewModel.ApprovalDate.GetValueOrDefault())
            {
                AatfSizeValue = viewModel.SizeValue, AatfStatusValue = viewModel.StatusValue
            };

            if (viewModel.CompetentAuthorityId != UKCompetentAuthorityAbbreviationType.EA)
            {
                data.PanAreaDataId   = null;
                data.LocalAreaDataId = null;
            }
            else
            {
                data.PanAreaDataId   = viewModel.PanAreaId;
                data.LocalAreaDataId = viewModel.LocalAreaId;
            }

            data.FacilityType = viewModel.FacilityType;

            return(new EditAatfDetails()
            {
                Data = data
            });
        }
Ejemplo n.º 2
0
        public static AatfData CreateFacilityData(FacilityViewModelBase viewModel)
        {
            var data = new AatfData(
                Guid.NewGuid(),
                viewModel.Name,
                viewModel.ApprovalNumber,
                viewModel.ComplianceYear,
                viewModel.CompetentAuthoritiesList.FirstOrDefault(p => p.Abbreviation == viewModel.CompetentAuthorityId),
                Enumeration.FromValue <AatfStatus>(viewModel.StatusValue),
                viewModel.SiteAddressData,
                Enumeration.FromValue <AatfSize>(viewModel.SizeValue),
                viewModel.ApprovalDate.GetValueOrDefault(),
                viewModel.PanAreaList.FirstOrDefault(p => p.Id == viewModel.PanAreaId),
                viewModel.LocalAreaList.FirstOrDefault(p => p.Id == viewModel.LocalAreaId))
            {
                FacilityType = viewModel.FacilityType
            };

            return(data);
        }
Ejemplo n.º 3
0
        private async Task <ActionResult> ManageFacilityDetails(FacilityViewModelBase viewModel)
        {
            PreventSiteAddressNameValidationErrors();
            SetBreadcrumb(viewModel.FacilityType, null);

            using (var client = apiClient())
            {
                var doesApprovalNumberExist = false;

                var existingAatf = await client.SendAsync(User.GetAccessToken(), new GetAatfById(viewModel.Id));

                if (existingAatf.ApprovalNumber != viewModel.ApprovalNumber)
                {
                    var result = await validationWrapper.Validate(User.GetAccessToken(), viewModel);

                    if (!result.IsValid)
                    {
                        doesApprovalNumberExist = true;
                    }
                }

                if (ModelState.IsValid && !doesApprovalNumberExist)
                {
                    viewModel.CompetentAuthoritiesList = await client.SendAsync(User.GetAccessToken(), new GetUKCompetentAuthorities());

                    viewModel.PanAreaList = await client.SendAsync(User.GetAccessToken(), new GetPanAreas());

                    viewModel.LocalAreaList = await client.SendAsync(User.GetAccessToken(), new GetLocalAreas());

                    var request = detailsRequestCreator.ViewModelToRequest(viewModel);

                    if (existingAatf.ApprovalDate != viewModel.ApprovalDate)
                    {
                        var approvalDateFlags = await client.SendAsync(User.GetAccessToken(),
                                                                       new CheckAatfApprovalDateChange(existingAatf.Id, viewModel.ApprovalDate.Value));

                        if (approvalDateFlags.HasFlag(CanApprovalDateBeChangedFlags.DateChanged))
                        {
                            TempData["aatfRequest"] = request;

                            return(RedirectToAction(nameof(UpdateApproval), new { id = existingAatf.Id, organisationId = existingAatf.Organisation.Id }));
                        }
                    }

                    await client.SendAsync(User.GetAccessToken(), request);

                    await cache.InvalidateAatfCache(existingAatf.Organisation.Id);

                    return(Redirect(Url.Action("Details", new { area = "Admin", viewModel.Id })));
                }

                if (!viewModel.ModelValidated)
                {
                    ModelState.RunCustomValidation(viewModel);
                }

                var accessToken = User.GetAccessToken();
                viewModel.StatusList = Enumeration.GetAll <AatfStatus>();
                viewModel.SizeList   = Enumeration.GetAll <AatfSize>();
                viewModel.CompetentAuthoritiesList = await client.SendAsync(accessToken, new GetUKCompetentAuthorities());

                viewModel.PanAreaList = await client.SendAsync(accessToken, new GetPanAreas());

                viewModel.LocalAreaList = await client.SendAsync(accessToken, new GetLocalAreas());

                viewModel.SiteAddressData.Countries = await client.SendAsync(accessToken, new GetCountries(false));

                ModelState.ApplyCustomValidationSummaryOrdering(FacilityViewModelBase.ValidationMessageDisplayOrder);

                if (doesApprovalNumberExist)
                {
                    ModelState.AddModelError("ApprovalNumber", Constants.ApprovalNumberExistsError);
                }

                return(View(nameof(ManageAatfDetails), viewModel));
            }
        }
        public async Task <ValidationResult> ValidateByYear(string token, FacilityViewModelBase model, int year)
        {
            var validator = new FacilityViewModelBaseValidator(token, apiClient, year);

            return(await validator.ValidateAsync(model));
        }