예제 #1
0
        private async void RegisterNewUserAction()
        {
            if (NewUserEmail == null || NewUserName == null || NewUserPassword == null || NewUserPasswordConfirm == null)
            {
                await App.Current.MainPage.DisplayAlert("Error", "Email, Name and Password are not optional", "OK");

                return;
            }
            if (NewUserPassword != NewUserPasswordConfirm)
            {
                await App.Current.MainPage.DisplayAlert("Error", "Passwords must match, please make sure of that in order to reset the password", "OK");

                return;
            }

            if (NewUserEmail != "" && NewUserPassword != "")
            {
                Func <Task> registerNewUser = async() =>
                {
                    MowardsUser NewUser =
                        new MowardsUser()
                    {
                        Email     = NewUserEmail,
                        Password  = NewUserPassword,
                        BirthDate = NewUserBirthDate,
                        Country   = NewUserCountry,
                        Fullname  = NewUserName
                                    //Picture = NewUserPicture
                    };

                    var response =
                        await HttpClient.PostDetails <string, MowardsUser>(
                            Utils.USER_URL, NewUser, true);

                    if (response == "User was created.")
                    {
                        Func <Task> executeLogin = async() => {
                            Username = NewUserEmail;
                            Password = NewUserPassword;
                            await ExecuteLogin();
                        };
                        await ExecuteSafeOperation(executeLogin);
                    }
                };
                await ExecuteSafeOperation(registerNewUser);
            }
        }
예제 #2
0
        private async void SaveEditUser()
        {
            Func <Task> saveEditUser = new Func <Task>(
                async() =>
            {
                MowardsHttp client = new MowardsHttp();

                string url      = Utils.USER_URL;
                MowardsUser usr = new MowardsUser()
                {
                    Email = CurrentUser.Email, Fullname = EditUserNewFullName, BirthDate = EditUserNewBirthday, Country = EditUserNewCountry
                };

                CurrentUser = await client.Put <MowardsUser>(
                    url, usr);
                //CurrentUser.Picture = "User_104px.png";
                await App.Current.MainPage.DisplayAlert("Result", CurrentUser.Email + " has been edited!", "OK");
                SetEditValuesCurrentUser();
            }
                );

            await ExecuteSafeOperation(saveEditUser);
        }
예제 #3
0
        private async Task ExecuteLogin()
        {
            LoginInfo userCredentials = new LoginInfo()
            {
                Username = Username,
                Password = Password
            };

            var tokenInformation =
                await HttpClient.PostDetails <TokenInformation, LoginInfo>(
                    Utils.AUTH_CONTROLLER, userCredentials, true);

            if (App.Current.Properties.ContainsKey(Utils.TOKEN_KEY))
            {
                App.Current.Properties[Utils.TOKEN_KEY] = tokenInformation.Token;
            }
            else
            {
                App.Current.Properties.Add(Utils.TOKEN_KEY, tokenInformation.Token);
            }
            userCredentials.Token = tokenInformation.Token;

            if (RememberMe)
            {
                var realmInstance = Realm.GetInstance(Utils.REALM_DB_NAME);
                var localUserData = realmInstance.All <LoginInfo>().Where(
                    user => user.Username == Username);
                if (localUserData.Count() == 0)
                {
                    realmInstance.Write(() => {
                        realmInstance.Add(userCredentials);
                    });
                }
                else
                {
                    var userInstance = localUserData.FirstOrDefault();
                    if (userInstance.Token != userCredentials.Token)
                    {
                        realmInstance.Write(() => userInstance.Token = userCredentials.Token);
                    }
                }
                localUserData.Count();
            }

            //Next Line to be discussed as how to set current user information.
            UserViewModel uvm = ViewModelFactory.GetInstance <UserViewModel>();
            MowardsUser   mu  = await uvm.SetUserFullInformation(Username);

            NavigationPage navigation = new NavigationPage(new MasterDetailContent());
            ContentPage    menu       = new MasterDetailMenu();

            navigation.BarBackgroundColor = Color.Black;
            navigation.BarTextColor       = Color.White;

            App.Current.MainPage = new MasterDetailMaster
            {
                Master = menu,
                Detail = navigation
            };
            //App.Current.MainPage = new CategoriesFilterView();
        }