private void CreateTempOrder(Messages.Order.CreateTempOrderCommand cmd) { int userId = getUserIdFromJwt(cmd.JWT); if (userId == -1) { Sender.Tell(new Messages.Unauthorised()); } using (MyContext context = MyContext.Connect(GetPath())) { Order order = new Order { CreatedAt = DateTime.Now, Status = Status.Created, ProductId = cmd.ProductId, Price = cmd.Price, UserId = userId }; context.Orders.Add(order); context.SaveChanges(); Sender.Tell(new Messages.Order.TempOrderCreateSuccess(order.Id)); } }
public async Task <object> CreateOrder([FromBody] Messages.Order.CreateTempOrderCommand cmd) { ProductResponseSuccess productResponse = (ProductResponseSuccess)await products.GetProductById(cmd.ProductId); decimal price = productResponse.Product.Price; if (productResponse.Product.Stock < 1) { throw new Exception("Invalid request"); } Console.WriteLine("Order/CreateOrder"); var result = await orders.CreateOrder(cmd.ProductId, price, GetJwt()); Console.WriteLine("Order/CreateOrder /result"); if (result is Messages.Order.TempOrderCreateSuccess) { Console.WriteLine("result is Success"); //talk to the tracking service var resultCmd = (Messages.Order.TempOrderCreateSuccess)result; var reserveProductResult = await products.ReserveProduct(cmd.ProductId, resultCmd.OrderId); if (!(reserveProductResult is ProductReservedStatus) || ((ProductReservedStatus)reserveProductResult).Status != true) { //TODO: await orders.ForceRemoveOrder(resultCmd.OrderId); Console.WriteLine("Order/CreateOrder Error Occured"); return(reserveProductResult); } await tracking.CreateTrackingOrder(resultCmd.OrderId, "London", DateTime.Now + new TimeSpan(1, 2, 0, 0), GetJwt()); Console.WriteLine("Order/CreateOrder return resultcmd"); return(resultCmd); } Console.WriteLine("Order/CreateOrder return result"); return(result); }