예제 #1
0
        public Reader()
        {
            var eventWriter = new EventWriter("CounterResults");

            Receive <Shared.Event>(message =>
            {
                Console.WriteLine($"Message received by Reader {Self}");
                string paymentReference;
                switch ((MessageType)message.MessageType)
                {
                case MessageType.ApprovalStatusChanged:
                    paymentReference = JsonConvert.DeserializeObject <PaymentApprovalStatusChangedMessage>(message.Message).PaymentReference;
                    Console.WriteLine($"**ApprovalStatusChanged Event received for payment {paymentReference}");
                    break;

                case MessageType.PaymentStatusChanged:
                    var pscmessage = JsonConvert.DeserializeObject <PaymentStatusChangedMessage>(message.Message);
                    var calculator = new CustomerPaymentCounterCalculator();
                    var result     = calculator.GetPaymentChanges(pscmessage);

                    var eReader1    = new Hackathon.EventStore.Core.EventReader($"evt-{pscmessage.Payment.PaymentReference}");
                    var allMessages = eReader1.ReadAllMessages(pscmessage.Payment.PaymentReference);

                    var counterResult = new CounterResult
                    {
                        CustomerReference = pscmessage.Customer.CustomerReference,
                        PaymentReference  = pscmessage.Payment.PaymentReference,
                        Increment         = result
                    };

                    eventWriter.WriteEvent(counterResult.AsJsonString(), "IncrementCalculated");
                    Console.WriteLine($"**Event received for payment {pscmessage.Payment.PaymentReference}");
                    break;

                case MessageType.CustomerAccountChanged:
                    paymentReference = JsonConvert.DeserializeObject <PaymentCustomerAccountChangedMessage>(message.Message).PaymentReference;
                    Console.WriteLine($"**CustomerAccountChanged Event received for payment {paymentReference}");
                    break;

                case MessageType.WithdrawalChannelChanged:
                    paymentReference = JsonConvert.DeserializeObject <WithdrawalChannelChangedMessage>(message.Message).PaymentReference;
                    Console.WriteLine($"**WithdrawalChannelChanged Event received for payment {paymentReference}");
                    break;

                default:
                    Console.WriteLine("arrrrr");
                    return;
                }
            });
        }
예제 #2
0
        static void Main(string[] args)
        {
            EventStoreLoader.SetupEventStore();
            var eventReader = new EventReader("Payments");
            var eventWriter = new EventWriter("CounterResults");

            eventReader.ConnectToPersistentSubscription("Payments", "Payments_Counter", (_, e) =>
            {
                var data = Encoding.ASCII.GetString(e.Event.Data);
                switch (e.Event.EventType)
                {
                case "PaymentStatusChanged":
                    var pscmessage    = data.ParseJson <PaymentStatusChangedMessage>();
                    var calculator    = new CustomerPaymentCounterCalculator();
                    var result        = calculator.GetPaymentChanges(pscmessage);
                    var eReader1      = new EventReader($"evt-{pscmessage.Payment.PaymentReference}");
                    var allMessages   = eReader1.ReadAllMessages(pscmessage.Payment.PaymentReference);
                    var counterResult = new CounterResult {
                        CustomerReference = pscmessage.Customer.CustomerReference, PaymentReference = pscmessage.Payment.PaymentReference, Increment = result
                    };
                    eventWriter.WriteEvent(counterResult.AsJsonString(), "IncrementCalculated");
                    Console.WriteLine($"**Event received for payment {pscmessage.Payment.PaymentReference}");
                    break;

                case "ApprovalStatusChanged":
                    var asmessage = data.ParseJson <PaymentApprovalStatusChangedMessage>();
                    break;

                case "CustomerAccountChanged":
                    var camessage = data.ParseJson <PaymentCustomerAccountChangedMessage>();
                    break;

                case "WithdrawalChannelChanged":
                    var wcmessage = data.ParseJson <WithdrawalChannelChangedMessage>();
                    break;

                default:
                    Console.WriteLine("Cannot parse event type");
                    return;
                }
            });

            Console.ReadLine();
        }