public async Task SavePaymentStatistics(PaymentExternalModel statisticsModel, PaymentsRdsModel rdsModel) { await WithConnection(async c => { using (var transaction = c.BeginTransaction()) { try { await SaveStatistic(c, transaction, nameof(statisticsModel.ProviderTotalPayments), statisticsModel.ProviderTotalPayments, rdsModel.ProviderTotalPayments); await SaveStatistic(c, transaction, nameof(statisticsModel.ProviderTotalPaymentsWithRequestedPayment), statisticsModel.ProviderTotalPaymentsWithRequestedPayment, rdsModel.ProviderTotalPayments); transaction.Commit(); } catch (SqlException) { transaction.Rollback(); throw; } } return(0); }); }
public async Task <PaymentExternalModel> Handle() { _logger.Debug("Contacting the payment statistics End point"); var response = await _paymentsEventsApi.GetPaymentStatistics(); _logger.Debug("Result recieved, creating model"); var model = new PaymentExternalModel() { ProviderTotalPayments = response.TotalNumberOfPayments, ProviderTotalPaymentsWithRequestedPayment = response.TotalNumberOfPaymentsWithRequiredPayment }; _logger.Debug("Model created, now returning model"); return(model); }
private async Task <PaymentExternalModel> RetrievePaymentsStatisticsFromTheApi() { _log.Debug("Gathering statistics for the payments area of the system"); PaymentExternalModel statistics = null; try { statistics = await _paymentStatisticsHandler.Handle(); } catch (HttpRequestException httpRequestException) { _log.Error(httpRequestException, "Failed to retrieve payment stats from the API"); } return(statistics); }
public async Task ThenSavePaymentsStatistics() { await SetupDatabase(); var paymentsExternalModel = new PaymentExternalModel() { ProviderTotalPayments = 1 }; PaymentsStatisticsHandlerMock.Setup(x => x.Handle()).Returns(Task.FromResult(paymentsExternalModel)); await DAS.Data.Functions.Statistics.GetPaymentsStatisticsFunction.Run(null, Log, StatisticsService); var databaseAsExpected = TestHelper.ConditionMet(IsDatabaseInExpectedState, TimeSpan.FromSeconds(60)); Assert.IsTrue(databaseAsExpected); }