private static void PopulatePaymentSuccessCounters(PaymentStatisticIncrement increment,
                                                           PaymentStatusChangedMessage paymentChangeMsg, string currentStatus)
        {
            var sign = CalculatePaymentStatusIncrementSign(currentStatus);

            increment.SuccessCount   += sign;
            increment.SuccessSum     += sign * paymentChangeMsg.Payment.PaymentAmount;
            increment.SuccessBaseSum += sign * paymentChangeMsg.Payment.BaseAmount;
        }
        public virtual PaymentStatisticIncrement GetPaymentChanges(PaymentStatusChangedMessage paymentChangeMsg)
        {
            var increment = new PaymentStatisticIncrement();

            //skip message processing if current status is intermediate
            if (!IsCurrentStatusFinal(paymentChangeMsg))
            {
                return(increment);
            }

            // Update total count
            PopulatePaymentTotalCounters(increment, paymentChangeMsg);

            var currentStatus = paymentChangeMsg.Status;

            // Here we work with payments in final status ONLY!
            PopulatePaymentSuccessCounters(increment, paymentChangeMsg, currentStatus);

            return(increment);
        }
 private static void PopulatePaymentTotalCounters(PaymentStatisticIncrement increment, PaymentStatusChangedMessage paymentChangeMsg)
 {
     increment.TotalCount++;
     increment.TotalSum     = paymentChangeMsg.Payment.PaymentAmount;
     increment.TotalBaseSum = paymentChangeMsg.Payment.BaseAmount;
 }