Example #1
0
        public IEnumerable <TKCustomMapPin> GetPinsByTag(string tag)
        {
            tag = tag.ToLower();
            var categories =
                PinCategories.Where(item => item.Name.ToLower().Contains(tag)).Select(item => item.Id).ToList();

            categories.AddRange(
                PinSubCategories?.Where(item => item.Name.ToLower().Contains(tag)).Select(item => item.Id));
            return((ApplicationSettings.LoadedPins.Pins.Where(
                        pin => pin.Pin.Title.ToLower().Contains(tag) || pin.CategoriesBranch.Intersect(categories).Any())
                    .Select(pin => pin.Pin)).ToList());
        }
Example #2
0
        public void UpdatePinsVisible(int?changedCategoryId = null, bool?isSelected = null,
                                      bool?isRootCategory   = null)
        {
            var selectedRootcategories = SelectedRootCategories;
            var selectedSubcategories  = SelectedSubCategories;


            if (!selectedRootcategories.Any())
            {
                foreach (var pin in Pins)
                {
                    pin.IsVisible = CheckVisiblePinByTags(pin);
                }
            }
            else
            {
                foreach (var pin in Pins.Where(pin => selectedRootcategories.Contains(pin.RootCategory)))
                {
                    if (!CheckVisiblePinByTags(pin))
                    {
                        pin.IsVisible = false;
                        continue;
                    }

                    if (!pin.SubCategories.Any()) //Если нет вложенных категорий, или ни одна из подкатегорий не выбрана
                    {
                        pin.IsVisible = true;
                    }
                    else
                    {
                        var subcategories =
                            PinSubCategories.Where(item => item.ParentId == pin.RootCategory).Select(item => item.Id);
                        // Если не отмечены никакие подкатегории в категории
                        var selectedByNoSelectedSubcategoriesIncategory =
                            !selectedSubcategories.Intersect(subcategories).Any();
                        var visibleBySelectedSubCategory =
                            pin.SubCategories.Any(item => selectedSubcategories.Contains(item));
                        //Если выбрана подкатегория с пином
                        pin.IsVisible = (visibleBySelectedSubCategory || selectedByNoSelectedSubcategoriesIncategory);
                    }
                }
                foreach (var pin in Pins.Where(pin => !selectedRootcategories.Contains(pin.RootCategory)))
                {
                    pin.IsVisible = false;
                }
            }
            OnPropertyChanged(nameof(SelectedPinsCnt));
        }