Exemplo n.º 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());
        }
Exemplo n.º 2
0
        public AddNewPinViewModel(UserPinDescriptor pin)
        {
            Pin            = pin;
            _mapCenter     = new Position(pin.Lat, pin.Lng);
            ValidCities    = new List <DeserializeCitiesData>();
            _pinCategories = new ObservableCollection <PinCategory>(ApplicationSettings.PinCategories.Select(item =>
            {
                var temp = new PinCategory
                {
                    CategoriesBranch = item.CategoriesBranch,
                    Color            = item.Color,
                    Icon             = item.Icon,
                    Id           = item.Id,
                    PinIcon      = item.PinIcon,
                    IsVisible    = true,
                    ItemSelected = false,
                    Name         = item.Name,
                    ParentId     = item.ParentId
                };
                temp.ItemTapped += Category_ItemTapped;
                return(temp);
            }));
            _pinSubCategories = new ObservableCollection <PinCategory>(ApplicationSettings.PinSubCategories.Select(item =>
            {
                var temp = new PinCategory
                {
                    CategoriesBranch = item.CategoriesBranch,
                    Color            = item.Color,
                    Icon             = item.Icon,
                    PinIcon          = item.PinIcon,
                    Id           = item.Id,
                    IsVisible    = false,
                    ItemSelected = false,
                    Name         = item.Name,
                    ParentId     = item.ParentId
                };
                temp.ItemTapped += Tag_ItemTapped;
                return(temp);
            }));

            foreach (var item in _pinSubCategories.Where(psc => psc.ParentId == Pin.BaseCategoryId))
            {
                item.IsVisible    = true;
                item.ItemSelected = Pin.Subcategories.Any(p => p.Id == item.Id);
            }

            OldPhotos = new ObservableCollection <string>(pin.PhotosMini);

            #region [ Для времени работы ]

            _weekViewModel = new WeekViewModel();

            _workTimeViewModels = new List <WorkTimeViewModel>();

            if (Pin.WorkTime != null && Pin.WorkTime.Count > 0)
            {
                foreach (var tempListOfDay in Pin.WorkTime.GroupBy(w => w.CloseTime.ToString() + w.OpenTime.ToString()))
                {
                    var newWorkTimeViewModel = new WorkTimeViewModel();
                    if (_workTimeViewModels.All(wt => !wt.IsAdd))
                    {
                        newWorkTimeViewModel.IsAdd = true;
                    }
                    newWorkTimeViewModel.PlusMinusClicked += WoktimeVm_PlusMinusClicked;
                    newWorkTimeViewModel.CalendarClicked  += WoktimeVm_CalendarClicked;
                    foreach (var workTime in tempListOfDay)
                    {
                        newWorkTimeViewModel.Days.Add(new MyDayOfWeek((DayOfWeek)(workTime.Id == 7 ? 0 : workTime.Id))
                        {
                            IsSelected = true
                        });
                        newWorkTimeViewModel.StartTime = workTime.OpenTime;
                        newWorkTimeViewModel.StopTime  = workTime.CloseTime;
                        _weekViewModel.Days.FirstOrDefault(
                            d => d.Day == (DayOfWeek)(workTime.Id == 7 ? 0 : workTime.Id))
                        .IsSelected = true;
                    }
                    _workTimeViewModels.Add(newWorkTimeViewModel);
                }
            }
            else
            {
                var firstWoktimeVm = new WorkTimeViewModel(new List <MyDayOfWeek>(), true);
                firstWoktimeVm.PlusMinusClicked += WoktimeVm_PlusMinusClicked;
                firstWoktimeVm.CalendarClicked  += WoktimeVm_CalendarClicked;
                _workTimeViewModels.Add(firstWoktimeVm);
            }

            #endregion [ Для времени работы ]

            #region [ Для телефонов ]

            _phoneViewModels = new List <PhoneViewModel>();
            if (Pin.Phones != null && Pin.Phones.Count > 0)
            {
                foreach (var phone in Pin.Phones)
                {
                    var newPhone = new PhoneViewModel(phone);
                    if (newPhone.Phone.Primary)
                    {
                        newPhone.IsAdd = true;
                    }
                    _phoneViewModels.Add(newPhone);
                    newPhone.PlusMinusClicked += Phone_PlusMinusClicked;
                }
            }
            else
            {
                var firstPhone = new PhoneViewModel(new Phone {
                    Primary = true
                }, true);
                firstPhone.PlusMinusClicked += Phone_PlusMinusClicked;
                _phoneViewModels.Add(firstPhone);
            }

            #endregion [ Для телефонов ]

            _baseCategoryString  = Pin.BaseCategoryName;
            _baseCategoryColor   = _pinCategories.FirstOrDefault(c => c.Id == Pin.BaseCategoryId).Color;
            _baseCategoryImage   = _pinCategories.FirstOrDefault(c => c.Id == Pin.BaseCategoryId).Icon;
            BaseCategorySelected = true;
            PinCategories.FirstOrDefault(c => c.Id == Pin.BaseCategoryId).ItemSelected = true;
            _isRedact = true;
            Photos.CollectionChanged += Photos_CollectionChanged;
            PropertyChanged          += AddNewPinViewModel_PropertyChanged;
            Pin.PropertyChanged      += Pin_PropertyChanged;
        }