Beispiel #1
0
        public IQuery EndBefore(IDocumentSnapshot document)
        {
            var wrapper = (DocumentSnapshotWrapper)document;
            var query   = Query.EndingBefore(wrapper.DocumentSnapshot);

            return(new QueryWrapper(query));
        }
Beispiel #2
0
 public LocationInfo(GeoPoint location, bool inGeoQuery, IDocumentSnapshot snapshot)
 {
     Location   = location;
     InGeoQuery = inGeoQuery;
     GeoHash    = new GeoHash(location);
     Snapshot   = snapshot;
 }
Beispiel #3
0
        public IQuery StartAfter(IDocumentSnapshot document)
        {
            var wrapper = (DocumentSnapshotWrapper)document;
            var query   = Query.StartingAfter(wrapper.DocumentSnapshot);

            return(new QueryWrapper(query));
        }
Beispiel #4
0
        public async Task <User> GetUserByPresenceIdAsync(string presenceId)
        {
            User result = null;

            if (!string.IsNullOrEmpty(presenceId))
            {
                try
                {
                    IQuerySnapshot querySnapshot = await _firestore.GetCollection(nameof(User)).WhereEqualsTo(nameof(User.PresenceId), presenceId).GetDocumentsAsync();

                    IDocumentSnapshot documentSnapshot = querySnapshot.Documents.FirstOrDefault();
                    if (documentSnapshot.Exists)
                    {
                        result = documentSnapshot.ToObject <User>();
                    }
                }
                catch (Exception e)
                {
                    result = null;
                    App.LogException(e);
                }
            }

            return(result);
        }
Beispiel #5
0
        public async Task <ObservableCollection <Event> > GetNextEventListByParticipantUsername(string username, Event evento)
        {
            ObservableCollection <Event> result = new ObservableCollection <Event>();

            try
            {
                IDocumentSnapshot documentSnapshotLast = await _firestore.GetCollection(nameof(Event)).GetDocument(evento.Id).GetDocumentAsync();

                if (documentSnapshotLast != null)
                {
                    IQuerySnapshot querySnapshot = await _firestore.GetCollection(nameof(Event))
                                                   .WhereArrayContains(nameof(Event.UsersList), username)
                                                   .OrderBy(nameof(Event.StartDateTime), true)
                                                   .StartAfter(documentSnapshotLast)
                                                   .LimitTo(20)
                                                   .GetDocumentsAsync();

                    foreach (IDocumentSnapshot documentSnapshot in querySnapshot.Documents)
                    {
                        if (documentSnapshot.Exists)
                        {
                            Event newEvent = documentSnapshot.ToObject <Event>();
                            result.Add(newEvent);
                        }
                    }
                }
            }
            catch (Exception e)
            {
                result = null;
                App.LogException(e);
            }

            return(result);
        }
Beispiel #6
0
        private void ChildRemoved(IDocumentSnapshot document)
        {
            var key  = document.Id;
            var info = _locationInfos[key];

            if (info == null)
            {
                return;
            }
            lock (_lock)
            {
                var location = GeoFire.GetLocationValue(document);
                var hash     = (location != null) ? new GeoHash(location) : null;
                if (hash != null && GeoHashQueriesContainGeoHash(hash))
                {
                    return;
                }

                _locationInfos.Remove(key);

                if (!info.InGeoQuery)
                {
                    return;
                }

                OnDocumentExited?.Invoke(this, new DocumentEventArgs <T>(info.Snapshot.ToObject <T>()));
            }
        }
        public IQuery StartAt(IDocumentSnapshot document)
        {
            var wrapper = (DocumentSnapshotWrapper)document;
            var query   = CollectionReference.StartingAt(wrapper.DocumentSnapshot);

            return(new QueryWrapper(query));
        }
        public IQuery EndAt(IDocumentSnapshot document)
        {
            var wrapper = (DocumentSnapshotWrapper)document;
            var query   = _query.EndingAt((DocumentSnapshot)wrapper);

            return(new QueryWrapper(query));
        }
Beispiel #9
0
        public IQuery EndBefore(IDocumentSnapshot document)
        {
            var wrapper = (DocumentSnapshotWrapper)document;
            var query   = _collectionReference.EndBefore((DocumentSnapshot)wrapper);

            return(new QueryWrapper(query));
        }
Beispiel #10
0
        public IQuery StartAfter(IDocumentSnapshot document)
        {
            var wrapper = (DocumentSnapshotWrapper)document;
            var query   = _collectionReference.StartAfter((DocumentSnapshot)wrapper);

            return(new QueryWrapper(query));
        }
Beispiel #11
0
        private void UpdateLocationInfo(IDocumentSnapshot document, GeoPoint location)
        {
            var key = document.Id;

            _locationInfos.TryGetValue(key, out var oldInfo);
            var isNew           = oldInfo == null;
            var changedLocation = oldInfo != null && !Equals(oldInfo.Location, location);
            var wasInQuery      = oldInfo != null && oldInfo.InGeoQuery;

            var isInQuery = LocationIsInQuery(location);

            if ((isNew || !wasInQuery) && isInQuery)
            {
                OnDocumentEntered?.Invoke(this, new DocumentEventArgs <T>(document.ToObject <T>(), location));
            }
            else if (!isNew && isInQuery)
            {
                if (changedLocation)
                {
                    OnDocumentMoved?.Invoke(this, new DocumentEventArgs <T>(document.ToObject <T>(), location));
                }
                OnDocumentChanged?.Invoke(this, new DocumentEventArgs <T>(document.ToObject <T>(), location));
            }
            else if (wasInQuery && !isInQuery)
            {
                OnDocumentExited?.Invoke(this, new DocumentEventArgs <T>(document.ToObject <T>()));
            }

            var newInfo = new LocationInfo(location, LocationIsInQuery(location), document);

            _locationInfos.Add(key, newInfo);
        }
Beispiel #12
0
 public static DocumentSnapshot ToNative(this IDocumentSnapshot @this)
 {
     if (@this is DocumentSnapshotWrapper wrapper)
     {
         return(wrapper.Wrapped);
     }
     throw new FirebaseException($"This implementation of {nameof(IDocumentSnapshot)} is not supported for this method");
 }
Beispiel #13
0
 public DocumentChange(
     IDocumentSnapshot documentSnapshot,
     DocumentChangeType changeType,
     int newIndex,
     int oldIndex)
 {
     DocumentSnapshot = documentSnapshot;
     ChangeType       = changeType;
     NewIndex         = newIndex;
     OldIndex         = oldIndex;
 }
Beispiel #14
0
        public static GeoPoint GetLocationValue(IDocumentSnapshot documentSnapshot)
        {
            var data     = documentSnapshot.Data;
            var geoPoint = (GeoPoint)data["l"];

            if (!GeoUtils.CoordinatesValid(geoPoint.Latitude, geoPoint.Longitude))
            {
                throw new ArgumentException($"Check {documentSnapshot.Id}. " +
                                            $"GeoPoint [lat: {geoPoint.Latitude}, long: {geoPoint.Longitude}] is invalid");
            }
            return(geoPoint);
        }
Beispiel #15
0
        public async Task <Int64> CreateOrderIdAsync()
        {
            IDocumentSnapshot document = await fireStoreInstance.GetDocument("/OrderIds/unCmzg3mr1W9U9pAQQSk").GetDocumentAsync();

            OrderId orderId        = document.ToObject <OrderId>();
            Int64   currentOrderId = orderId.Id;

            orderId.Id = currentOrderId + 1;
            await fireStoreInstance.GetDocument("/OrderIds/unCmzg3mr1W9U9pAQQSk").UpdateDataAsync(orderId);

            return(await Task.FromResult(orderId.Id));
        }
Beispiel #16
0
        private void ChildChanged(IDocumentSnapshot document)
        {
            var location = GeoFire.GetLocationValue(document);

            if (location != null)
            {
                UpdateLocationInfo(document, location);
            }
            else
            {
                Debug.Assert(false, "Got Datasnapshot without location with key " + document.Id);
            }
        }
Beispiel #17
0
        public async Task <ObservableCollection <Event> > GetNextFutureEventListPageAsync(Event evento)
        {
            ObservableCollection <Event> result = new ObservableCollection <Event>();

            if (evento != null)
            {
                try
                {
                    IDocumentSnapshot documentSnapshotLast = await _firestore.GetCollection(nameof(Event)).GetDocument(evento.Id).GetDocumentAsync();

                    if (documentSnapshotLast != null)
                    {
                        IQuerySnapshot querySnapshot = await _firestore.GetCollection(nameof(Event))
                                                       .WhereGreaterThanOrEqualsTo(nameof(Event.StartDateTime), DateTime.Now)
                                                       .OrderBy(nameof(Event.StartDateTime))
                                                       .StartAfter(documentSnapshotLast)
                                                       .LimitTo(20)
                                                       .GetDocumentsAsync();

                        foreach (IDocumentSnapshot documentSnapshot in querySnapshot.Documents)
                        {
                            if (documentSnapshot.Exists)
                            {
                                Event newEvent = documentSnapshot.ToObject <Event>();
                                result.Add(newEvent);
                            }
                        }
                    }
                }
                catch (Exception e)
                {
                    result = null;
                    App.LogException(e);
                }
            }
            return(result);
        }
Beispiel #18
0
        public async Task <User> GetUserAsync(string email)
        {
            User result = null;

            if (!string.IsNullOrEmpty(email))
            {
                try
                {
                    IDocumentSnapshot documentSnapshot = await _firestore.GetCollection(nameof(User)).GetDocument(email).GetDocumentAsync();

                    if (documentSnapshot.Exists)
                    {
                        result = documentSnapshot.ToObject <User>();
                    }
                }
                catch (Exception e)
                {
                    result = null;
                    App.LogException(e);
                }
            }

            return(result);
        }
Beispiel #19
0
        public async Task <Event> GetEventAsync(string id)
        {
            Event result = null;

            if (!string.IsNullOrEmpty(id))
            {
                try
                {
                    IDocumentSnapshot documentSnapshot = await _firestore.GetCollection(nameof(Event)).GetDocument(id).GetDocumentAsync();

                    if (documentSnapshot.Exists)
                    {
                        result = documentSnapshot.ToObject <Event>();
                    }
                }
                catch (Exception e)
                {
                    result = null;
                    App.LogException(e);
                }
            }

            return(result);
        }
Beispiel #20
0
 public MyHttpServer(IDocumentSnapshot document, int port)
     : base(port)
 {
     _document = document;
 }
Beispiel #21
0
 public MyHttpServer(IDocumentSnapshot document, int port)
     : base(port)
 {
     _document = document;
 }
Beispiel #22
0
        public IQuery EndBefore(IDocumentSnapshot document)
        {
            var query = _collectionReference.EndingBefore(document.ToNative());

            return(new QueryWrapper(query));
        }
        public IQuery StartAfter(IDocumentSnapshot document)
        {
            var query = _query.StartingAfter(document.ToNative());

            return(new QueryWrapper(query));
        }
        public IQuery EndBefore(IDocumentSnapshot document)
        {
            var query = _query.EndingBefore(document.ToNative());

            return(new QueryWrapper(query));
        }
Beispiel #25
0
        public IQuery StartAfter(IDocumentSnapshot document)
        {
            var query = _collectionReference.StartingAfter(document.ToNative());

            return(new QueryWrapper(query));
        }
Beispiel #26
0
 public IQuery StartingAfter(IDocumentSnapshot snapshot)
 {
     return(_wrapped.StartAfter(snapshot.ToNative()).ToAbstract());
 }
Beispiel #27
0
 public IQuery EndingBefore(IDocumentSnapshot snapshot)
 {
     return(_wrapped.EndBefore(snapshot.ToNative()).ToAbstract());
 }