public void Before_each_test()
        {
            _apiClient = new Mock <IRoatpApiClient>();
            _apiClient.Setup(x => x.DuplicateUKPRNCheck(It.IsAny <Guid>(), It.IsAny <long>()))
            .ReturnsAsync(new DuplicateCheckResponse {
                DuplicateFound = false, DuplicateOrganisationName = null
            });
            _apiClient.Setup(x => x.DuplicateCompanyNumberCheck(It.IsAny <Guid>(), It.IsAny <string>()))
            .ReturnsAsync(new DuplicateCheckResponse {
                DuplicateFound = false, DuplicateOrganisationName = null
            });
            _apiClient.Setup(x => x.DuplicateCharityNumberCheck(It.IsAny <Guid>(), It.IsAny <string>()))
            .ReturnsAsync(new DuplicateCheckResponse {
                DuplicateFound = false, DuplicateOrganisationName = null
            });

            _validator = new AddOrganisationValidator(_apiClient.Object, new RoatpOrganisationValidator());

            _viewModel = new AddOrganisationViewModel
            {
                LegalName          = "Legal name",
                ProviderTypeId     = 1,
                CharityNumber      = "11223311-1",
                CompanyNumber      = "AB123456",
                TradingName        = "Trading Name",
                OrganisationTypeId = 0,
                UKPRN          = "10002000",
                OrganisationId = Guid.NewGuid()
            };
        }
        public async Task <IActionResult> AddOrganisationDetails(AddOrganisationViewModel model)
        {
            var validationMessages = _validator.ValidateProviderType(model.ProviderTypeId);

            if (validationMessages.Any())
            {
                model.ValidationErrors = new List <string>();
                model.ValidationErrors.AddRange(validationMessages);
                model.ProviderTypes = await _apiClient.GetProviderTypes();

                return(View("AddOrganisation", model));
            }

            model.OrganisationTypes = await _apiClient.GetOrganisationTypes(model.ProviderTypeId);

            var sessionModel = _sessionService.GetAddOrganisationDetails(model.OrganisationId);

            if (sessionModel.ProviderTypeId != model.ProviderTypeId)
            {
                sessionModel.OrganisationTypeId = 0;
            }

            _sessionService.SetAddOrganisationDetails(model);

            return(View(model));
        }
        private Organisation CreateOrganisationFromModel(AddOrganisationViewModel model)
        {
            var organisation = new Organisation
            {
                Id               = Guid.NewGuid(),
                LegalName        = model.LegalName,
                TradingName      = model.TradingName,
                OrganisationData = new OrganisationData
                {
                    CharityNumber          = model.CharityNumber,
                    CompanyNumber          = model.CompanyNumber,
                    FinancialTrackRecord   = true,
                    NonLevyContract        = false,
                    ParentCompanyGuarantee = false
                },
                UKPRN = Convert.ToInt64(model.UKPRN),
                OrganisationStatus = new OrganisationStatus {
                    Id = 1
                },                                                      // Active
                StatusDate       = DateTime.Now,
                OrganisationType = new OrganisationType {
                    Id = model.OrganisationTypeId
                },
                ProviderType = new ProviderType {
                    Id = model.ProviderTypeId
                }
            };

            return(organisation);
        }
Beispiel #4
0
        private static void UpdateAddOrganisationModelFromProviderTypeModel(AddOrganisationViewModel addOrganisationModel, AddOrganisationProviderTypeViewModel model)
        {
            if (string.IsNullOrEmpty(addOrganisationModel.LegalName))
            {
                addOrganisationModel.LegalName = model.LegalName;
            }
            if (string.IsNullOrEmpty(addOrganisationModel.TradingName))
            {
                addOrganisationModel.TradingName = model.TradingName;
            }
            if (string.IsNullOrEmpty(addOrganisationModel.CompanyNumber))
            {
                addOrganisationModel.CompanyNumber = model.CompanyNumber;
            }
            if (string.IsNullOrEmpty(addOrganisationModel.CharityNumber))
            {
                addOrganisationModel.CharityNumber = model.CharityNumber;
            }
            if (string.IsNullOrEmpty(addOrganisationModel.UKPRN))
            {
                addOrganisationModel.UKPRN = model.UKPRN;
            }

            if (model.OrganisationId != Guid.Empty)
            {
                addOrganisationModel.OrganisationId = model.OrganisationId;
            }

            if (model.ProviderTypeId > 0)
            {
                addOrganisationModel.ProviderTypeId = model.ProviderTypeId;
            }
        }
        private CreateOrganisationRequest CreateAddOrganisationRequestFromModel(AddOrganisationViewModel model)
        {
            var request = new CreateOrganisationRequest
            {
                Username     = HttpContext.User.OperatorName(),
                Organisation = CreateOrganisationFromModel(model)
            };

            return(request);
        }
        public async Task <IActionResult> CreateOrganisation(AddOrganisationViewModel model)
        {
            var request = CreateAddOrganisationRequestFromModel(model);

            await _apiClient.CreateOrganisation(request);

            var bannerModel = new BannerViewModel {
                CreateOrganisationCompanyName = model.LegalName
            };

            return(View("Index", bannerModel));
        }
        public async Task <IActionResult> AddOrganisation(AddOrganisationViewModel model)
        {
            if (model == null)
            {
                model = new AddOrganisationViewModel();
            }

            model.ProviderTypes = await _apiClient.GetProviderTypes();

            _sessionService.SetAddOrganisationDetails(model);

            return(View(model));
        }
Beispiel #8
0
        public async Task <IActionResult> AddOrganisationType(AddOrganisationProviderTypeViewModel model)
        {
            var addOrganisationModel = new AddOrganisationViewModel();

            if (string.IsNullOrEmpty(model.LegalName))
            {
                addOrganisationModel     = _sessionService.GetAddOrganisationDetails();
                model.LegalName          = addOrganisationModel.LegalName;
                model.ProviderTypeId     = addOrganisationModel.ProviderTypeId;
                model.OrganisationTypeId = addOrganisationModel.OrganisationTypeId;
            }

            if (!IsRedirectFromConfirmationPage() && !ModelState.IsValid && model.ProviderTypeId == 0)
            {
                model.ProviderTypes = await _apiClient.GetProviderTypes();

                return(View("~/Views/Roatp/AddProviderType.cshtml", model));
            }

            addOrganisationModel = _sessionService.GetAddOrganisationDetails();

            if (string.IsNullOrEmpty(addOrganisationModel?.LegalName))
            {
                return(Redirect("organisations-details"));
            }

            UpdateAddOrganisationModelFromProviderTypeModel(addOrganisationModel, model);


            var organisationTypes = await _apiClient.GetOrganisationTypes(addOrganisationModel.ProviderTypeId);

            addOrganisationModel.OrganisationTypes = organisationTypes.ToList().OrderBy(x => x.Id != 0).ThenBy(x => x.Type);

            if (!addOrganisationModel.OrganisationTypes.Any(x => x.Id == addOrganisationModel.OrganisationTypeId))
            {
                addOrganisationModel.OrganisationTypeId = 0;
            }

            _sessionService.SetAddOrganisationDetails(addOrganisationModel);

            ModelState.Clear();

            var vm = Mapper.Map <AddOrganisationTypeViewModel>(addOrganisationModel);

            return(View("~/Views/Roatp/AddOrganisationType.cshtml", vm));
        }
Beispiel #9
0
        public async Task <IActionResult> AddOrganisationPreview(AddOrganisationViewModel model)
        {
            model.OrganisationTypes = await _apiClient.GetOrganisationTypes(model.ProviderTypeId);

            model.ProviderTypes = await _apiClient.GetProviderTypes();

            model.LegalName   = TextSanitiser.SanitiseText(model?.LegalName);
            model.TradingName = TextSanitiser.SanitiseText(model?.TradingName);
            if (!ModelState.IsValid)
            {
                model.ProviderTypes = await _apiClient.GetProviderTypes();

                return(View("~/Views/Roatp/AddOrganisationDetails.cshtml", model));
            }

            model.LegalName = model.LegalName.ToUpper();

            _sessionService.SetAddOrganisationDetails(model);

            return(View("~/Views/Roatp/AddOrganisationPreview.cshtml", model));
        }
Beispiel #10
0
        public async Task <IActionResult> AddOrganisationDetails(AddOrganisationProviderTypeViewModel model)
        {
            if (!IsRedirectFromConfirmationPage() && !ModelState.IsValid)
            {
                model.ProviderTypes = await _apiClient.GetProviderTypes();

                return(View("~/Views/Roatp/AddOrganisation.cshtml", model));
            }

            var addOrganisationModel = _sessionService.GetAddOrganisationDetails();

            if (addOrganisationModel == null)
            {
                addOrganisationModel = new AddOrganisationViewModel
                {
                    OrganisationId = model.OrganisationId,
                    ProviderTypeId = model.ProviderTypeId
                };
            }
            else
            {
                if (model.OrganisationId != Guid.Empty)
                {
                    addOrganisationModel.OrganisationId = model.OrganisationId;
                }

                if (model.ProviderTypeId > 0)
                {
                    addOrganisationModel.ProviderTypeId = model.ProviderTypeId;
                }
            }

            addOrganisationModel.OrganisationTypes = await _apiClient.GetOrganisationTypes(addOrganisationModel.ProviderTypeId);

            _sessionService.SetAddOrganisationDetails(addOrganisationModel);

            ModelState.Clear();

            return(View("~/Views/Roatp/AddOrganisationDetails.cshtml", addOrganisationModel));
        }
Beispiel #11
0
        private CreateRoatpOrganisationRequest CreateAddOrganisationRequestFromModel(AddOrganisationViewModel model)
        {
            var request = new CreateRoatpOrganisationRequest
            {
                CharityNumber          = model.CharityNumber,
                CompanyNumber          = model.CompanyNumber,
                FinancialTrackRecord   = true,
                LegalName              = model?.LegalName?.ToUpper(),
                NonLevyContract        = false,
                OrganisationTypeId     = model.OrganisationTypeId,
                ParentCompanyGuarantee = false,
                ProviderTypeId         = model.ProviderTypeId,
                StatusDate             = DateTime.Now,
                Ukprn                     = model.UKPRN,
                TradingName               = model?.TradingName,
                Username                  = HttpContext.User.UserDisplayName(),
                SourceIsUKRLP             = true,
                ApplicationDeterminedDate = model.ApplicationDeterminedDate
            };

            return(request);
        }
Beispiel #12
0
        public async Task <IActionResult> CreateOrganisation(AddOrganisationViewModel model)
        {
            model.LegalName   = TextSanitiser.SanitiseText(model?.LegalName);
            model.TradingName = TextSanitiser.SanitiseText(model?.TradingName);

            var request = CreateAddOrganisationRequestFromModel(model);

            var success = await _apiClient.CreateOrganisation(request);

            if (!success)
            {
                return(RedirectToAction("Error", "Home"));
            }

            string bannerMessage = string.Format(RoatpConfirmationMessages.AddOrganisationConfirmation,
                                                 model.LegalName.ToUpper());

            var bannerModel = new OrganisationSearchViewModel {
                BannerMessage = bannerMessage
            };

            _sessionService.ClearAddOrganisationDetails();
            return(View("~/Views/Roatp/Index.cshtml", bannerModel));
        }
        public async Task <ValidationResponse> ValidateOrganisationDetails(AddOrganisationViewModel viewModel)
        {
            var validationResponse = new ValidationResponse
            {
                Errors = new List <ValidationErrorDetail>()
            };

            var fieldValidationErrors = _organisationValidator.IsValidLegalName(viewModel.LegalName);

            if (fieldValidationErrors.Any())
            {
                validationResponse.Errors.AddRange(fieldValidationErrors);
            }

            fieldValidationErrors = _organisationValidator.IsValidUKPRN(viewModel.UKPRN);
            if (fieldValidationErrors.Any())
            {
                validationResponse.Errors.AddRange(fieldValidationErrors);
            }
            else
            {
                if (!String.IsNullOrWhiteSpace(viewModel.UKPRN))
                {
                    fieldValidationErrors = IsDuplicateUKPRN(viewModel.OrganisationId, viewModel.UKPRN);
                    if (fieldValidationErrors.Any())
                    {
                        validationResponse.Errors.AddRange(fieldValidationErrors);
                    }
                }
            }

            fieldValidationErrors = _organisationValidator.IsValidCompanyNumber(viewModel.CompanyNumber);
            if (fieldValidationErrors.Any())
            {
                validationResponse.Errors.AddRange(fieldValidationErrors);
            }
            else
            {
                if (!String.IsNullOrWhiteSpace(viewModel.CompanyNumber))
                {
                    fieldValidationErrors = IsDuplicateCompanyNumber(viewModel.OrganisationId, viewModel.CompanyNumber);
                    if (fieldValidationErrors.Any())
                    {
                        validationResponse.Errors.AddRange(fieldValidationErrors);
                    }
                }
            }

            fieldValidationErrors = _organisationValidator.IsValidCharityNumber(viewModel.CharityNumber);
            if (fieldValidationErrors.Any())
            {
                validationResponse.Errors.AddRange(fieldValidationErrors);
            }
            else
            {
                if (!String.IsNullOrWhiteSpace(viewModel.CharityNumber))
                {
                    fieldValidationErrors = IsDuplicateCharityNumber(viewModel.OrganisationId, viewModel.CharityNumber);
                    if (fieldValidationErrors.Any())
                    {
                        validationResponse.Errors.AddRange(fieldValidationErrors);
                    }
                }
            }

            fieldValidationErrors = _organisationValidator.IsValidTradingName(viewModel.TradingName);
            if (fieldValidationErrors.Any())
            {
                validationResponse.Errors.AddRange(fieldValidationErrors);
            }

            return(validationResponse);
        }
Beispiel #14
0
        private static AddApplicationDeterminedDateViewModel MapOrganisationVmToApplicationDeterminedDateVm(AddOrganisationViewModel addOrganisationModel)
        {
            if (addOrganisationModel == null)
            {
                return(new AddApplicationDeterminedDateViewModel());
            }

            int?determinedDay   = null;
            int?determinedMonth = null;
            int?determinedYear  = null;

            if (addOrganisationModel?.ApplicationDeterminedDate != null &&
                addOrganisationModel.ApplicationDeterminedDate != DateTime.MinValue)
            {
                determinedDay   = addOrganisationModel.ApplicationDeterminedDate.Value.Day;
                determinedMonth = addOrganisationModel.ApplicationDeterminedDate.Value.Month;
                determinedYear  = addOrganisationModel.ApplicationDeterminedDate.Value.Year;
            }

            return(new AddApplicationDeterminedDateViewModel
            {
                CharityNumber = addOrganisationModel.CharityNumber,
                CompanyNumber = addOrganisationModel.CompanyNumber,
                LegalName = addOrganisationModel.LegalName,
                OrganisationId = addOrganisationModel.OrganisationId,
                OrganisationTypeId = addOrganisationModel.OrganisationTypeId,
                OrganisationTypes = addOrganisationModel.OrganisationTypes,
                ProviderTypeId = addOrganisationModel.ProviderTypeId,
                ProviderTypes = addOrganisationModel.ProviderTypes,
                TradingName = addOrganisationModel.TradingName,
                UKPRN = addOrganisationModel.UKPRN,
                Day = determinedDay,
                Month = determinedMonth,
                Year = determinedYear
            });
        }
Beispiel #15
0
        public void SetAddOrganisationDetails(AddOrganisationViewModel model)
        {
            var modelJson = JsonConvert.SerializeObject(model);

            _sessionService.Set(_addOrganisationSessionKey, modelJson);
        }