Exemple #1
0
        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);