Example #1
0
        public async Task Handle(PaymentProcessedIntegrationEvent eventMsg)
        {
            List <EventBase> events = new List <EventBase>();

            if (eventMsg.Id != Guid.Empty)
            {
                try
                {
                    Track trackings = await _trackingContext.GetEventVersion(eventMsg.BookingOrderId);

                    if (trackings == null)
                    {
                        trackings = new Track();
                    }

                    string description = string.Empty;
                    if (eventMsg.PaymentStatus == PaymetStatus.Completed)
                    {
                        description = "Payment Done";
                    }
                    else if (eventMsg.PaymentStatus == PaymetStatus.Canceled)
                    {
                        description = "Payment Failed";
                    }
                    else if (eventMsg.PaymentStatus == PaymetStatus.Pending)
                    {
                        description = "Payment Pending";
                    }

                    var messageType = _assemblyTypes
                                      .Where(t => t.Name.Contains("PaymentProcessed")).FirstOrDefault().
                                      Name.ToString();

                    PaymentProcessed eventPaymentProcessed = new
                                                             PaymentProcessed(eventMsg.BookingOrderId, description, eventMsg.Id, messageType, eventMsg.CreationDate);


                    events.AddRange(trackings.PaymentProcessed(eventPaymentProcessed));
                    trackings.Version = trackings.OriginalVersion + 1;

                    await _trackingContext.SaveTrackingAsync(eventMsg.BookingOrderId, trackings.OriginalVersion,
                                                             trackings.Version, events);
                }
                catch (Exception e)
                {
                    var ExceptionTelemetry = new ExceptionTelemetry(e);
                    ExceptionTelemetry.Properties.Add("PaymentProcessedIntegrationEvent", eventMsg.BookingOrderId);
                    ExceptionTelemetry.SeverityLevel = SeverityLevel.Critical;

                    telemetry.TrackException(ExceptionTelemetry);

                    throw; //Throw exception for service bus to abandon the message
                }
            }
        }
Example #2
0
        public async Task Handle(OrderTransitIntegrationEvent eventMsg)
        {
            List <EventBase> events = new List <EventBase>();

            if (eventMsg.Id != Guid.Empty)
            {
                try
                {
                    Track trackings = await _trackingContext.GetTrackingAsync(eventMsg.BookingId);

                    if (trackings == null)
                    {
                        trackings = new Track();
                    }

                    var messageType = _assemblyTypes
                                      .Where(t => t.Name.Contains("OrderInTransit")).FirstOrDefault().
                                      Name.ToString();

                    OrderInTransit orderInTransit = new
                                                    OrderInTransit(eventMsg.BookingId, eventMsg.Description, eventMsg.Id
                                                                   , messageType, eventMsg.CreationDate);


                    events.AddRange(trackings.OrderInTransit(orderInTransit));
                    trackings.Version = trackings.OriginalVersion + 1;

                    await _trackingContext.SaveTrackingAsync(eventMsg.BookingId, trackings.OriginalVersion,
                                                             trackings.Version, events);


                    //Publish the event here
                    //Create Integration Event
                    var orderStatusChanged = new OrderStatusChangedIntegrationEvent(eventMsg.BookingId, "OrderInTransit");
                    _eventBus.Publish(orderStatusChanged);
                }
                catch (Exception e)
                {
                    var ExceptionTelemetry = new ExceptionTelemetry(e);
                    ExceptionTelemetry.Properties.Add("OrderTransitIntegrationEvent", eventMsg.BookingId);
                    ExceptionTelemetry.SeverityLevel = SeverityLevel.Critical;

                    telemetry.TrackException(ExceptionTelemetry);

                    throw; //Throw exception for service bus to abandon the message
                }
            }
        }
Example #3
0
        public async Task Handle(BookingAddIntegrationEvent eventMsg)
        {
            List <EventBase> events = new List <EventBase>();

            if (eventMsg.Id != Guid.Empty)
            {
                try
                {
                    Track trackings = await _trackingContext.GetEventVersion(eventMsg.BookingId);

                    if (trackings == null)
                    {
                        trackings = new Track();
                    }

                    var messageType = _assemblyTypes
                                      .Where(t => t.Name.Contains("BookingCreated")).FirstOrDefault().
                                      Name.ToString();

                    BookingCreated bookingCreated = new
                                                    BookingCreated(eventMsg.BookingId, string.Empty, eventMsg.Id
                                                                   , messageType, eventMsg.CreationDate, eventMsg.Origin, eventMsg.Destination);


                    events.AddRange(trackings.BookingAdd(bookingCreated));
                    trackings.Version = trackings.OriginalVersion + 1;

                    await _trackingContext.SaveTrackingAsync(eventMsg.BookingId, trackings.OriginalVersion,
                                                             trackings.Version, events);
                }
                catch (Exception e)
                {
                    var ExceptionTelemetry = new ExceptionTelemetry(e);
                    ExceptionTelemetry.Properties.Add("BookingAddIntegrationEvent", eventMsg.BookingId);
                    ExceptionTelemetry.SeverityLevel = SeverityLevel.Critical;

                    telemetry.TrackException(ExceptionTelemetry);

                    throw;//Make sure event bus abaondon the message
                }
            }
        }