/// <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); }
/// <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(); } } }
/// <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()); }