public async Task AddPickupItemAsyncWhenPickupItemIsNull()
        {
            await this.PopulateDB();

            this.DbContext.PickupItems.Add(new PickupItem()
            {
                ClientName  = "first1 last1",
                OrderId     = "order2",
                Name        = "test1",
                TableNumber = 2,
            });

            await this.DbContext.SaveChangesAsync();

            var orderDish = this.DbContext.OrderDrinks.FirstOrDefault();

            var model = new CookFinishItemViewModel()
            {
                DishType = FoodType.Drink,
                OrderId  = orderDish.OrderId,
                FoodId   = orderDish.DrinkId,
            };
            var oldPickupItem = this.OrderDishService.GetOrderDishAsPickupItem(model.FoodId, model.OrderId);

            var actual = await this.PickupItemService.AddPickupItemAsync(model);

            var expected = this.DbContext.PickupItems
                           .FirstOrDefault(x => x.TableNumber == oldPickupItem.TableNumber &&
                                           x.OrderId == oldPickupItem.OrderId &&
                                           x.ClientName == oldPickupItem.ClientName &&
                                           x.Name == oldPickupItem.Name);

            actual.ShouldDeepEqual(expected.Id);
        }
Beispiel #2
0
        public async Task AddPickupItem(CookFinishItemViewModel foodItem)
        {
            foodItem.DishType = (FoodType)Enum.Parse(typeof(FoodType), foodItem.FoodType);
            var pickUpItemId = await this.pickupItemService.AddPickupItemAsync(foodItem);

            var item = this.pickupItemService.GetPickupItemById(pickUpItemId);

            await this.Clients.User(item.WaiterId).SendAsync(
                "NewPickup",
                new { Id = item.Id, Count = item.Count, Name = item.Name, TableNumber = item.TableNumber, ClientName = item.ClientName }
                );

            var cookedPerCent = this.orderService.GetOrderDeliveredPerCent(item.OrderId);

            if (cookedPerCent == 100)
            {
                await this.orderService.ChangeOrderStatusAsync(ProcessType.Cooking, ProcessType.Cooked, item.OrderId);

                var waiterId = this.orderService.GetWaiterId(item.OrderId);
                await this.Clients.User(waiterId).SendAsync(
                    "UpdateTableStatus",
                    new
                {
                    ProcessType = Enum.GetName(typeof(ProcessType), ProcessType.Cooked),
                    Id          = item.OrderId,
                });
            }


            await this.Clients.User(item.WaiterId).SendAsync(
                "NewOrderCookedPercent",
                new { OrderId = item.OrderId, CookedPercent = cookedPerCent }
                );

            var user = await this.userManager.GetUserAsync(this.Context.User);

            var chefIds = (await this.userManager.GetUsersInRoleAsync(GlobalConstants.ChefRoleName)).Where(x => x.Id != user.Id).Select(x => x.Id).ToArray();

            await this.Clients.Users(chefIds).SendAsync(
                "RemoveFoodToPrepare",
                new
            {
                OrderId = foodItem.OrderId,
                FoodId  = foodItem.FoodId,
            });
        }
Beispiel #3
0
        public async Task <string> AddPickupItemAsync(CookFinishItemViewModel viewModel)
        {
            var oldPickupItem = new PickupItem();

            if (viewModel.DishType == FoodType.Dish)
            {
                await this.orderDishService.AddDeliveredCountToOrderDishAsync(viewModel.OrderId, viewModel.FoodId, 1);

                oldPickupItem = this.orderDishService.GetOrderDishAsPickupItem(viewModel.FoodId, viewModel.OrderId);
            }
            else if (viewModel.DishType == FoodType.Drink)
            {
                await this.orderDrinkService.AddDeliveredCountToOrderDrinkAsync(viewModel.OrderId, viewModel.FoodId, 1);

                oldPickupItem = this.orderDrinkService.GetOrderDrinkAsPickupItem(viewModel.FoodId, viewModel.OrderId);
            }

            var pickupItem = this.pickupItemRepository
                             .All()
                             .FirstOrDefault(x => x.TableNumber == oldPickupItem.TableNumber &&
                                             x.OrderId == oldPickupItem.OrderId &&
                                             x.ClientName == oldPickupItem.ClientName &&
                                             x.Name == oldPickupItem.Name);

            if (pickupItem != null)
            {
                pickupItem.Count++;
                this.pickupItemRepository.Update(pickupItem);
                await this.pickupItemRepository.SaveChangesAsync();

                return(pickupItem.Id);
            }

            pickupItem = oldPickupItem;

            await this.pickupItemRepository.AddAsync(pickupItem);

            await this.pickupItemRepository.SaveChangesAsync();

            return(pickupItem.Id);
        }
        public async Task AddPickupItemAsyncWithDishWorksCorrectly()
        {
            await this.PopulateDB();

            var orderDish = this.DbContext.OrderDishes.FirstOrDefault();

            var model = new CookFinishItemViewModel()
            {
                DishType = FoodType.Dish,
                OrderId  = orderDish.OrderId,
                FoodId   = orderDish.DishId,
            };
            var oldPickupItem = this.OrderDishService.GetOrderDishAsPickupItem(model.FoodId, model.OrderId);

            var actual = await this.PickupItemService.AddPickupItemAsync(model);

            var expected = this.DbContext.PickupItems
                           .FirstOrDefault(x => x.TableNumber == oldPickupItem.TableNumber &&
                                           x.OrderId == oldPickupItem.OrderId &&
                                           x.ClientName == oldPickupItem.ClientName &&
                                           x.Name == oldPickupItem.Name);

            actual.ShouldDeepEqual(expected.Id);
        }
 public async Task <ActionResult <bool> > FinishOne(CookFinishItemViewModel foodItem)
 {
     foodItem.DishType = (FoodType)Enum.Parse(typeof(FoodType), foodItem.FoodType);
     return(await this.pickupItemService.AddPickupItemAsync(foodItem) != null);
 }