public async Task <IActionResult> UpdateEpaOrganisation([FromBody] UpdateEpaOrganisationRequest request) { try { _logger.LogInformation($@"Updating Organisation [{request.OrganisationId}]"); var result = await _mediator.Send(request); return(Ok(new EpaOrganisationResponse(result))); } catch (NotFound ex) { _logger.LogError($@"Record is not available for organisation ID: [{request.OrganisationId}]"); return(NotFound(new EpaOrganisationResponse(ex.Message))); } catch (BadRequestException ex) { _logger.LogError(ex.Message); return(BadRequest(new EpaOrganisationResponse(ex.Message))); } catch (Exception ex) { _logger.LogError($@"Bad request, Message: [{ex.Message}]"); return(BadRequest()); } }
private EpaOrganisation BuildOrganisation(UpdateEpaOrganisationRequest request) { return(new EpaOrganisation { Id = Guid.NewGuid(), CreatedAt = DateTime.Now, Name = request.Name, OrganisationId = request.OrganisationId, Ukprn = request.Ukprn, PrimaryContact = null, PrimaryContactName = null, Status = OrganisationStatus.New, OrganisationTypeId = request.OrganisationTypeId, OrganisationData = new OrganisationData { LegalName = request.LegalName, Address1 = request.Address1, Address2 = request.Address2, Address3 = request.Address3, Address4 = request.Address4, Postcode = request.Postcode, CompanyNumber = request.CompanyNumber, CharityNumber = request.CharityNumber } }); }
public void Arrange() { _mediator = new Mock <IMediator>(); _logger = new Mock <ILogger <RegisterController> >(); _request = new UpdateEpaOrganisationRequest { Name = "name 1", OrganisationId = "EPA999", Ukprn = 123321, OrganisationTypeId = 5, LegalName = "legal name 1", WebsiteLink = "website link 1", Address1 = "address 1", Address2 = "address 2", Address3 = "address 3", Address4 = "address 4", Postcode = "postcode", CompanyNumber = "company number", CharityNumber = "charity number" }; _mediator.Setup(m => m.Send(_request, new CancellationToken())).Throws <BadRequestException>(); _controller = new RegisterController(_mediator.Object, _logger.Object); _result = _controller.UpdateEpaOrganisation(_request).Result; }
public async Task UpdateEpaOrganisation(UpdateEpaOrganisationRequest updateEpaOrganisationRequest) { using (var request = new HttpRequestMessage(HttpMethod.Put, $"/api/ao/assessment-organisations/")) { await PostPutRequest(request, updateEpaOrganisationRequest); } }
public void UpdateOrganisationFailsValidation() { UpdateEpaOrganisationRequest request = BuildRequest("Name", "OrgId", 10001122); var validationResponse = BuildErrorResponse("Message", ValidationStatusCode.BadRequest); _validator.Setup(x => x.ValidatorUpdateEpaOrganisationRequest(It.IsAny <UpdateEpaOrganisationRequest>())) .Returns(validationResponse); Task <string> updateOperation = _updateEpaOrganisationHandler.Handle(request, new CancellationToken()); string message; _registerRepository.Verify(r => r.UpdateEpaOrganisation(It.IsAny <EpaOrganisation>()), Times.Never); Assert.Throws <AggregateException>(() => message = updateOperation.Result); }
public ValidationResponse ValidatorUpdateEpaOrganisationRequest(UpdateEpaOrganisationRequest request) { var validationResult = new ValidationResponse(); var doLiveValidation = false || request.Status == "Live" || request.ActionChoice == "MakeLive"; RunValidationCheckAndAppendAnyError("OrganisationId", CheckIfOrganisationNotFound(request.OrganisationId), validationResult, ValidationStatusCode.NotFound); if (!validationResult.IsValid) { return(validationResult); } RunValidationCheckAndAppendAnyError("CompanyNumber", CheckCompanyNumberIsValid(request.CompanyNumber), validationResult, ValidationStatusCode.BadRequest); RunValidationCheckAndAppendAnyError("CompanyNumber", CheckIfOrganisationCompanyNumberExists(request.OrganisationId, request.CompanyNumber), validationResult, ValidationStatusCode.BadRequest); RunValidationCheckAndAppendAnyError("CharityNumber", CheckCharityNumberIsValid(request.CharityNumber), validationResult, ValidationStatusCode.BadRequest); RunValidationCheckAndAppendAnyError("CharityNumber", CheckIfOrganisationCharityNumberExists(request.OrganisationId, request.CharityNumber), validationResult, ValidationStatusCode.BadRequest); RunValidationCheckAndAppendAnyError("OrganisationId", CheckOrganisationIdIsPresentAndValid(request.OrganisationId), validationResult, ValidationStatusCode.BadRequest); RunValidationCheckAndAppendAnyError("Name", CheckOrganisationName(request.Name), validationResult, ValidationStatusCode.BadRequest); RunValidationCheckAndAppendAnyError("Ukprn", CheckIfOrganisationUkprnExistsForOtherOrganisations(request.Ukprn, request.OrganisationId), validationResult, ValidationStatusCode.BadRequest); RunValidationCheckAndAppendAnyError("Name", CheckOrganisationNameNotUsedForOtherOrganisations(request.Name, request.OrganisationId), validationResult, ValidationStatusCode.BadRequest); RunValidationCheckAndAppendAnyError("Ukprn", CheckUkprnIsValid(request.Ukprn), validationResult, ValidationStatusCode.BadRequest); if (!doLiveValidation) { RunValidationCheckAndAppendAnyError("OrganisationTypeId", CheckOrganisationTypeIsNullOrExists(request.OrganisationTypeId), validationResult, ValidationStatusCode.BadRequest); } else { var contacts = _registerQueryRepository.GetAssessmentOrganisationContacts(request.OrganisationId).Result; var standards = _standardService.GetEpaoRegisteredStandards(request.OrganisationId).Result; RunValidationCheckAndAppendAnyError("OrganisationTypeId", CheckOrganisationTypeExists(request.OrganisationTypeId), validationResult, ValidationStatusCode.BadRequest); RunValidationCheckAndAppendAnyError("Address", CheckAddressDetailsForOrganisation(request.Address1, request.Address2, request.Address3, request.Address4), validationResult, ValidationStatusCode.BadRequest); RunValidationCheckAndAppendAnyError("Postcode", CheckPostcodeIsPresentForOrganisation(request.Postcode), validationResult, ValidationStatusCode.BadRequest); RunValidationCheckAndAppendAnyError("Ukprn", CheckUkprnForOrganisation(request.Ukprn), validationResult, ValidationStatusCode.BadRequest); RunValidationCheckAndAppendAnyError("ContactsCount", CheckContactCountForOrganisation(contacts?.Count()), validationResult, ValidationStatusCode.BadRequest); RunValidationCheckAndAppendAnyError("StandardsCount", CheckStandardCountForOrganisation(standards?.Count()), validationResult, ValidationStatusCode.BadRequest); } return(validationResult); }
public void Setup() { _registerQueryRepository = new Mock <IRegisterQueryRepository>(); _registerRepository = new Mock <IRegisterRepository>(); _cleanserService = new Mock <ISpecialCharacterCleanserService>(); _validator = new Mock <IEpaOrganisationValidator>(); _logger = new Mock <ILogger <UpdateEpaOrganisationHandler> >(); _organisationId = "EPA999"; _requestNoIssues = BuildRequest("name 1", _organisationId, 123321); _expectedOrganisationNoIssues = BuildOrganisation(_requestNoIssues); _registerQueryRepository.Setup(rq => rq.GetEpaOrganisationByOrganisationId(_organisationId)).ReturnsAsync(new EpaOrganisation()); _registerRepository.Setup(r => r.UpdateEpaOrganisation(It.IsAny <EpaOrganisation>())) .ReturnsAsync(_expectedOrganisationNoIssues.OrganisationId); _cleanserService.Setup(c => c.CleanseStringForSpecialCharacters(It.IsAny <string>())) .Returns((string s) => s); _updateEpaOrganisationHandler = new UpdateEpaOrganisationHandler(_registerQueryRepository.Object, _registerRepository.Object, _logger.Object, _cleanserService.Object, _validator.Object); }
public async Task <IActionResult> EditOrganisation(RegisterViewAndEditOrganisationViewModel viewModel) { if (!ModelState.IsValid) { viewModel.OrganisationTypes = await _apiClient.GetOrganisationTypes(); await GatherOrganisationContacts(viewModel); await GatherOrganisationStandards(viewModel, false); return(View(viewModel)); } var updateOrganisationRequest = new UpdateEpaOrganisationRequest { Name = viewModel.Name, OrganisationId = viewModel.OrganisationId, Ukprn = viewModel.Ukprn, OrganisationTypeId = viewModel.OrganisationTypeId, LegalName = viewModel.LegalName, TradingName = viewModel.TradingName, Email = viewModel.Email, PhoneNumber = viewModel.PhoneNumber, WebsiteLink = viewModel.WebsiteLink, Address1 = viewModel.Address1, Address2 = viewModel.Address2, Address3 = viewModel.Address3, Address4 = viewModel.Address4, Postcode = viewModel.Postcode, Status = viewModel.Status, ActionChoice = viewModel.ActionChoice, CompanyNumber = viewModel.CompanyNumber, CharityNumber = viewModel.CharityNumber, FinancialDueDate = viewModel.FinancialDueDate, FinancialExempt = viewModel.FinancialExempt }; await _apiClient.UpdateEpaOrganisation(updateOrganisationRequest); return(RedirectToAction("ViewOrganisation", "register", new { organisationId = viewModel.OrganisationId })); }
public async Task <string> UpdateEpaOrganisation(UpdateEpaOrganisationRequest request) { var result = await Put <UpdateEpaOrganisationRequest, EpaOrganisationResponse>("api/ao/assessment-organisations", request); return(result.Details); }
private UpdateEpaOrganisationValidationRequest MapToUpdateEpaOrganisationValidateRequest(UpdateEpaOrganisationRequest request) { return(new UpdateEpaOrganisationValidationRequest { Name = request?.Name, Ukprn = request?.Ukprn, OrganisationTypeId = request?.OrganisationTypeId, OrganisationId = request?.OrganisationId, Address1 = request?.Address1, Address2 = request?.Address2, Address3 = request?.Address3, Address4 = request?.Address4, Postcode = request?.Postcode, CompanyNumber = request?.CompanyNumber, CharityNumber = request?.CharityNumber, Status = request?.Status, ActionChoice = request?.ActionChoice }); }
public async Task <ValidationResponse> ValidateUpdateOrganisationRequest(UpdateEpaOrganisationRequest request) { var validationRequest = MapToUpdateEpaOrganisationValidateRequest(request); return(await _apiClient.UpdateOrganisationValidate(validationRequest)); }