public bool UnsubscribeEvent(SubscribeEventRequest request)
        {
            try
            {
                string           getResponseJSON = "";
                FirebaseResponse getResponse     = firebaseDBEvent.Get("?orderBy=\"EventId\"&equalTo=\"" + request.EventId + "\"");
                if (getResponse.Success)
                {
                    if (getResponse.JSONContent != null && !getResponse.JSONContent.ToString().Equals("") && !getResponse.JSONContent.ToString().Equals("null") && !getResponse.JSONContent.ToString().Equals("{}"))
                    {
                        getResponseJSON = getResponse.JSONContent;
                        JObject jObj = JObject.Parse(getResponseJSON);
                        foreach (var result in jObj)
                        {
                            Console.WriteLine(result.Key);
                            getResponseJSON = result.Key;

                            if ((string)result.Value["EventId"] == request.EventId)
                            {
                                Console.WriteLine("DELETE Request");
                                FirebaseResponse deleteResponse = firebaseDBEvent
                                                                  .NodePath(getResponseJSON + "/InstanceId/" + request.InstanceId).Delete();

                                Console.WriteLine(deleteResponse.Success);
                                if (deleteResponse.Success)
                                {
                                    return(true);
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception Ex)
            {
                throw Ex;
            }
            return(false);
        }
        public bool SubscribeEvent(SubscribeEventRequest request)
        {
            try
            {
                string           getResponseJSON = "";
                bool             isExist         = false;
                int              count           = 0;
                JObject          jObj            = null;
                FirebaseResponse getResponse     = firebaseDBEvent.Get("?orderBy=\"EventId\"&equalTo=\"" + request.EventId + "\"");
                if (getResponse.Success)
                {
                    if (getResponse.JSONContent != null && !getResponse.JSONContent.ToString().Equals("") && !getResponse.JSONContent.ToString().Equals("null") && !getResponse.JSONContent.ToString().Equals("{}"))
                    {
                        getResponseJSON = getResponse.JSONContent;
                        jObj            = JObject.Parse(getResponseJSON);
                        count           = jObj.Count;
                        foreach (var result in jObj)
                        {
                            Console.WriteLine(result.Key);
                            getResponseJSON = (string)result.Value["EventId"];

                            if (getResponseJSON == request.EventId)
                            {
                                FirebaseResponse patchInstanceId = firebaseDBEvent
                                                                   .NodePath(result.Key + "/InstanceId")
                                                                   .Patch("{\"" + request.InstanceId + "\":\"true\"}");
                                Console.WriteLine(patchInstanceId.Success);
                                if (patchInstanceId.Success)
                                {
                                    isExist = true;
                                    return(true);
                                }
                            }
                        }
                    }
                }

                if (!isExist)
                {
                    jObj        = null;
                    count       = 0;
                    getResponse = firebaseDBEvent.Get();
                    if (getResponse.Success)
                    {
                        if (getResponse.JSONContent != null && !getResponse.JSONContent.ToString().Equals("") && !getResponse.JSONContent.ToString().Equals("null") && !getResponse.JSONContent.ToString().Equals("{}"))
                        {
                            getResponseJSON = getResponse.JSONContent;
                            jObj            = JObject.Parse(getResponseJSON);
                            count           = jObj.Count;
                        }
                    }
                    Console.WriteLine("Patch Login Request");
                    FirebaseResponse patchRequest = firebaseDBEvent.Patch("{\"E" + (count + 1) + "\":{\"EventId\":\"" + request.EventId + "\",\"EventName\":\"" + request.EventName + "\",\"InstanceId\":{\"" + request.InstanceId + "\":\"true\"}}}");
                    Console.WriteLine(patchRequest.Success);
                    if (patchRequest.Success)
                    {
                        return(true);
                    }
                }
            }
            catch (Exception Ex)
            {
                throw Ex;
            }
            return(false);
        }
        public bool ChangeSubscriberEvent(string oldInstanceId, string currentInstanceId)
        {
            try
            {
                string           getResponseJSON = "";
                bool             ChangesMade     = false;
                bool             isSubscribed    = false;
                int              count           = 0;
                JObject          jObj            = null;
                FirebaseResponse getResponse     = firebaseDBEvent.Get();
                if (getResponse.Success)
                {
                    if (getResponse.JSONContent != null && !getResponse.JSONContent.ToString().Equals("") && !getResponse.JSONContent.ToString().Equals("null") && !getResponse.JSONContent.ToString().Equals("{}"))
                    {
                        getResponseJSON = getResponse.JSONContent;
                        jObj            = JObject.Parse(getResponseJSON);
                        count           = jObj.Count;
                        foreach (var result in jObj)
                        {
                            Console.WriteLine(result.Key);
                            //getResponseJSON = (string)result.Value["EventId"];
                            getResponseJSON = result.Value["InstanceId"].ToString();

                            if (!getResponseJSON.ToString().Equals("") && !getResponseJSON.ToString().Equals("null") && !getResponseJSON.ToString().Equals("{}"))
                            {
                                JObject instanceJson = JObject.Parse(getResponseJSON);
                                Console.WriteLine(getResponseJSON);
                                foreach (var instances in instanceJson)
                                {
                                    Console.WriteLine(instances.Key);
                                    if (!instances.Key.Equals("") && (instances.Key == oldInstanceId))
                                    {
                                        isSubscribed = true;
                                        Console.WriteLine("DELETE Request");
                                        FirebaseResponse deleteResponse = firebaseDBEvent
                                                                          .NodePath(result.Key.ToString() + "/InstanceId/" + oldInstanceId).Delete();

                                        Console.WriteLine(deleteResponse.Success);
                                        if (deleteResponse.Success)
                                        {
                                            FirebaseResponse patchInstanceId = firebaseDBEvent.NodePath(result.Key + "/InstanceId")
                                                                               .Patch("{\"" + currentInstanceId + "\":\"true\"}");
                                            Console.WriteLine(patchInstanceId.Success);
                                            if (patchInstanceId.Success)
                                            {
                                                ChangesMade = true;
                                                break;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }

                if ((isSubscribed == false) || (isSubscribed && ChangesMade))
                {
                    return(true);
                }
            }
            catch (Exception Ex)
            {
                throw Ex;
            }
            return(false);
        }
        public string GetSubscribedVenue(LoginRequest request)
        {
            string response = "";

            try
            {
                string getResponseJSON = "";
                IList <SubscribeVenueRequest> venueList = new List <SubscribeVenueRequest>();
                int              count       = 0;
                JObject          jObj        = null;
                FirebaseResponse getResponse = firebaseDBVenue.Get();
                if (getResponse.Success)
                {
                    if (getResponse.JSONContent != null && !getResponse.JSONContent.ToString().Equals("") && !getResponse.JSONContent.ToString().Equals("null") && !getResponse.JSONContent.ToString().Equals("{}"))
                    {
                        getResponseJSON = getResponse.JSONContent;
                        jObj            = JObject.Parse(getResponseJSON);
                        count           = jObj.Count;
                        foreach (var result in jObj)
                        {
                            SubscribeVenueRequest subscribeRequest = null;
                            //Console.WriteLine(result.Key);
                            if (result.Value["InstanceId"] != null)
                            {
                                getResponseJSON = result.Value["InstanceId"].ToString();
                            }
                            else
                            {
                                getResponseJSON = "";
                            }

                            if (!getResponseJSON.ToString().Equals("") && !getResponseJSON.ToString().Equals("null") && !getResponseJSON.ToString().Equals("{}"))
                            {
                                JObject instanceJson = JObject.Parse(getResponseJSON);
                                Console.WriteLine(getResponseJSON);
                                foreach (var instances in instanceJson)
                                {
                                    Console.WriteLine(instances.Key);
                                    if (!instances.Key.Equals("") && (instances.Key == request.InstanceId))
                                    {
                                        subscribeRequest           = new SubscribeVenueRequest();
                                        subscribeRequest.VenueId   = result.Value["VenueId"].ToString();
                                        subscribeRequest.VenueName = result.Value["VenueName"].ToString();
                                        venueList.Add(subscribeRequest);
                                        break;
                                    }
                                }
                            }
                        }
                    }
                }

                if (venueList.Count > 0)
                {
                    var json = new JavaScriptSerializer().Serialize(venueList);
                    response = json.ToString();
                }
            }
            catch (Exception Ex)
            {
                throw Ex;
            }
            return(response);
        }