async Task AddToBasket(int maxCountProduct) { /// Если пользователь не зарегистрирован или товар из локальной корзины if (User.Singleton == null || (oldBasket != null && oldBasket.IsLocalBasket)) { BasketDB basketBD = new BasketDB { ProductID = ProductItem.ProductsID, Article = ProductItem.Article, ProductName = ProductItem.productsDescription.Name, SizeName = selectSize.Value, Image = ProductItem.Image, SizeID = selectSize.Key, Price = ProductItem.Price, Quantity = int.Parse(entCount.Text), ProductExpress = ProductItem.Express, IsSchedule = ProductItem.SchedulesList.Count > 0 }; /// Если мы изменяем размер товара в корзине if (oldBasket != null) { if (oldBasket.SizeValueId != selectSize.Key || oldBasket.Quantity != basketBD.Quantity) { /// Не дает добавить товаров больше чем они есть на складе if (basketBD.Quantity > maxCountProduct) { basketBD.Quantity = maxCountProduct; } BasketDB.Update(basketBD, oldBasket.ProductID, oldBasket.SizeValueId ?? 0); } OnePage.redirectApp.BackToHistory(); return; } else { BasketDB basketProfile; if (basketBD.SizeID == 0) { basketProfile = BasketDB.GetItemByID(basketBD.ProductID); } else { basketProfile = BasketDB.GetItem(basketBD.ProductID, basketBD.SizeID); } if (basketProfile != null) { /// Не дает добавить товаров больше чем они есть на складе if (basketBD.Quantity + basketProfile.Quantity > maxCountProduct) { basketBD.Quantity = maxCountProduct - basketProfile.Quantity; } } BasketDB.AddCount(basketBD); } } else /// Если залогинен { Basket basket = new Basket { ProductID = ProductItem.ProductsID, SizeValueId = selectSize.Key, Quantity = int.Parse(entCount.Text) }; /// Если мы изменяем размер товара в корзине if (oldBasket != null) { if (oldBasket.SizeValueId != selectSize.Key || oldBasket.Quantity != basket.Quantity) { /// Удаляем позицию товара из заказа oldBasket.Quantity = -oldBasket.Quantity; try { await Basket.PushToBasketAsync(oldBasket); } catch (Exception) { eventRefresh = null; eventRefresh += (obj, evn) => { Button content = obj as Button; content.IsEnabled = false; AddToBasket(maxCountProduct).Wait(); }; Content = OnePage.mainPage.ShowMessageError(eventRefresh); return; } /// Не дает добавить товаров больше чем они есть на складе if (basket.Quantity > maxCountProduct) { basket.Quantity = maxCountProduct; } try { await Basket.PushToBasketAsync(basket); } catch (Exception) { eventRefresh = null; eventRefresh += (obj, evn) => { Button content = obj as Button; content.IsEnabled = false; AddToBasket(maxCountProduct).Wait(); }; Content = OnePage.mainPage.ShowMessageError(eventRefresh); return; } } OnePage.redirectApp.BackToHistory(); return; } else /// Если перешли в товар НЕ из корзины { List <Basket> basketProfileList; try { basketProfileList = await Basket.GetProductInBasketAsync(); } catch (Exception) { eventRefresh = null; eventRefresh += (obj, evn) => { Button content = obj as Button; content.IsEnabled = false; AddToBasket(maxCountProduct).Wait(); }; Content = OnePage.mainPage.ShowMessageError(eventRefresh); return; } Basket basketProfile; if (basket.SizeValueId != null) { basketProfile = basketProfileList.SingleOrDefault(g => g.ProductID == basket.ProductID && g.SizeValueId == basket.SizeValueId); } else { basketProfile = basketProfileList.SingleOrDefault(g => g.ProductID == basket.ProductID); } if (basketProfile != null) { /// Не дает добавить товаров больше чем они есть на складе if (basket.Quantity + basketProfile.Quantity > maxCountProduct) { basket.Quantity = maxCountProduct - basketProfile.Quantity; } } try { await Basket.PushToBasketAsync(basket); } catch (Exception) { eventRefresh = null; eventRefresh += (obj, evn) => { Button content = obj as Button; content.IsEnabled = false; AddToBasket(maxCountProduct).Wait(); }; Content = OnePage.mainPage.ShowMessageError(eventRefresh); return; } } } }
public void ShowProduct(Product product) { oldBasket = null; Show(product); }