public async Task <CreateActiveDeliveryCommandResult> Handle(CreateActiveDeliveryCommand request, CancellationToken cancellationToken)
        {
            var resultExistance = await _client.GetResponse <BooksExitanceResult>(
                new { BooksIdsWithEans = request.ItemsInfo
                                         .ToDictionary(key => key.BookId, value => value.BookEan) });

            if (!resultExistance.Message.IsAllExists)
            {
                return(new CreateActiveDeliveryCommandResult(false,
                                                             new [] { "Some of requested books not exists or they Ids do not match with corresponding Eans" }));
            }

            var delivery = new ActiveDelivery(request.Name);

            AddDeliveryItems(delivery, request);

            var deliveryResult = _activeDeliveryRepository.Add(delivery);

            if (await _activeDeliveryRepository.UnitOfWork.SaveChangesAsync(cancellationToken) < 1)
            {
                return(new CreateActiveDeliveryCommandResult(false, new [] { "Something went wrong during saving Active Delivery to Db" }));
            }

            var result = _mapper.Map <CommandActiveDeliveryDto>(deliveryResult);

            return(new CreateActiveDeliveryCommandResult(true, result));
        }
        public void RefreshView()
        {
            Menu.Clear();
            Clients.Clear();
            ActiveOrders.Clear();
            CompletedOrders.Clear();
            ActiveDelivery.Clear();
            CompletedDeliveries.Clear();
            foreach (DishDTG dish in restaurantManager.GetMenu())
            {
                Menu.Add(new DishModel(dish));
            }

            foreach (ClientDTG client in restaurantManager.GetAllClients())
            {
                Clients.Add(new ClientModel(client));
            }
            foreach (OrderDTG order in restaurantManager.GetActiveOrders())
            {
                ActiveOrders.Add(new OrderModel(order));
            }
            foreach (OrderDTG order in restaurantManager.GetCompletedOrders())
            {
                CompletedOrders.Add(new OrderModel(order));
            }
            foreach (OrderDTG order in restaurantManager.GetActiveDeliveries())
            {
                ActiveDelivery.Add(new OrderModel(order));
            }
            foreach (OrderDTG order in restaurantManager.GetCompletedDeliveries())
            {
                CompletedDeliveries.Add(new OrderModel(order));
            }
        }
        public void RefreshView()
        {
            Menu.Clear();
            Clients.Clear();
            ActiveOrders.Clear();
            CompletedOrders.Clear();
            ActiveDelivery.Clear();
            CompletedDeliveries.Clear();
            foreach (Dish dish in restaurantManager.GetMenu())
            {
                Menu.Add(dish);
            }

            foreach (Client client in restaurantManager.GetAllClients())
            {
                Clients.Add(client);
            }
            foreach (Order order in restaurantManager.GetActiveOrders())
            {
                ActiveOrders.Add(order);
            }
            foreach (Order order in restaurantManager.GetCompletedOrders())
            {
                CompletedOrders.Add(order);
            }
            foreach (Order order in restaurantManager.GetActiveDeliveries())
            {
                ActiveDelivery.Add(order);
            }
            foreach (Order order in restaurantManager.GetCompletedDeliveries())
            {
                CompletedDeliveries.Add(order);
            }
        }
        public void AddDeliveryItems(ActiveDelivery delivery, CreateActiveDeliveryCommand command)
        {
            if (delivery is null || command is null)
            {
                return;
            }

            foreach (var itemInfo in command.ItemsInfo)
            {
                delivery.AddDeliveryItem(itemInfo.BookId, itemInfo.BookEan, itemInfo.ItemsCount);
            }
        }
        public bool RedeemDelivery(ActiveDelivery activeDelivery, out string error)
        {
            error = string.Empty;
            if (!activeDelivery.IsRedeemOperationAllowed())
            {
                error = "Redeem operation is not allowed";
            }
            if (!string.IsNullOrEmpty(error))
            {
                return(false);
            }

            _context.ActiveDeliveries.Remove(activeDelivery);
            return(true);
        }
 public void Remove(ActiveDelivery activeDelivery)
 {
     _context.ActiveDeliveries.Remove(activeDelivery);
 }
        public ActiveDelivery Add(ActiveDelivery activeDelivery)
        {
            var response = _context.ActiveDeliveries.Add(activeDelivery).Entity;

            return(response);
        }