Esempio n. 1
0
        protected virtual void InitializeFilters()
        {
            if (Filter == null)
            {
                Filter = "";
            }

            if (!Filters.Contains(SearchFilter))
            {
                Filters.Insert(0, SearchFilter);
            }
        }
        public void FillResponse(
            List <GroupEntry> entries,
            FilterSet ids,
            GroupKey keys,
            bool singleKey)
        {
            if (singleKey)
            {
                if (ids == null)
                {
                    switch (keys)
                    {
                    case GroupKey.City:
                        entries.AddRange(
                            _context.Cities
                            .GetGroups()
                            .Select(x => new GroupEntry(new Group(GroupKey.City, cityId: x.Key), x.Count)));
                        return;

                    case GroupKey.Country:
                        entries.AddRange(
                            _context.Countries
                            .GetGroups()
                            .Select(x => new GroupEntry(new Group(GroupKey.Country, countryId: x.Key), x.Count)));
                        return;

                    case GroupKey.Interest:
                        entries.AddRange(
                            _context.Interests
                            .GetGroups()
                            .Select(x => new GroupEntry(new Group(GroupKey.Interest, interestId: x.Key), x.Count)));
                        return;

                    case GroupKey.Sex:
                        entries.AddRange(
                            _context.Sex
                            .GetGroups()
                            .Select(x => new GroupEntry(new Group(GroupKey.Sex, sex: x.Key), x.Count)));
                        return;

                    case GroupKey.Status:
                        entries.AddRange(
                            _context.Statuses
                            .GetGroups()
                            .Select(x => new GroupEntry(new Group(GroupKey.Status, status: x.Key), x.Count)));
                        return;

                    default:
                        return;
                    }
                }
                else
                {
                    switch (keys)
                    {
                    case GroupKey.City:
                        foreach (var item in _context.Cities.GetGroups())
                        {
                            int count = item.Ids.Count(x => ids.Contains(x));
                            if (count > 0)
                            {
                                entries.Add(new GroupEntry(new Group(GroupKey.City, cityId: item.Key), count));
                            }
                        }
                        return;

                    case GroupKey.Country:
                        foreach (var item in _context.Countries.GetGroups())
                        {
                            int count = item.Ids.Count(x => ids.Contains(x));
                            if (count > 0)
                            {
                                entries.Add(new GroupEntry(new Group(GroupKey.Country, countryId: item.Key), count));
                            }
                        }
                        return;

                    case GroupKey.Interest:
                        foreach (var item in _context.Interests.GetGroups())
                        {
                            int count = item.Ids.Count(x => ids.Contains(x));
                            if (count > 0)
                            {
                                entries.Add(new GroupEntry(new Group(GroupKey.Interest, interestId: item.Key), count));
                            }
                        }
                        return;

                    case GroupKey.Sex:
                        foreach (var item in _context.Sex.GetGroups())
                        {
                            int count = item.Ids.Count(x => ids.Contains(x));
                            if (count > 0)
                            {
                                entries.Add(new GroupEntry(new Group(GroupKey.Sex, sex: item.Key), count));
                            }
                        }
                        return;

                    case GroupKey.Status:
                        foreach (var item in _context.Statuses.GetGroups())
                        {
                            int count = item.Ids.Count(x => ids.Contains(x));
                            if (count > 0)
                            {
                                entries.Add(new GroupEntry(new Group(GroupKey.Status, status: item.Key), count));
                            }
                        }
                        return;

                    default:
                        return;
                    }
                }
            }

            if (IndexRemoved)
            {
                return;
            }

            if (ids == null)
            {
                foreach (var group in _data[keys])
                {
                    int count = group.Ids.Count;
                    if (count > 0)
                    {
                        entries.Add(new GroupEntry(group.Key, count));
                    }
                }
            }
            else
            {
                foreach (var group in _data[keys])
                {
                    int count = group.Ids.GetList().Count(x => ids.Contains(x));
                    if (count > 0)
                    {
                        entries.Add(new GroupEntry(group.Key, count));
                    }
                }
            }
        }