Inheritance: LoggableEventBase
Example #1
0
        public async Task <ActionResult> Create(CreateOrderViewModel model)
        {
            if (ModelState.IsValid)
            {
                var filteredProducts = model.Products.Where(p => p.Amount > 0).ToList();
                var orderEvent       = new CreateOrderEvent
                {
                    UserId   = model.UserId,
                    Products = filteredProducts.Select(p => new CreateOrderEvent.CreateOrderEventProductDto(p.Id, p.Amount)).ToList()
                };

                try
                {
                    await _publishEndpoint.Publish <CreateOrderEvent>(orderEvent);

                    return(RedirectToAction(nameof(Index), new { success = true }));
                }
                catch
                {
                    ModelState.AddModelError(string.Empty, "Error - Create Order Event Publish");
                }
            }

            model.SetUserList(await _orderService.GetUsersAsync());
            model.SetProductList(await _orderService.GetProductsAsync());
            return(View(model));
        }
Example #2
0
        public void Create(Order order)
        {
            var @event = new CreateOrderEvent(order.Id, order);

            _orderContext.Add(order);

            _context.Events.Add(@event);
            _context.Commit();
        }
        private void NewOrder(string id, int price, bool isSale)
        {
            int         cardNumber = Rand.Next(5000, 7000);
            int         numberOfTicketsRequested = CalculateNumberOfTicketsToBuy(); // (2)
            TicketOrder newOrder = new TicketOrder(numberOfTicketsRequested, cardNumber, id, price);

            newOrder.Sent = DateTime.Now;
            Console.WriteLine($"Ticket Agency {id} has ordered {numberOfTicketsRequested} tickets, at {newOrder.Sent}.");
            Program.TicketOrderBuffer.setOneItem(newOrder); // (3) Sends order to buffer
            CreateOrderEvent?.Invoke();                     // Lets Theme park know an order was created
        }
 public async Task CreateOrder(CreateOrderEvent input)
 {
     //随机模拟50%概率回退
     if (RandomHelper.GetRandomBool())
     {
         logger.LogInformation("订单创建成功!");
         await Task.CompletedTask;
     }
     else
     {
         logger.LogWarning("订单创建失败!");
         await RollBack();
     }
 }
Example #5
0
 public async Task ReduceUserBalance(ReduceUserBalanceEvent input)
 {
     //随机模拟50%概率回退
     if (RandomHelper.GetRandomBool())
     {
         var data = new CreateOrderEvent();
         data.OrderNo = input.OrderNo;
         logger.LogInformation($"用户余额扣款成功,订单编号:{input.OrderNo},用户需支付余额:{input.Balance}!");
         await CallNext(data);
     }
     else
     {
         logger.LogWarning("用户余额扣款失败!");
         await RollBack();
     }
 }
Example #6
0
        public void AddOrderEvent()
        {
            var orderEvent = new CreateOrderEvent(this.CustomerId, this.Discount, this.Paid);

            this.AddDomainEvent(orderEvent);
        }