public string createJson(string orderId, string sellerId) { var obj = new OrderReturned(); obj.OrderId = orderId; obj.SellerId = sellerId; return(JsonSerializer.Serialize(obj)); }
public async void ProcessEvent() { OrderReturned orderReturned = JsonSerializer.Deserialize <OrderReturned>(JsonString); var db = mongo.GetDatabase("SellersDatabase"); var collection = db.GetCollection <Object>("SellersOrders"); var findSellerFilter = Builders <Object> .Filter.Eq("SellerId", orderReturned.SellerId); var sellerDocument = (Seller)collection.Find <Object>(findSellerFilter).FirstOrDefault(); if (sellerDocument == null) { Seller seller = new Seller(); seller.SellerId = orderReturned.SellerId; collection.InsertOne(seller); sellerDocument = (Seller)collection.Find <Object>(findSellerFilter).FirstOrDefault(); } try { var findOrderFilter = Builders <Object> .Filter.Eq("OrderId", orderReturned.OrderId); var orderDocument = (Order)collection.Find <Object>(findOrderFilter).FirstOrDefault(); if (orderDocument == null) { try { // adding a new order Order order = new Order(); order.OrderId = orderReturned.OrderId; order.isReturned = true; order.SellerId = sellerDocument.Id.ToString(); // insert collection.InsertOne(order); } catch (Exception e) { Console.WriteLine(e.Message); } } else { // update information in the order var updmanyresult = collection.UpdateMany( Builders <Object> .Filter.Eq("OrderId", orderReturned.OrderId), Builders <Object> .Update .Set("isReturned", true)); } } catch (Exception e) { Console.WriteLine(e.Message); } }
private void Handle(OrderReturned @event) { IsComplete = true; }
public static void ProduceEvents() { List <int> eventorder; eventorder = new List <int>(); eventorder.Add(1); //Order Created eventorder.Add(2); //Order Shipped eventorder.Add(3); //Order Delivered eventorder.Add(4); //Order Cancelled eventorder.Add(5); //Order Returned var conf = new ProducerConfig { BootstrapServers = "localhost:9092" }; Action <DeliveryReport <Null, string> > handler = r => Console.WriteLine(r.Error.IsError ? $"Delivery Error: {r.Error.Reason}" : $"Delivered message to {r.TopicPartitionOffset}"); using (var p = new ProducerBuilder <Null, string>(conf).Build()) { var random = new Random(); while (true) { string sellerId = Guid.NewGuid().ToString(); //seller can repeat //userId is randomly generated //The events should also be generated in random order //shuffle the list //7 orders per seller for (int i = 0; i < 7; ++i) { eventorder = eventorder.OrderBy(x => Guid.NewGuid()).ToList(); var orderId = Guid.NewGuid().ToString(); foreach (var num in eventorder) { var message = ""; switch (num) { case 1: //Order Created var orderCreated = new OrderCreated(); message = orderCreated.CreateJson(orderId, sellerId); Console.WriteLine("order-created " + message); p.Produce("order-created", new Message <Null, string> { Value = message }, handler); break; case 2: //Order Shipped var orderShipped = new OrderShipped(); message = orderShipped.createJson(orderId, sellerId); Console.WriteLine("order-shipped " + message); p.Produce("order-shipped", new Message <Null, string> { Value = message }, handler); break; case 3: //Order Delivered var orderDelivered = new OrderDelivered(); message = orderDelivered.CreateJson(orderId, sellerId); Console.WriteLine("order-delivered " + message); p.Produce("order-delivered", new Message <Null, string> { Value = message }, handler); break; case 4: //Order Cancelled var orderCancelled = new OrderCancelled(); message = orderCancelled.createJson(orderId, sellerId, "customer", "The reason for cancellation"); Console.WriteLine("order-cancelled " + message); p.Produce("order-cancelled", new Message <Null, string> { Value = message }, handler); break; case 5: //Order Returned var orderReturned = new OrderReturned(); message = orderReturned.createJson(orderId, sellerId); Console.WriteLine("order-returned " + message); p.Produce("order-returned", new Message <Null, string> { Value = message }, handler); break; } Thread.Sleep(1000); } Thread.Sleep(1000); } } } }