private List <WebSearchResult> SearchOnPage(int pageNumber, Layout layout)
        {
            AvitoPage page = new AvitoPage(_settings, new AvitoPageRequest(_settings, pageNumber, layout.SearchText));
            List <WebSearchResult> results = new List <WebSearchResult>();
            Filter filter = new Filter();

            string[] titleContains = layout.SearchText.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
            for (int i = 0; i < titleContains.Length; i++)
            {
                titleContains[i] = new LowerText(new TrimText(titleContains[i]));
            }
            filter.TitleContains = titleContains;
            string[] titleDoesNotContain = layout.SearchTextExclude.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
            for (int i = 0; i < titleDoesNotContain.Length; i++)
            {
                titleDoesNotContain[i] = new LowerText(new TrimText(titleDoesNotContain[i]));
            }
            filter.TitleDoesNotContain = titleDoesNotContain;
            filter.MinPrice            = layout.MinPrice;
            filter.MaxPrice            = layout.MaxPrice < 1 ? int.MaxValue : layout.MaxPrice;
            filter.DatesAfter          = layout.DatesAfter;
            var webSearchResults = page.GetResults(filter);

            foreach (var result in webSearchResults)
            {
                if (result.ImageUrl != null)
                {
                    var image = ImageUtil.GetImage(result.ImageUrl).GetThumbnailImage(100, 70, null, IntPtr.Zero);
                    result.ImageBase64 = ImageUtil.ImageToBase64String(image);
                }
            }
            results.AddRange(webSearchResults);
            return(results);
        }
        private void OnSearch(object sender, EventArgs e)
        {
            _totalPages         = 0;
            _parsedPages        = 0;
            _form.PageCount     = 0;
            _form.ResultCount   = 0;
            _form.CanSearchNext = false;
            object state = _form.BeginSearching();

            try
            {
                Layout layout = _form.GetLayout();
                if (new IsEmptyString(layout.SearchText))
                {
                    return;
                }
                WebPageInfo pageInfo = new AvitoPage(_settings, new AvitoPageRequest(_settings, layout.SearchText)).Info();
                if (pageInfo.PageCount == 0)
                {
                    return;
                }

                _form.PageCount = _totalPages = pageInfo.PageCount;
                for (int i = 1; i <= layout.PagesPerSet; i++)
                {
                    _parsedPages++;
                    if (_parsedPages > _totalPages)
                    {
                        return;
                    }
                    List <WebSearchResult> newResults = SearchOnPage(i, layout);
                    for (int j = 0; j < newResults.Count; j++)
                    {
                        _form.ResultCount++;
                        _form.AddResultEntry(newResults[j]);
                    }
                }
            }
            finally
            {
                _form.EndSearching(state);
                _form.CanSearchNext = _parsedPages < _totalPages;
                SortBy();
            }
        }