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)); }
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)); }
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)); }
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)); }