public async Task <OrderItemVM> CreateNewOrderItem(CreateOrderItemVM vm) { var orderUser = _db.OrderUsers.GetAll().FirstOrDefault(m => m.UserProfileId == vm.UserProfileId && m.Order.IsActive); if (vm.OrderId == 0 && orderUser?.Order.Id != null) { vm.OrderId = orderUser.Order.Id; } var orderItem = orderUser?.Order.OrderItems.FirstOrDefault(m => m.MenuItemId == vm.MenuItemId && m.UserId == vm.UserProfileId); if (orderItem != null) { vm.Count = orderItem.Count + 1; vm.Id = orderItem.Id; return(await UpdateNewOrderItem(vm)); } var dbItem = new OrderItem { OrderId = vm.OrderId, Count = vm.Count, MenuItemId = vm.MenuItemId, PricePerItem = vm.PricePerItem, Status = vm.Status, Title = vm.Title, UserId = vm.UserProfileId }; var newItem = await _db.OrderItems.CreateAsync(dbItem); var order = _db.Orders.GetAll().FirstOrDefault(m => m.Id == vm.OrderId); return(new OrderItemVM(newItem, order.Location.Currency)); }
public async Task UpdateOrderItem(CreateOrderItemVM vm) { try { var item = await _orderService.UpdateNewOrderItem(vm); var orderers = connects.Where(m => m.OrderIds.Contains(item.OrderId)).Select(m => m.ConnectionId).ToList(); await Clients.Clients(orderers).SendAsync("UpdateOrderItem", item); } catch (Exception e) { throw e; } }
public async Task <OrderItemVM> UpdateNewOrderItem(CreateOrderItemVM vm) { var dbItem = await _db.OrderItems.GetByIdAsync(vm.Id); dbItem.Count = vm.Count; dbItem.Status = vm.Status; var newItem = await _db.OrderItems.UpdateAsync(dbItem); var order = _db.Orders.GetAll().FirstOrDefault(m => m.Id == dbItem.OrderId); if (order != null) { var ret = new OrderItemVM(newItem, order.Location.Currency); return(ret); } throw new Exception("order not found"); }