Ejemplo n.º 1
0
        private async Task HandleSelection(MeetupDetailsPageItem item)
        {
            switch (item.ItemType)
            {
            case MeetupDetailsItemType.Friend:
                var sponsorDetails = new FriendDetailsPage
                {
                    FriendModel = item.Friend
                };

                App.Logger.TrackPage(AppPage.Friend.ToString(), item.Friend.Name);
                await NavigationService.PushAsync(Navigation, sponsorDetails);

                break;

            case MeetupDetailsItemType.Venue:
                await ExecuteLaunchBrowserAsync(new Uri(VenueModel.MapUrl));

                break;

            case MeetupDetailsItemType.Session:
                App.Logger.TrackPage(AppPage.Talk.ToString(), item.Session.Talk.Title);
                await NavigationService.PushAsync(Navigation, new TalkPage(item.Session.Talk));

                break;

            case MeetupDetailsItemType.Calendar:
                var toaster = DependencyService.Get <IToast>();

                if (this.IsReminderSet)
                {
                    var result = await CalendarService.RemoveCalendarEventAsync(MeetupModel.Id);

                    if (!result)
                    {
                        toaster.SendToast(this.Resources["ErrorOccured"]);
                        return;
                    }

                    toaster.SendToast(this.Resources["RemovedFromCalendar"]);
                    this.Logger.Track(DotNetRuLoggerKeys.ReminderRemoved, "Title", this.MeetupModel.Title);
                    this.IsReminderSet = false;
                }
                else
                {
                    var calendarEvent = new CalendarEvent
                    {
                        AllDay      = false,
                        Description = this.MeetupModel.Title,
                        Location    = this.Sessions.First().Meetup.Venue.Address,
                        Name        = this.MeetupModel.Title,
                        Start       = this.Sessions.First().StartTime.LocalDateTime,
                        End         = this.Sessions.Last().EndTime.LocalDateTime,
                        Reminders   = new[] {
                            new CalendarEventReminder
                            {
                                Method     = CalendarReminderMethod.Default,
                                TimeBefore = TimeSpan.FromMinutes(60)
                            }
                        }
                    };

                    var result = await CalendarService.AddCalendarEventAsync(MeetupModel.Id, calendarEvent);

                    if (!result)
                    {
                        toaster.SendToast(this.Resources["ErrorOccured"]);
                        return;
                    }

                    toaster.SendToast(this.Resources["AddedToCalendar"]);

                    this.Logger.Track(DotNetRuLoggerKeys.ReminderAdded, "Title", this.MeetupModel.Title);
                    this.IsReminderSet = true;
                }
                break;
            }
        }