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);
            });
        }
Exemple #2
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);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
        }