Пример #1
0
        private async void SaveSelectedProducts()
        {
            IsExporting      = true;
            _ctsSaveProducts = new CancellationTokenSource();

            var products = SelectedProducts.ToList();

            try
            {
                var task = Export.SaveCollection(products, _ctsSaveProducts.Token);
                CriticalTasks.Add(task);
                await task.ConfigureAwait(false);
            }
            catch (TaskCanceledException)
            {
            }
            catch (System.Exception e)
            {
                _logger.Error(e);
                await MessageBox.ShowAsync("Произошла ошибка во время экспорта.", "Ошибка", MessageBoxButton.OK,
                                           MessageBoxImage.Error).ConfigureAwait(false);
            }
            CriticalTasks.Cleanup();

            IsExporting = false;
        }
Пример #2
0
        private async Task RefreshProductsAsync(IEnumerable <ProductVM> coll, CancellationTokenSource cts)
        {
            var  skApi           = new SkladchikApiClient(cts.Token);
            bool isNeedGetCookie = await Cookies.IsNeedGetCookie().ConfigureAwait(false);

            if (isNeedGetCookie)
            {
                var cookieContainer = Cookies.GetSkladchikCookie();
                skApi.CookieContainer = cookieContainer;
                if (cookieContainer.Count == 0)
                {
                    await MessageBox.ShowAsync("Обновление складчин невозможно. Загрузите сайт в браузере и начните обновление заново.", "Ошибка",
                                               MessageBoxButton.OK, MessageBoxImage.Error).ConfigureAwait(false);

                    cts.Cancel();
                    return;
                }
            }

            foreach (var productVm in coll)
            {
                cts.Token.ThrowIfCancellationRequested();
                var updatedProduct = await skApi.Products.GetByIdAsync(productVm.Model.Id)
                                     .ConfigureAwait(false);

                bool productWasDeleted = updatedProduct == null;
                if (productWasDeleted)
                {
                    await Db.Products.RemoveAsync(productVm.Model).ConfigureAwait(false);
                }
                else
                {
                    var oldProduct = productVm.Model;
                    updatedProduct.Color     = oldProduct.Color;
                    updatedProduct.Note      = oldProduct.Note;
                    updatedProduct.ViewCount = oldProduct.ViewCount;
                    productVm.Model          = updatedProduct;
                }
            }

            await Db.Products.AddOrUpdateAsync(coll.Select(p => p.Model).ToList()).ConfigureAwait(false);
        }
Пример #3
0
        private async Task <bool> IsCookiesExistsAsync()
        {
            bool isNeedGetCookie = await Cookies.IsNeedGetCookie().ConfigureAwait(false);

            if (isNeedGetCookie)
            {
                var cookieContainer = Cookies.GetSkladchikCookie();
                _skApi.CookieContainer = cookieContainer;

                if (cookieContainer.Count == 0)
                {
                    await MessageBox.ShowAsync("Поиск невозможен. Загрузите сайт в браузере и начните поиск заново.",
                                               "Ошибка",
                                               MessageBoxButton.OK, MessageBoxImage.Error).ConfigureAwait(false);

                    return(false);
                }
            }

            return(true);
        }
Пример #4
0
        private async void OpenProduct()
        {
            var products = SelectedProducts.ToList();

            if (products.Count > 10)
            {
                var result = await MessageBox.ShowAsync(
                    $"Вы собираетесь открыть {products.Count} складчин в браузере. Это может сильно замедлить его работу. \r\n Хотите продолжить?",
                    "", MessageBoxButton.YesNo, MessageBoxImage.Warning).ConfigureAwait(false);

                if (result != MessageBoxResult.Yes)
                {
                    return;
                }
            }

            foreach (ProductVM p in products)
            {
                string link = Products.GetProductLink(p.Model);
                Process.Start(link);
            }
        }
Пример #5
0
        private async Task <bool?> IsNeedClearLastResultAsync()
        {
            if (Products.Count > 0)
            {
                var mbResult = await MessageBox.ShowAsync("Очистить предыдущие результаты?", "Внимание",
                                                          MessageBoxButton.YesNoCancel, MessageBoxImage.Information).ConfigureAwait(false);

                switch (mbResult)
                {
                case MessageBoxResult.Yes:
                    return(true);

                case MessageBoxResult.Cancel:
                case MessageBoxResult.None:
                    return(null);

                default:
                    return(false);
                }
            }
            return(false);
        }