public async Task <int> AddPendingUnpaidResponseAsync(UnpaidResponseInput unpaidResponseInput, int unpaidRequestId, CancellationToken cancellationToken) { if (unpaidResponseInput == null) { _logger.LogError((int)LoggingEvents.ValidationFailed, "UnpaidResponseManager.AddPendingUnpaidResponseAsync - unpaidResponseInput is null"); return(0); } var unpaidResponse = new List <TbUnpaidResponse> { new TbUnpaidResponse { UnpaidRequestId = unpaidRequestId, ResponseId = (int)unpaidResponseInput.ContactOption, Accepted = unpaidResponseInput.Accepted, StatusId = (int)Status.Pending } }; return(await _unpaidResponseStorageOperations.AddUnpaidResponseAsync(unpaidResponse, cancellationToken)); }
public async Task <TbUnpaidRequest> GetUnpaidRequestByIdAsync(UnpaidResponseInput unpaidResponseInput, CancellationToken cancellationToken) { if (unpaidResponseInput == null) { _logger.LogWarning((int)LoggingEvents.ValidationFailed, "UnpaidRequestManager.GetUnpaidRequestByIdAsync - unpaidResponseInput is null"); return(null); } if (string.IsNullOrWhiteSpace(unpaidResponseInput.PolicyNumber)) { _logger.LogWarning((int)LoggingEvents.ValidationFailed, "UnpaidRequestManager.GetUnpaidRequestByIdAsync - PolicyNumber is null or empty"); return(null); } if (string.IsNullOrWhiteSpace(unpaidResponseInput.IdNumber)) { _logger.LogWarning((int)LoggingEvents.ValidationFailed, "UnpaidRequestManager.GetUnpaidRequestByIdAsync - IdNumber is null or empty"); return(null); } if (string.IsNullOrWhiteSpace(unpaidResponseInput.CorrelationId)) { _logger.LogError((int)LoggingEvents.ValidationFailed, "UnpaidRequestManager.GetUnpaidRequestByIdAsync - CorrelationId is null or empty"); return(null); } var correlationIdSplit = unpaidResponseInput.CorrelationId.Split("_"); if (correlationIdSplit.Length < 2) { _logger.LogError((int)LoggingEvents.ValidationFailed, "UnpaidRequestManager.GetUnpaidRequestByIdAsync - CorrelationId is not in the correct format"); return(null); } return(await _unpaidRequestOperations.GetSingleUnpaidRequestAsync(unpaidResponseInput.IdNumber, Convert.ToInt32(correlationIdSplit[1]), Status.Success, cancellationToken)); }
public async Task HandleUnpaidResponseAsync_GIVEN_Valid_Input_BatchUnpaidResponseInput_ErrorGetLatestSuccessfulUnpaidRequestAsync_RETURNS_Valid_UnpaidResponseOutput() { // Arrange. var unpaidClient = Substitute.For <IUnpaidClient>(); var unpaidRequestClient = Substitute.For <IUnpaidRequestClient>(); var notification = Substitute.For <INotification>(); var unpaidResponseClient = Substitute.For <IUnpaidResponseClient>(); var input1 = new UnpaidResponseInput { PolicyNumber = "P1Test", IdNumber = "9009165023080", Accepted = true, ContactOption = ContactOption.CallMe }; var input2 = new UnpaidResponseInput { PolicyNumber = "P2Test", IdNumber = "9009165023081", Accepted = false, ContactOption = ContactOption.EmailMe }; var input3 = new UnpaidResponseInput { PolicyNumber = "P3Test", IdNumber = "9009165023082", Accepted = true, ContactOption = ContactOption.CallMe }; unpaidRequestClient.GetUnpaidRequestByIdAsync(input1, CancellationToken.None).Returns(Task.FromResult(new TbUnpaidRequest { UnpaidRequestId = 10, UnpaidId = 2, NotificationId = 1, StatusId = 2, StatusAdditionalInfo = null })); unpaidRequestClient.GetUnpaidRequestByIdAsync(input2, CancellationToken.None).Returns(Task.FromResult <TbUnpaidRequest>(null)); unpaidRequestClient.GetUnpaidRequestByIdAsync(input3, CancellationToken.None).Returns(Task.FromResult(new TbUnpaidRequest { UnpaidRequestId = 12, UnpaidId = 5, NotificationId = 1, StatusId = 2, StatusAdditionalInfo = null })); unpaidResponseClient.AddPendingUnpaidResponseAsync(Arg.Any <UnpaidResponseInput>(), 10, CancellationToken.None).Returns(Task.FromResult(1)); unpaidResponseClient.AddPendingUnpaidResponseAsync(Arg.Any <UnpaidResponseInput>(), 11, CancellationToken.None).Returns(Task.FromResult(1)); unpaidResponseClient.AddPendingUnpaidResponseAsync(Arg.Any <UnpaidResponseInput>(), 12, CancellationToken.None).Returns(Task.FromResult(1)); var unpaidResponseInputList = new List <UnpaidResponseInput> { input1, input2, input3 }; var unpaidNotificationClient = Substitute.For <IUnpaidNotificationApiClient>(); var unpaidBatchClient = Substitute.For <IUnpaidBatchClient>(); var logger = Substitute.For <ILogger <UnpaidEngine> >(); var unpaidEngine = new UnpaidEngine(unpaidClient, unpaidRequestClient, notification, unpaidResponseClient, unpaidNotificationClient, unpaidBatchClient, logger); // Act. var actual = await unpaidEngine.HandleUnpaidResponseAsync(unpaidResponseInputList, CancellationToken.None); // Assert. Assert.IsNotNull(actual); var unpaidResponseOutputs = actual.ToList(); Assert.AreEqual(3, unpaidResponseOutputs.Count); Assert.AreEqual("P1Test", unpaidResponseOutputs[0].PolicyNumber); Assert.AreEqual("9009165023080", unpaidResponseOutputs[0].IdNumber); Assert.AreEqual(true, unpaidResponseOutputs[0].Accepted); Assert.AreEqual(ContactOption.CallMe, unpaidResponseOutputs[0].ContactOption); Assert.AreEqual(HttpStatusCode.Accepted, unpaidResponseOutputs[0].HttpStatusCode); Assert.AreEqual(string.Empty, unpaidResponseOutputs[0].ErrorMessage); Assert.AreEqual("P2Test", unpaidResponseOutputs[1].PolicyNumber); Assert.AreEqual("9009165023081", unpaidResponseOutputs[1].IdNumber); Assert.AreEqual(false, unpaidResponseOutputs[1].Accepted); Assert.AreEqual(ContactOption.EmailMe, unpaidResponseOutputs[1].ContactOption); Assert.AreEqual(HttpStatusCode.NotFound, unpaidResponseOutputs[1].HttpStatusCode); Assert.AreEqual("Notification not found.", unpaidResponseOutputs[1].ErrorMessage); Assert.AreEqual("P3Test", unpaidResponseOutputs[2].PolicyNumber); Assert.AreEqual("9009165023082", unpaidResponseOutputs[2].IdNumber); Assert.AreEqual(true, unpaidResponseOutputs[2].Accepted); Assert.AreEqual(ContactOption.CallMe, unpaidResponseOutputs[2].ContactOption); Assert.AreEqual(HttpStatusCode.Accepted, unpaidResponseOutputs[2].HttpStatusCode); Assert.AreEqual(string.Empty, unpaidResponseOutputs[2].ErrorMessage); }