Esempio n. 1
0
        public override void InitilizeFunc(object obj = null)
        {
            IsRefreshing = true;
            var user           = ApplicationSettings.CurrentUser;
            var eventsArticles = ApplicationSettings.CurrentUser.FavoritesArticleEvents.Select(item =>
            {
                var result         = new ArticleEventItem(item);
                result.DeleteItem += Result_DeleteItem;
                return(result);
            }).ToList();

            Articles =
                new ObservableCollection <ArticleEventItem>(
                    eventsArticles.Where(item => !item.StartDate.HasValue));
            Events = new ObservableCollection <ArticleEventItem>(
                eventsArticles.Where(item => item.StartDate.HasValue));
            var pins = ApplicationSettings.CurrentUser.FavoritesPlaces.Select(item =>
            {
                var temp = new UserPinDescriptor(item);
                temp.DeleteFromFavorites += Pin_DeleteFromFavorites;
                return(temp);
            });

            Pins         = new ObservableCollection <UserPinDescriptor>(pins);
            IsRefreshing = false;
        }
 public override void InitilizeFunc(object obj = null)
 {
     Device.BeginInvokeOnMainThread(() =>
     {
         if (!_isRedact)
         {
             Pin = new UserPinDescriptor
             {
                 Pin = new TKCustomMapPin
                 {
                     Position    = _mapCenter,
                     IsSmall     = true,
                     Scale       = 3,
                     Image       = "empty_pin.png",
                     ShowCallout = false,
                     IsDraggable = true
                 },
                 IsVisible        = true,
                 CategoriesBranch = new List <int>()
             };
             IsPersonalMarker = !IsGuide;
         }
         else
         {
             IsPersonalMarker = true;
         }
         if (Device.OS == TargetPlatform.Android)
         {
             Pin.Pin.IsDraggable = false;
         }
         Pins = new ObservableCollection <TKCustomMapPin> {
             Pin.Pin
         };
         MapCenter = new Position(Pin.Pin.Position.Latitude, Pin.Pin.Position.Longitude);
     });
     //CheckRegion();
 }
Esempio n. 3
0
 public AddPinView(UserPinDescriptor pin)
 {
     CurrentViewModel = new AddNewPinViewModel(pin);
     InitializeComponent();
     Init();
 }
        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;
        }
        public PinDetailsViewModel(int id)
        {
            PinFromServer = ApplicationSettings.Service.GetMarkerDetails(id);
            if (PinFromServer == null)
            {
                return;
            }
            _id  = id;
            _pin = new UserPinDescriptor
            {
                Pin = new TKCustomMapPin
                {
                    Id          = PinFromServer.Id,
                    Position    = new Position(PinFromServer.Lat, PinFromServer.Lng),
                    Title       = PinFromServer.Name,
                    Image       = PinFromServer.Pin,
                    ShowCallout = false,
                    IsDraggable = false,
                    Subtitle    = PinFromServer.Description
                },
                Id               = PinFromServer.Id,
                BaseCategoryId   = PinFromServer.BaseCategoryId,
                BaseCategoryName = PinFromServer.CategoriesBranch.FirstOrDefault()?.Name ?? "",
                RootCategoryName = PinFromServer.CategoriesBranch.LastOrDefault()?.Name ?? "",
                PinImage         = PinFromServer.Pin,
                InfoImage        = PinFromServer.Logo,
                Photos           = PinFromServer.Photos,
                PhotosMini       = PinFromServer.PhotosMini,
                Photo            = PinFromServer.Photo,
                Name             = PinFromServer.Name,
                HexColor         = PinFromServer.Color,
                Phones           = PinFromServer.Phones.Any() ? PinFromServer.Phones : new List <Phone>(),
                WorkTime         = PinFromServer.WorkTime,
                Subcategories    = PinFromServer.Subcategories,
                //Phone =
                //    PinFromServer.Phones.Any() ? PinFromServer.Phones.FirstOrDefault(item => item.Primary) : new Phone(),
                Description       = "    " + PinFromServer.Description,
                Street            = PinFromServer.Street,
                House             = PinFromServer.House,
                Adress            = PinFromServer.Street + " " + PinFromServer.House,
                IsVisible         = true,
                Introduction      = PinFromServer.Introduction,
                Tags              = PinFromServer.Subcategories.Select(item => item.Name).ToList(),
                WiFi              = PinFromServer.Wifi,
                Personal          = PinFromServer.Personal,
                HaveRelatedEvents = PinFromServer.HaveRelatedEvents
            };
            var todayWorkTime =
                PinFromServer.WorkTime.FirstOrDefault(
                    d => d.Id.ToDayOfWeek() == DateTime.Now.DayOfWeek);

            _openTime   = todayWorkTime?.OpenTime;
            _closeTime  = todayWorkTime?.CloseTime;
            _icon       = PinFromServer.Icon;
            _isFavorite = ApplicationSettings.CurrentUser.FavoritesPlaces.Any(item => item.ServerId == id);
            _pins       = new ObservableCollection <TKCustomMapPin> {
                _pin.Pin
            };
            _mapCenter = new Position(_pin.Pin.Position.Latitude, _pin.Pin.Position.Longitude);
            Events     =
                ApplicationSettings.Service.GetRelatedEventsFromMarker(_id, true)
                .Select(i => new RelatedEvent(new ArticleEventItem(i)))
                .ToList();
        }