示例#1
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();
                }
            }
        }
示例#2
0
        /// <summary>
        /// Create a order event
        /// </summary>
        /// <param name="orderId">Id of Order</param>
        /// <param name="eventType">Event Type</param>
        /// <param name="reference">Reference</param>
        /// <param name="notes">Notes for event</param>
        public void CreateOrderEvent(int orderId, OrderEventTypeEnum eventType, string reference, string notes)
        {
            var orderEvent = new OrderEvent
            {
                OrderId = orderId,
                Reference = reference,
                EventType = new EnumEntity { Code = eventType.GetCode() },
                Notes = notes
            };

            orderEventDao.Create(orderEvent);
        }