Esempio n. 1
0
        /// <summary>
        /// Create a payment event
        /// </summary>
        /// <param name="paymentId">Id of Payment</param>
        /// <param name="eventType">Event Type</param>
        /// <param name="notes">Notes</param>
        public void CreatePaymentEvent(int paymentId, PaymentEventTypeEnum eventType, string notes)
        {
            var paymentEvent = new PaymentEvent
            {
                PaymentId = paymentId,
                EventType = new EnumEntity { Code = eventType.GetCode() },
                Notes = notes
            };

            paymentEventDao.Create(paymentEvent);
        }
Esempio n. 2
0
        /// <summary>
        /// Centralises the logic to create payments and events
        /// </summary>
        /// <param name="payment">Payment</param>
        /// <param name="orderEventType">Order event type to create</param>
        /// <param name="paymentEventType">Payment event type to create</param>
        private void CreatePayment(Payment payment, OrderEventTypeEnum orderEventType, PaymentEventTypeEnum paymentEventType, long businessId)
        {
            //input validation
            if (payment.IsValid())
            {
                SetPaymentConvertedValue(payment, businessId);
                using (var tx = new BusinessTransaction())
                {
                    //enforce that the values are positive and negative according to the type of payment we're trying to create
                    if ((payment.Amount > 0 && payment.PaymentTypeEnum == PaymentTypeEnum.Refund) ||
                        (payment.Amount < 0 && payment.PaymentTypeEnum == PaymentTypeEnum.Payment))
                    {
                        payment.Amount *= -1;
                    }

                    //Set Merchant Type if not already done
                    payment.MerchantType = payment.MerchantType ?? paymentDao.GetMerchantType(payment.OrderId);

                    //create payment
                    paymentDao.Create(payment);

                    //create the payment event
                    eventTrackingManager.CreatePaymentEvent(payment.Id, paymentEventType, payment.Notes);

                    //create the order event
                    eventTrackingManager.CreateOrderEvent(payment.OrderId, orderEventType, payment.Id.ToString(),
                                                          payment.Notes);

                    tx.Commit();
                }
            }
        }
Esempio n. 3
0
        /// <summary>
        ///  Get booking payment event by PaymentType
        /// </summary>
        /// <param name="paymentEvents">Collection of PaymentEvents</param>
        /// <param name="paymentEventType">PaymentEventTypeEnum</param>
        /// <returns>PaymentEvent</returns>
        private PaymentEvent GetPaymentEventByType(IEnumerable<PaymentEvent> paymentEvents, PaymentEventTypeEnum paymentEventType)
        {
            Helper.ArgumentNotNull(paymentEvents, "paymentEvents");
            return paymentEvents.ToList().Find(p => p.EventType.Name == paymentEventType.GetCode());

        }