public async Task <VerintOnlineFormResponse> AttachVOF(VerintOnlineFormRequest model) { if (model.VerintCase == null || string.IsNullOrEmpty(model.VerintCase.CaseReference) || model.FormData == null || !model.FormData.Any()) { throw new ArgumentNullException("VerintOnlineFormService:AttachVOF - VerintOnlineFormRequest: Form, case data or Case.CaseReference were null or empty"); } var createVOFResponse = await _VOFConnection.CreateAsync(new CreateRequest { caseid = model.VerintCase.CaseReference, name = model.FormName, data = new Data { formdata = new[] { new Field { name = "le_eventcode", Item = model.VerintCase.EventCode.ToString() } } } }); if (string.IsNullOrEmpty(createVOFResponse.CreateResponse.@ref)) { throw new Exception("VerintOnlineFormService.CreateVOFCase: VerintOnlineForms-WebService.CreateAsync failed to create basic case."); } var updateVOFResponse = await _VOFConnection.UpdateAsync(new UpdateRequest { @ref = createVOFResponse.CreateResponse.@ref, caseid = model.VerintCase.CaseReference, name = model.FormName, completeSpecified = true, complete = stringBoolean.Y, dataupdate = dataupdate.overwrite, data = new Data { formdata = model.FormData.Select(_ => new Field { name = _.Key, Item = _.Value }).ToArray() } }); if (string.IsNullOrEmpty(updateVOFResponse?.UpdateResponse?.status) || !updateVOFResponse.UpdateResponse.status.ToLower().Equals("success")) { throw new Exception("VerintOnlineFormService.CreateVOFCase: VerintOnlineForms-WebService.UpdateAsync failed to update case details."); } return(new VerintOnlineFormResponse { VerintCaseReference = model.VerintCase.CaseReference, VerintOnlineFormReference = createVOFResponse.CreateResponse.@ref }); }
public async Task CreateCase_ShouldCallVerintGatewayWithCRMCase() { VerintOnlineFormRequest crmCaseParameter = null; _mockVerintServiceGateway .Setup(_ => _.GetStreet(It.IsAny <string>())) .ReturnsAsync(new HttpResponse <AddressSearchResult> { IsSuccessStatusCode = true, ResponseContent = new AddressSearchResult { USRN = "test" } }); _mockVerintServiceGateway .Setup(_ => _.CreateVerintOnlineFormCase(It.IsAny <VerintOnlineFormRequest>())) .Callback <VerintOnlineFormRequest>(_ => crmCaseParameter = _) .ReturnsAsync(new HttpResponse <VerintOnlineFormResponse> { IsSuccessStatusCode = true, ResponseContent = new VerintOnlineFormResponse { VerintCaseReference = "test" } }); _ = await _service.CreateCase(_abandonedVehicleReportData); _mockVerintServiceGateway.Verify(_ => _.CreateVerintOnlineFormCase(It.IsAny <VerintOnlineFormRequest>()), Times.Once); Assert.NotNull(crmCaseParameter); Assert.Contains(_abandonedVehicleReportData.AbandonedReason, crmCaseParameter.VerintCase.Description); Assert.Contains(_abandonedVehicleReportData.ImageOrVideo, crmCaseParameter.VerintCase.Description); Assert.Contains(_abandonedVehicleReportData.ImageOrVideo, crmCaseParameter.VerintCase.Description); Assert.Contains(_abandonedVehicleReportData.VehicleColour, crmCaseParameter.VerintCase.Description); Assert.Contains(_abandonedVehicleReportData.VehicleMake, crmCaseParameter.VerintCase.Description); Assert.Contains(_abandonedVehicleReportData.VehicleModel, crmCaseParameter.VerintCase.Description); Assert.Contains(_abandonedVehicleReportData.VehicleRegistration, crmCaseParameter.VerintCase.Description); }
public async Task CreateCase_ShouldCallVerintGatewayWithCRMCase() { VerintOnlineFormRequest crmCaseParameter = null; _mockVerintServiceGateway .Setup(_ => _.GetStreet(It.IsAny <string>())) .ReturnsAsync(new HttpResponse <AddressSearchResult> { IsSuccessStatusCode = true, ResponseContent = new AddressSearchResult { USRN = "test" } }); _mockVerintServiceGateway .Setup(_ => _.CreateVerintOnlineFormCase(It.IsAny <VerintOnlineFormRequest>())) .Callback <VerintOnlineFormRequest>(_ => crmCaseParameter = _) .ReturnsAsync(new HttpResponse <VerintOnlineFormResponse> { IsSuccessStatusCode = true, ResponseContent = new VerintOnlineFormResponse { VerintCaseReference = "test" } }); _ = await _service.CreateCase(_droppedKerbRequest); _mockVerintServiceGateway.Verify(_ => _.CreateVerintOnlineFormCase(It.IsAny <VerintOnlineFormRequest>()), Times.Once); Assert.NotNull(crmCaseParameter); Assert.Contains(_droppedKerbRequest.KerbLocation, crmCaseParameter.VerintCase.Description); Assert.Contains(_droppedKerbRequest.KerbLocationOther, crmCaseParameter.VerintCase.Description); Assert.Contains(_droppedKerbRequest.DischargeReference, crmCaseParameter.VerintCase.Description); Assert.Contains(_droppedKerbRequest.PlanningPermission, crmCaseParameter.VerintCase.Description); Assert.Contains(_droppedKerbRequest.AccessFor, crmCaseParameter.VerintCase.Description); Assert.Contains(_droppedKerbRequest.PropertyOwner, crmCaseParameter.VerintCase.Description); Assert.Contains(_droppedKerbRequest.ContactPreference, crmCaseParameter.VerintCase.Description); }
public async Task <VerintOnlineFormResponse> CreateVOFCase(VerintOnlineFormRequest model) { model.VerintCase.CaseReference = await _caseService.Create(model.VerintCase); return(await AttachVOF(model)); }
public async Task <IActionResult> Attach(VerintOnlineFormRequest model) => Ok(await _verintOnlineFormService.AttachVOF(model));
public async Task <IActionResult> Create(VerintOnlineFormRequest model) => Ok(await _verintOnlineFormService.CreateVOFCase(model));
public async Task <HttpResponse <VerintOnlineFormResponse> > AttachVerintOnlineFormToCase(VerintOnlineFormRequest verintOnlineFormRequest) => await PostAsync <VerintOnlineFormResponse>($"{VerintOnlineFormEndpoint}/Attach", verintOnlineFormRequest);
public async Task <HttpResponse <VerintOnlineFormResponse> > CreateVerintOnlineFormCase(VerintOnlineFormRequest verintOnlineFormRequest) => await PostAsync <VerintOnlineFormResponse>($"{VerintOnlineFormEndpoint}", verintOnlineFormRequest);