Beispiel #1
0
        public void search()
        {
            selectedItem = null;
            Announcements.Clear();
            Regex regex    = new Regex(@"(\w*)(?i)" + SearchText + @"(\w*)");
            int   regionId = SelectedIndex;
            HashSet <Announcement> tmp1 = new HashSet <Announcement>();
            HashSet <Announcement> tmp2 = new HashSet <Announcement>();

            if (SelectedIndex != 0)
            {
                foreach (Announcement announcement in announcementRepository.getByRegionId(SelectedIndex))
                {
                    tmp1.Add(announcement);
                }
            }
            else
            {
                foreach (Announcement announcement in announcementRepository.getAll())
                {
                    tmp1.Add(announcement);
                }
            }
            if (!String.IsNullOrEmpty(Category))
            {
                foreach (Announcement announcement in tmp1.Where(x => x.category.Equals(Category)))
                {
                    tmp2.Add(announcement);
                }
                tmp1.Clear();
            }
            else
            {
                foreach (Announcement announcement in tmp1)
                {
                    tmp2.Add(announcement);
                }
                tmp1.Clear();
            }
            if (!String.IsNullOrEmpty(Seller))
            {
                int id = userRepository.getByName(Seller).id;
                foreach (Announcement announcement in tmp2.Where(x => x.seller == id))
                {
                    tmp1.Add(announcement);
                }
                tmp2.Clear();
            }
            else
            {
                foreach (Announcement announcement in tmp2)
                {
                    tmp1.Add(announcement);
                }
                tmp2.Clear();
            }
            if (!String.IsNullOrEmpty(SearchText))
            {
                foreach (Announcement announcement in tmp1)
                {
                    if (regex.IsMatch(announcement.about) || regex.IsMatch(announcement.name))
                    {
                        if (maxCost == 0)
                        {
                            if (announcement.cost <= maxCost && announcement.cost >= MAX_COST)
                            {
                                tmp2.Add(announcement);
                            }
                        }
                        else
                        {
                            if (announcement.cost <= maxCost && announcement.cost >= minCost)
                            {
                                tmp2.Add(announcement);
                            }
                        }
                    }
                }
            }
            else
            {
                foreach (Announcement announcement in tmp1)
                {
                    if (maxCost == 0)
                    {
                        if (announcement.cost <= maxCost && announcement.cost >= MAX_COST)
                        {
                            tmp2.Add(announcement);
                        }
                    }
                    else
                    {
                        if (announcement.cost <= maxCost && announcement.cost >= minCost)
                        {
                            tmp2.Add(announcement);
                        }
                    }
                }
            }

            foreach (Announcement announcement in tmp2)
            {
                Announcements.Add(announcement);
            }

            tmp1.Clear();
            tmp2.Clear();

            Info = $"Найдено {Announcements.Count}";
        }