Beispiel #1
0
    public string createJson(string orderId, string sellerId)
    {
        var obj = new OrderReturned();

        obj.OrderId  = orderId;
        obj.SellerId = sellerId;
        return(JsonSerializer.Serialize(obj));
    }
Beispiel #2
0
        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);
            }
        }
Beispiel #3
0
 private void Handle(OrderReturned @event)
 {
     IsComplete = true;
 }
Beispiel #4
0
        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);
                    }
                }
            }
        }