void FetchDriverInfo(string id)
        {
            DatabaseReference dbref = Database.DefaultInstance.GetRootReference().GetChild("drivers/" + id);

            dbref.ObserveSingleEvent(DataEventType.Value, (DataSnapshot snapshot) =>
            {
                if (snapshot.GetValue <NSObject>() != NSNull.Null)
                {
                    string email, fullname, phone;

                    if (snapshot.GetChildSnapshot("email").GetValue <NSObject>() != NSNull.Null)
                    {
                        email    = snapshot.GetChildSnapshot("email").GetValue <NSObject>().ToString();
                        fullname = snapshot.GetChildSnapshot("fullname").GetValue <NSObject>().ToString();
                        phone    = snapshot.GetChildSnapshot("phone").GetValue <NSObject>().ToString();

                        //Save driver details to NSUser Defaults
                        var userdefaults = NSUserDefaults.StandardUserDefaults;
                        userdefaults.SetString(phone, "phone");
                        userdefaults.SetString(email, "email");
                        userdefaults.SetString(fullname, "fullname");
                        userdefaults.SetString(id, "driver_id");

                        HideProgressBar();

                        MainTabController tabController      = this.Storyboard.InstantiateViewController("MainTabController") as MainTabController;
                        tabController.ModalPresentationStyle = UIModalPresentationStyle.FullScreen;
                        PresentViewController(tabController, true, null);
                    }
                }
                else
                {
                    HideProgressBar();
                    /// dont proceed.
                    var alert = UIAlertController.Create("Alert", "Login was not successful", UIAlertControllerStyle.Alert);
                    alert.AddAction(UIAlertAction.Create("Ok", UIAlertActionStyle.Default, null));
                    PresentViewController(alert, true, null);
                }
            });
        }
        private void RegisterButton_TouchUpInside(object sender, EventArgs e)
        {
            string fullname, phone, email, password;

            fullname = fullnameText.Text;
            phone    = phoneText.Text;
            email    = emailText.Text;
            password = passwordText.Text;

            if (fullname.Length < 4)
            {
                var alert = UIAlertController.Create("Alert", "Please enter a valid name", UIAlertControllerStyle.Alert);
                alert.AddAction(UIAlertAction.Create("Ok", UIAlertActionStyle.Default, null));
                PresentViewController(alert, true, null);

                return;
            }
            else if (phone.Length < 9)
            {
                var alert = UIAlertController.Create("Alert", "Please enter a valid phone number", UIAlertControllerStyle.Alert);
                alert.AddAction(UIAlertAction.Create("Ok", UIAlertActionStyle.Default, null));
                PresentViewController(alert, true, null);

                return;
            }
            else if (!email.Contains("@"))
            {
                var alert = UIAlertController.Create("Alert", "Please enter a valid email", UIAlertControllerStyle.Alert);
                alert.AddAction(UIAlertAction.Create("Ok", UIAlertActionStyle.Default, null));
                PresentViewController(alert, true, null);

                return;
            }
            else if (password.Length < 8)
            {
                var alert = UIAlertController.Create("Alert", "Please enter a password upto 8 characters", UIAlertControllerStyle.Alert);
                alert.AddAction(UIAlertAction.Create("Ok", UIAlertActionStyle.Default, null));
                PresentViewController(alert, true, null);

                return;
            }


            ShowProgressBar("Registering you ...");
            Auth.DefaultInstance.CreateUser(email, password, (AuthDataResult authDataResult, NSError error) =>
            {
                if (error == null)
                {
                    var driver = authDataResult.User.Uid;

                    if (driver != null)
                    {
                        var driverDictionary = new NSDictionary
                                               (
                            "fullname", fullname,
                            "email", email,
                            "phone", phone
                                               );

                        //save driver details to Firebase Database
                        DatabaseReference driverRef = Database.DefaultInstance.GetRootReference().GetChild("drivers/" + authDataResult.User.Uid);
                        driverRef.SetValue <NSDictionary>(driverDictionary);

                        //Save driver details to NSUser Defaults
                        var userdefaults = NSUserDefaults.StandardUserDefaults;
                        userdefaults.SetString(phone, "phone");
                        userdefaults.SetString(email, "email");
                        userdefaults.SetString(fullname, "fullname");
                        userdefaults.SetString(authDataResult.User.Uid, "driver_id");

                        HideProgressBar();

                        MainTabController tabController      = this.Storyboard.InstantiateViewController("MainTabController") as MainTabController;
                        tabController.ModalPresentationStyle = UIModalPresentationStyle.FullScreen;
                        PresentViewController(tabController, true, null);
                    }
                }
                else
                {
                    HideProgressBar();
                    var alert = UIAlertController.Create("Error", error.LocalizedDescription, UIAlertControllerStyle.Alert);
                    alert.AddAction(UIAlertAction.Create("Ok", UIAlertActionStyle.Default, null));
                    PresentViewController(alert, true, null);
                }
            });
        }