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)); }
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(); } }
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(); } }
public void AddOrderEvent() { var orderEvent = new CreateOrderEvent(this.CustomerId, this.Discount, this.Paid); this.AddDomainEvent(orderEvent); }