Ejemplo n.º 1
0
        protected override async Task <HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
        {
            counter.Inc();
            var sw = System.Diagnostics.Stopwatch.StartNew();

            //Step 1: Authentication
            if (!processPaymentData.ValidateAuthentication(request, out HttpStatusCode sCode, out string eMessage))
            {
                return new HttpResponseMessage(sCode)
                       {
                           Content = new StringContent(eMessage)
                       }
            }
            ;

            //Step 2: Content Type Validation
            if (!processPaymentData.ValidateContentType(request, out HttpStatusCode statusCode, out string errorMessage))
            {
                return new HttpResponseMessage(statusCode)
                       {
                           Content = new StringContent(errorMessage)
                       }
            }
            ;

            //Step 3: Data Validation
            if (!processPaymentData.ValidatePaymentData(request, out HttpStatusCode responseCode, out string errMessage, out PaymentData paymentData))
            {
                return new HttpResponseMessage(responseCode)
                       {
                           Content = new StringContent(errMessage)
                       }
            }
            ;

            //Step 4: Manage Response Message
            var response = await base.SendAsync(request, cancellationToken);

            HttpResponseMessage responseMsg = dataService.SaveProcessData(paymentData, response.IsSuccessStatusCode ? response.Content.ReadAsAsync <string[]>().Result : null);

            sw.Stop();
            applicationMetrics.CreateHistogram().Observe(sw.Elapsed.TotalSeconds);

            logger.Info("Payment process completed at " + DateTime.Now);
            return(responseMsg);
        }
    }
}
        public IActionResult PaymentHistory([FromQuery] ResourceParameters resourceParameters)
        {
            try
            {
                counter.Inc();
                var sw = System.Diagnostics.Stopwatch.StartNew();

                var payHistory = paymentRepository.GetPaymentHistory(resourceParameters, out string errorMessage);

                var previousPageLink = payHistory.HasPrevious ?
                                       CreatePaymentHistoryResourceUri(resourceParameters, ResourceUriType.PreviousPage) : null;

                var nextPageLink = payHistory.HasNext ?
                                   CreatePaymentHistoryResourceUri(resourceParameters, ResourceUriType.NextPage) : null;

                var paginationData = new
                {
                    totalCount  = payHistory.TotalCount,
                    pageSize    = payHistory.PageSize,
                    currentPage = payHistory.CurrentPage,
                    totalPages  = payHistory.TotalPages,
                    previousPageLink,
                    nextPageLink
                };

                Response.Headers.Add("X-Pagination", System.Text.Json.JsonSerializer.Serialize(paginationData));

                sw.Stop();
                applicationMetrics.CreateHistogram().Observe(sw.Elapsed.TotalSeconds);

                if (errorMessage.Trim() == string.Empty)
                {
                    return(Ok(mapper.Map <List <PaymentHistory> >(payHistory)));
                }

                logger.Error(errorMessage.Trim());
            }
            catch (Exception ex)
            {
                logger.Error(ex.ToString());
            }

            return(BadRequest());
        }