private void OnVisit(object sender, CLVisitedEventArgs args) { double latitude = args.Visit.Coordinate.Latitude; double longitude = args.Visit.Coordinate.Longitude; DateTimeOffset timestamp = DateTimeOffset.UtcNow; DateTimeOffset?arrivalDate = null; DateTimeOffset?departureDate = null; if (args.Visit.ArrivalDate == null || args.Visit.ArrivalDate.IsEqualToDate(NSDate.DistantPast)) { arrivalDate = null; } else { arrivalDate = new DateTimeOffset(args.Visit.ArrivalDate.LaterDate(DateTime.MinValue.ToNSDate()).ToDateTime(), TimeSpan.Zero); } if (args.Visit.DepartureDate == null || args.Visit.DepartureDate.IsEqualToDate(NSDate.DistantFuture)) { departureDate = null; } else { departureDate = new DateTimeOffset(args.Visit.DepartureDate.EarlierDate(DateTime.MaxValue.ToNSDate()).ToDateTime(), TimeSpan.Zero); } Task.WaitAny(StoreDatumAsync(new VisitDatum(arrivalDate, departureDate, latitude, longitude, args.Visit.HorizontalAccuracy, timestamp))); }
/// <summary> /// Converts the <see cref="CLVisitedEventArgs"/> to <see cref="VisitedEvent"/>. /// </summary> /// <param name="args">The arguments.</param> /// <returns>The notification.</returns> public static VisitedEvent ToNotification(this CLVisitedEventArgs args) => new VisitedEvent(args.Visit.Coordinate.ToLocation(), args.Visit.ArrivalDate.ToLocalTime(), args.Visit.DepartureDate.ToLocalTime(), args.Visit.HorizontalAccuracy);