Ejemplo n.º 1
0
        public async Task Group_SaveNewAcademyTrust()
        {
            var gws = GetMock <IGroupsWriteService>();

            gws.Setup(x => x.ValidateAsync(It.IsAny <SaveGroupDto>(), It.IsAny <IPrincipal>())).ReturnsAsync(new ValidationEnvelopeDto());
            gws.Setup(x => x.SaveNewAsync(It.IsAny <SaveGroupDto>(), It.IsAny <IPrincipal>())).ReturnsAsync(new ApiResponse <NumericResultDto>(true)
            {
                Response = new NumericResultDto {
                    Value = 123
                }
            });

            GetMock <ISecurityService>().Setup(x => x.GetCreateGroupPermissionAsync(It.IsAny <IPrincipal>()))
            .ReturnsAsync(new CreateGroupPermissionDto {
                GroupTypes = new eLookupGroupType[] { eLookupGroupType.MultiacademyTrust }
            });


            var vm = new CreateAcademyTrustViewModel
            {
                CompaniesHouseAddressToken = UriHelper.SerializeToUrlToken(new AddressDto {
                    Line1 = "line1", CityOrTown = "Bobville"
                }),
                CompaniesHouseNumber = "67362546543",
                TypeId   = (int)eLookupGroupType.MultiacademyTrust,
                Name     = "Multi acad",
                OpenDate = DateTime.Now,
                GroupId  = "54243"
            };
            var result = (RedirectToRouteResult)await ObjectUnderTest.SaveNewAcademyTrust(vm);

            Assert.That(result.RouteValues["action"], Is.EqualTo("Details"));
            Assert.That(result.RouteValues["id"], Is.EqualTo(123));
        }
Ejemplo n.º 2
0
        public async Task <ActionResult> CreateAcademyTrust(string companiesHouseNumber)
        {
            if (string.IsNullOrWhiteSpace(companiesHouseNumber))
            {
                return(HttpNotFound());
            }

            var companyProfile = await _companiesHouseService.SearchByCompaniesHouseNumber(companiesHouseNumber);

            var groupTypes = await GetAcademyTrustGroupTypes();

            var vm = new CreateAcademyTrustViewModel(companyProfile.Items.First(), groupTypes);

            var existingTrust = await _groupReadService.SearchByIdsAsync(null, null, companiesHouseNumber, User);

            if (existingTrust != null && existingTrust.Items.Any())
            {
                vm.TrustExists = true;
                vm.TypeId      = existingTrust.Items.First().GroupTypeId;
                vm.GroupId     = existingTrust.Items.First().GroupId;
            }

            if (vm.Address == null)
            {
                ModelState.AddModelError("", "This company record doesn't have an address");
            }
            if (!vm.OpenDate.HasValue)
            {
                ModelState.AddModelError("", "This company record doesn't have an incorporation date");
            }

            vm.AllowSave = !vm.TrustExists && ModelState.IsValid;

            return(View(vm));
        }
Ejemplo n.º 3
0
        public async Task <ActionResult> SaveNewAcademyTrust(CreateAcademyTrustViewModel viewModel)
        {
            var permission = await _securityService.GetCreateGroupPermissionAsync(User);

            if (!permission.GroupTypes.Any(x => x == GT.MultiacademyTrust || x == GT.SingleacademyTrust))
            {
                throw new PermissionDeniedException("Current principal does not have permission to create a group of this type.");
            }

            var dto = new SaveGroupDto(new GroupModel
            {
                Address = UriHelper.DeserializeUrlToken <AddressDto>(viewModel.CompaniesHouseAddressToken),
                CompaniesHouseNumber = viewModel.CompaniesHouseNumber,
                GroupTypeId          = viewModel.TypeId,
                Name     = viewModel.Name,
                OpenDate = viewModel.OpenDate,
                StatusId = (int)eLookupGroupStatus.Open,
                GroupId  = viewModel.GroupId
            });

            if (ModelState.IsValid)
            {
                var validationEnvelope = await _groupWriteService.ValidateAsync(dto, User);

                if (validationEnvelope.HasErrors)
                {
                    validationEnvelope.Errors.ForEach(x => ModelState.AddModelError(x.Fields, x.GetMessage()));
                }
            }

            if (ModelState.IsValid)
            {
                var apiResponse = (await _groupWriteService.SaveNewAsync(dto, User));
                if (!apiResponse.HasErrors)
                {
                    return(RedirectToAction(nameof(Details), new { id = apiResponse.GetResponse().Value }));
                }
                else
                {
                    apiResponse.Errors.ForEach(x => ModelState.AddModelError(x.Fields, x.GetMessage()));
                }
            }
            else
            {
                viewModel.GroupTypes = await GetAcademyTrustGroupTypes(viewModel.TypeId);
            }

            return(View("CreateAcademyTrust", viewModel));
        }
Ejemplo n.º 4
0
        public async Task <ActionResult> SaveNewAcademyTrust(CreateAcademyTrustViewModel viewModel)
        {
            var dto = new SaveGroupDto(new GroupModel
            {
                Address = UriHelper.DeserializeUrlToken <AddressDto>(viewModel.CompaniesHouseAddressToken),
                CompaniesHouseNumber = viewModel.CompaniesHouseNumber,
                GroupTypeId          = viewModel.TypeId,
                Name     = viewModel.Name,
                OpenDate = viewModel.OpenDate,
                StatusId = (int)eLookupGroupStatus.Open,
                GroupId  = viewModel.GroupId
            });

            if (ModelState.IsValid)
            {
                var validationEnvelope = await _groupWriteService.ValidateAsync(dto, User);

                if (validationEnvelope.HasErrors)
                {
                    validationEnvelope.Errors.ForEach(x => ModelState.AddModelError(x.Fields, x.GetMessage()));
                }
            }

            if (ModelState.IsValid)
            {
                var apiResponse = (await _groupWriteService.SaveNewAsync(dto, User));
                if (apiResponse.HasErrors)
                {
                    apiResponse.Errors.ForEach(x => ModelState.AddModelError(x.Fields, x.GetMessage()));
                }
                else
                {
                    return(RedirectToAction(nameof(Details), new { id = apiResponse.GetResponse().Value }));
                }
            }
            else
            {
                viewModel.GroupTypes = await GetAcademyTrustGroupTypes(viewModel.TypeId);
            }

            return(View("CreateAcademyTrust", viewModel));
        }