Exemple #1
0
 private object GetRidePeriod(RidePeriod ridePeriod)
 {
     if (ridePeriod.Equals(RidePeriod.Today))
     {
         return("today");
     }
     else if (ridePeriod.Equals(RidePeriod.EveryDay))
     {
         return("every day");
     }
     else
     {
         return("tomorrow");
     }
 }
Exemple #2
0
        public override Task InitializeAsync(object navigationData)
        {
            if (navigationData is GraphUser)
            {
                _newMessageType = NewMessageType.Invite;
                User            = (GraphUser)navigationData;
                Subject         = $"May I ride with you {GetRidePeriod(App.CurrentUser.RidePeriod)}?";
                Message         =
                    $"Hi {User.GivenName}," +
                    Environment.NewLine + Environment.NewLine +
                    $"May I ride with you {GetRidePeriod(App.CurrentUser.RidePeriod)}?" +
                    Environment.NewLine +
                    "The WorkRides app thinks we're a good match!" +
                    Environment.NewLine + Environment.NewLine +
                    "Thank you," +
                    Environment.NewLine +
                    $"{App.CurrentUser.GivenName}";
            }
            else if (navigationData is InspectRiderRequestViewModel)
            {
                _newMessageType = NewMessageType.Join;
                User            = ((InspectRiderRequestViewModel)navigationData).User;
                _distance       = ((InspectRiderRequestViewModel)navigationData).Distance;
                _ridePeriod     = ((InspectRiderRequestViewModel)navigationData).RequestedRidePeriod.HasValue ?
                                  ((InspectRiderRequestViewModel)navigationData).RequestedRidePeriod.Value:
                                  RidePeriod.Tomorrow;
                _route  = ((InspectRiderRequestViewModel)navigationData).PushpinsList;
                Subject = "Thanks for joining my carpool :)";

                // Pickup time
                var tripTime    = UserHelper.GetTripTimeEstimationAsync(User.Location(), User.WorkLocation());
                var arrivalTime = User.ArrivalTime.Equals(default(DateTime).Date) ? App.CurrentUser.ArrivalTime : User.ArrivalTime;

                Message =
                    $"Hi {User.GivenName}," +
                    Environment.NewLine + Environment.NewLine +
                    $"Thanks for joining my carpool {GetRidePeriod(_ridePeriod)}!" +
                    Environment.NewLine +
                    $"I'll pick you around {string.Format("{0:h:mm tt}", arrivalTime.AddMinutes(-tripTime))?.ToLowerInvariant()}" +
                    Environment.NewLine + Environment.NewLine +
                    $"{App.CurrentUser.GivenName}";
            }

            return(base.InitializeAsync(navigationData));
        }
Exemple #3
0
        private async Task CreateEventsForRide(RidePeriod ridePeriod)
        {
            var startEvent = DateTime.Today + User.ArrivalTime.TimeOfDay;
            var endEvent   = DateTime.Today + User.DepartureTime.TimeOfDay;

            if (startEvent.Date.Equals(default(DateTime).Date))
            {
                startEvent = DateTime.Today + App.CurrentUser.ArrivalTime.TimeOfDay;
                endEvent   = DateTime.Today + App.CurrentUser.DepartureTime.TimeOfDay;
            }

            PatternedRecurrence pattern = null;

            if (ridePeriod.Equals(RidePeriod.EveryDay))
            {
                var recurrentEndEvent = endEvent.AddMonths(3);

                pattern = new PatternedRecurrence()
                {
                    Range = new RecurrenceRange()
                    {
                        StartDate          = new Date(startEvent.Year, startEvent.Month, startEvent.Day),
                        EndDate            = new Date(recurrentEndEvent.Year, recurrentEndEvent.Month, recurrentEndEvent.Day),
                        Type               = RecurrenceRangeType.EndDate,
                        RecurrenceTimeZone = "UTC"
                    },
                    Pattern = new RecurrencePattern()
                    {
                        Interval   = 1,
                        DaysOfWeek = new List <Microsoft.Graph.DayOfWeek>()
                        {
                            Microsoft.Graph.DayOfWeek.Monday,
                            Microsoft.Graph.DayOfWeek.Tuesday,
                            Microsoft.Graph.DayOfWeek.Wednesday,
                            Microsoft.Graph.DayOfWeek.Thursday,
                            Microsoft.Graph.DayOfWeek.Friday
                        },
                        Type = RecurrencePatternType.Daily
                    }
                };
            }
            else if (ridePeriod.Equals(RidePeriod.Tomorrow))
            {
                startEvent = startEvent.AddDays(1);
                endEvent   = endEvent.AddDays(1);
            }

            // calculate estimated trip time to event time
            var tripTime = UserHelper.GetTripTimeEstimationAsync(User.Location(), User.WorkLocation());

            await _calendarService.CreateEventAsync(
                startEvent.AddMinutes(-tripTime),
                startEvent,
                $"{AppSettings.CarpoolEventSubject} Pickup",
                User.StreetAddress,
                AppSettings.CarpoolEventSubject,
                new string[] { User.Mail },
                false,
                App.CurrentUser.UserPrincipalName,
                pattern);

            await _calendarService.CreateEventAsync(
                endEvent,
                endEvent.AddMinutes(tripTime),
                $"{AppSettings.CarpoolEventSubject} Dropoff",
                User.StreetAddress,
                AppSettings.CarpoolEventSubject,
                new string[] { User.Mail },
                false,
                App.CurrentUser.UserPrincipalName,
                pattern);
        }