コード例 #1
0
        public IDocumentSnapshot Get(IDocumentReference document)
        {
            var snapshot = _transaction.GetDocument(document.ToNative(), out var error);

            if (error != null)
            {
                throw ExceptionMapper.Map(error);
            }

            return(new DocumentSnapshotWrapper(snapshot !));
        }
コード例 #2
0
        public IDocumentSnapshot Get(IDocumentReference document)
        {
            var wrapper  = (DocumentReferenceWrapper)document;
            var snapshot = _transaction.GetDocument((DocumentReference)wrapper, out var error);

            if (error != null)
            {
                throw ExceptionMapper.Map(error);
            }

            return(new DocumentSnapshotWrapper(snapshot));
        }
コード例 #3
0
        public IDocumentSnapshot GetDocument(IDocumentReference document)
        {
            var wrapper  = (DocumentReferenceWrapper)document;
            var snapshot = Transaction.GetDocument(wrapper.DocumentReference, out var error);

            if (error != null)
            {
                throw new NSErrorException(error);
            }

            return(new DocumentSnapshotWrapper(snapshot));
        }
コード例 #4
0
        public ITransaction Set <T>(IDocumentReference document, T documentData, bool merge)
        {
            if (merge)
            {
                return(Set(document, documentData));
            }

            var wrapper = (DocumentReferenceWrapper)document;

            _transaction.Set((DocumentReference)wrapper, documentData.ToNativeFieldValues(), SetOptions.Merge());
            return(this);
        }
コード例 #5
0
        public void SetData <T>(IDocumentReference document, T documentData, bool merge) where T : class
        {
            if (merge)
            {
                SetData(document, documentData);
                return;
            }

            var wrapper = (DocumentReferenceWrapper)document;

            WriteBatch.Set(wrapper.DocumentReference, documentData.ToNativeFieldValues(), SetOptions.Merge());
        }
コード例 #6
0
        public void SetData(IDocumentReference document, object documentData, bool merge)
        {
            if (merge)
            {
                SetData(document, documentData);
                return;
            }

            var wrapper = (DocumentReferenceWrapper)document;

            _writeBatch.Set((DocumentReference)wrapper, documentData.ToNativeFieldValues(), SetOptions.Merge());
        }
コード例 #7
0
        public IDocumentSnapshot <T> GetDocument <T>(IDocumentReference document)
        {
            var snapshot = _wrapped.GetDocument(document.ToNative(), out var error).ToAbstract <T>();

            if (error == null)
            {
                return(snapshot);
            }
            else
            {
                throw new FirebaseException(error.LocalizedDescription);
            }
        }
コード例 #8
0
        public async Task <string> CreateProject(Project project, List <Stream> images)
        {
            string error = _projectValidation.ValidateProject(project);

            if (string.IsNullOrEmpty(error))
            {
                IDocumentReference document = _collectionReference.CreateDocument();

                await document.SetDataAsync(project);

                error = await AddProjectImages(document.Id, images);
            }

            return(error);
        }
コード例 #9
0
 public static IObservable <IDocumentSnapshot> AsObservable(this IDocumentReference document)
 {
     return(Observable.Create <IDocumentSnapshot>(observer =>
     {
         return document.AddSnapshotListener((snapshot, error) =>
         {
             if (error != null)
             {
                 observer.OnError(error);
             }
             else
             {
                 observer.OnNext(snapshot !);
             }
         });
     }));
 }
        public static IObservable <IDocumentSnapshot> AsObservable(this IDocumentReference document)
        {
            return(Observable.Create <IDocumentSnapshot>(observer =>
            {
                var registration = document.AddSnapshotListener((snapshot, error) =>
                {
                    if (error != null)
                    {
                        observer.OnError(error);
                    }
                    else
                    {
                        observer.OnNext(snapshot);
                    }
                });

                return Disposable.Create(registration.Remove);
            }));
        }
コード例 #11
0
        public ITransaction SetData(IDocumentReference document, Dictionary <object, object> data, SetOptions options = null)
        {
            if (options == null)
            {
                return(_wrapped.SetData(data, document.ToNative()).ToAbstract());
            }

            switch (options.Type)
            {
            case SetOptions.TypeMerge:
                return(_wrapped.SetData(data, document.ToNative(), true).ToAbstract());

            case SetOptions.TypeMergeFieldPaths:
                return(_wrapped.SetData(data, document.ToNative(), options.FieldPaths.Select(x => new FieldPath(x.ToArray())).ToArray()).ToAbstract());

            case SetOptions.TypeMergeFields:
                return(_wrapped.SetData(data, document.ToNative(), options.Fields.ToArray()).ToAbstract());

            default:
                throw new ArgumentException($"SetOptions type {options.Type} is not supported.");
            }
        }
コード例 #12
0
ファイル: HomeActivity.cs プロジェクト: thimakulani/GBV
        private async void Home_PanicButtonEventHandler(object sender, EventArgs e)
        {
            CrossCloudFirestore
            .Current
            .Instance
            .Collection("PEOPLE")
            .Document(FirebaseAuth.Instance.Uid)
            .AddSnapshotListener(async(value, error) =>
            {
                if (value.Exists)
                {
                    var users = value.ToObject <AppUsers>();

                    Dictionary <string, object> data = new Dictionary <string, object>();
                    data.Add("Uid", FirebaseAuth.Instance.CurrentUser.Uid);
                    data.Add("TimeDate", FieldValue.ServerTimestamp);
                    dbref = await CrossCloudFirestore
                            .Current
                            .Instance
                            .Collection("EMERGENCY")
                            .AddAsync(data);
                    var stream = Resources.Assets.Open("ServiceAccount.json");
                    var fcm    = FirebaseHelper.FirebaseAdminSDK.GetFirebaseMessaging(stream);
                    FirebaseAdmin.Messaging.Message message = new FirebaseAdmin.Messaging.Message()
                    {
                        Topic        = "alerts",
                        Notification = new Notification()
                        {
                            Title = "Emergency Alert",
                            Body  = $"${users.Username} may be in need of emergency assistance, please contact him on ${users.PhoneNumber} or contact the police and provide the address in the alert locator in the map.",
                        },
                    };
                    await fcm.SendAsync(message);
                }
            });
        }
コード例 #13
0
        public void DeleteDocument(IDocumentReference document)
        {
            var wrapper = (DocumentReferenceWrapper)document;

            Transaction.DeleteDocument(wrapper.DocumentReference);
        }
コード例 #14
0
        public void UpdateData <T>(IDocumentReference document, T fields) where T : class
        {
            var wrapper = (DocumentReferenceWrapper)document;

            Transaction.UpdateData(fields.ToNativeFieldValues(), wrapper.DocumentReference);
        }
コード例 #15
0
        public void SetData <T>(IDocumentReference document, T documentData, bool merge) where T : class
        {
            var wrapper = (DocumentReferenceWrapper)document;

            Transaction.SetData(documentData.ToNativeFieldValues(), wrapper.DocumentReference, merge);
        }
コード例 #16
0
 public ITransaction Update <T>(IDocumentReference document, T fields)
 {
     _transaction.UpdateData(fields.ToNativeFieldValues() !, document.ToNative());
     return(this);
 }
コード例 #17
0
        public void UpdateData <T>(IDocumentReference document, string field, T value, params object[] moreFieldsAndValues)
        {
            var wrapper = (DocumentReferenceWrapper)document;

            WriteBatch.Update(wrapper.DocumentReference, field, value.ToNativeFieldValue(), moreFieldsAndValues.Select(x => x.ToNativeFieldValue()).ToArray());
        }
コード例 #18
0
        public void UpdateData(IDocumentReference document, object fields)
        {
            var wrapper = (DocumentReferenceWrapper)document;

            _writeBatch.Update((DocumentReference)wrapper, fields.ToNativeFieldValues());
        }
コード例 #19
0
        public void SetData(IDocumentReference document, object documentData, params FieldPath[] mergeFields)
        {
            var wrapper = (DocumentReferenceWrapper)document;

            _writeBatch.Set((DocumentReference)wrapper, documentData.ToNativeFieldValues(), SetOptions.MergeFieldPaths(new JavaList <Firebase.Firestore.FieldPath>(mergeFields.Select(x => x.ToNative()))));
        }
コード例 #20
0
        public void SetData(IDocumentReference document, object documentData, params string[] mergeFields)
        {
            var wrapper = (DocumentReferenceWrapper)document;

            _writeBatch.Set((DocumentReference)wrapper, documentData.ToNativeFieldValues(), SetOptions.MergeFields(mergeFields));
        }
コード例 #21
0
        public void SetData(IDocumentReference document, object documentData)
        {
            var wrapper = (DocumentReferenceWrapper)document;

            _writeBatch.Set((DocumentReference)wrapper, documentData.ToNativeFieldValues());
        }
コード例 #22
0
 public void UpdateData(IDocumentReference document, string field, object?value, params object?[] moreFieldsAndValues)
 {
     Update(document, field, value, moreFieldsAndValues);
 }
コード例 #23
0
        public void SetData <T>(IDocumentReference document, T documentData) where T : class
        {
            var wrapper = (DocumentReferenceWrapper)document;

            WriteBatch.Set(wrapper.DocumentReference, documentData.ToNativeFieldValues());
        }
コード例 #24
0
        public void UpdateData(IDocumentReference document, FieldPath field, object value, params object[] moreFieldsAndValues)
        {
            var wrapper = (DocumentReferenceWrapper)document;

            _writeBatch.Update((DocumentReference)wrapper, field.ToNative(), value.ToNativeFieldValue(), moreFieldsAndValues.Select(x => x.ToNativeFieldValue()).ToArray());
        }
コード例 #25
0
        public void SetData <T>(IDocumentReference document, T documentData, string[] mergeFields) where T : class
        {
            var wrapper = (DocumentReferenceWrapper)document;

            WriteBatch.Set(wrapper.DocumentReference, documentData.ToNativeFieldValues(), SetOptions.MergeFields(mergeFields));
        }
コード例 #26
0
 public IWriteBatch SetData(IDocumentReference document, Dictionary <object, object> data, SetOptions options = null)
 {
     return(options == null
         ? _wrapped.Set(document.ToNative(), data.ToHashMap()).ToAbstract()
         : _wrapped.Set(document.ToNative(), data.ToHashMap(), options.ToNative()).ToAbstract());
 }
コード例 #27
0
        public void UpdateData <T>(IDocumentReference document, T fields) where T : class
        {
            var wrapper = (DocumentReferenceWrapper)document;

            WriteBatch.Update(wrapper.DocumentReference, fields.ToNativeFieldValues());
        }
コード例 #28
0
 public IWriteBatch SetData(IDocumentReference document, params (object, object)[] data)
コード例 #29
0
        public void DeleteDocument(IDocumentReference document)
        {
            var wrapper = (DocumentReferenceWrapper)document;

            WriteBatch.Delete(wrapper.DocumentReference);
        }
コード例 #30
0
 public void UpdateData(IDocumentReference document, object fields)
 {
     _transaction.UpdateData(fields.ToNativeFieldValues() !, document.ToNative());
 }