Exemple #1
0
        public async Task <IEnumerable <Item> > GetItemsAsync()
        {
            if (items == null)
            {
                var result = await itemStorage.GetItemsAsync();

                if (!result.IsFaulted)
                {
                    items = result.Value.Where(i => i.Balance > 0);
                }
                else
                {
                    throw result.Exception;
                }
            }
            return(items);
        }
        private async Task <bool> CheckItemsBalance()
        {
            IsBusy = true;
            try
            {
                var result = await itemStorage.GetItemsAsync();

                var notExists = new List <ObjectId>();
                if (!result.IsFaulted)
                {
                    foreach (var cartItemKey in cartService.GetItems().Keys)
                    {
                        var item = result.Value.FirstOrDefault(i => i.Id == cartItemKey.Id);
                        if (item == null || item.Balance < cartService.GetItems()[cartItemKey])
                        {
                            notExists.Add(cartItemKey.Id);
                        }
                    }
                    if (notExists.Count > 0)
                    {
                        foreach (var id in notExists)
                        {
                            cartService.RemoveById(id);
                        }
                        await itemService.UpdateItemsAsync();

                        view.ShowMessage("Внимание", "Некоторые выбранные блюда более недоступны для заказа, они были удалены из заказа, проверьте содержимое корзины и выберите замену.");
                        return(false);
                    }
                    else
                    {
                        return(true);
                    }
                }
                else
                {
                    view.ShowMessage("Ошибка", result.Exception.Message);
                    return(false);
                }
            }
            finally
            {
                IsBusy = false;
            }
        }