Example #1
0
        public static async Task <HNUserResult> SignUp(HNNewUserContainer newUser)
        {
            HttpClient http    = new HttpClient();
            string     request = _host + "users";

            var c = JsonConvert.SerializeObject(newUser,
                                                Formatting.None,
                                                new JsonSerializerSettings
            {
                NullValueHandling     = NullValueHandling.Ignore,
                MissingMemberHandling = MissingMemberHandling.Ignore
            });
            HttpContent content = new StringContent(c, Encoding.UTF8, "application/json");
            var         res     = await http.PostAsync(request, content);

            var json = await res.Content.ReadAsStringAsync();

            var response = JsonConvert.DeserializeObject <HNUserResult>(json);

            return(response);
        }
Example #2
0
        private async Task RegisterUserAsync()
        {
            #region Validation
            await CheckUniqueEmailAsync();
            await CheckUniqueUsernameAsync();

            if (string.IsNullOrWhiteSpace(New_Username) ||
                New_Username.Length < 6)
            {
                await new MessageDialog("Your username must be at least 6 characters",
                                        "Please enter a valid username").ShowAsync();
            }
            else if (string.IsNullOrWhiteSpace(New_Password) ||
                     New_Password.Length < 8)
            {
                await new MessageDialog("Your password must be at least 8 characters",
                                        "Please enter a valid password").ShowAsync();
            }
            else if (New_Password != New_ConfirmPassword)
            {
                await new MessageDialog("Your passwords must match").ShowAsync();
            }
            else if (string.IsNullOrWhiteSpace(New_Email) || !IsValidEmail(New_Email))
            {
                await new MessageDialog("Please enter a valid email address").ShowAsync();
            }
            else if (!EmailUnique)
            {
                await new MessageDialog("This email address is already taken").ShowAsync();
            }
            else if (!UsernameUnique)
            {
                await new MessageDialog("This username is already taken").ShowAsync();
            }
            #endregion
            else
            {
                #region Build User

                #region Format Languages/Countries
                foreach (var item in New_NativeLanguages)
                {
                    item.language_name = null;
                }
                foreach (var item in New_StudyLanguages)
                {
                    item.language_name = null;
                }
                #endregion

                var newUser = new HNNewUserContainer
                {
                    user = new HNNewUser
                    {
                        name     = New_Username,
                        email    = New_Email,
                        password = New_Password,
                        password_confirmation = New_ConfirmPassword,
                        profile_attributes    = new HNProfileAttributes {
                            interface_id = 1
                        },
                        terms_of_use            = "1",
                        platform                = "android",
                        mail_setting_attributes = new HNMailSettingAttributes {
                            info = false
                        },

                        native_languages_attributes = New_NativeLanguages,
                        study_languages_attributes  = New_StudyLanguages,
                        #region Notifications Attributes
                        notifications_attributes = new ObservableCollection <HNNotificationsAttribute>
                        {
                            new HNNotificationsAttribute
                            {
                                platform = "android",
                                token    = "fRxU1CeWSL0:APA91bFcj4kOiCfgHNIj2UZHeVK3AUK5c1PasVuJQeSei9Mckx1eiC-BV78uaABOWtVXSWHDMFn4sjba8OKmQxdo_c1MibypzeHrhoaEv0e-J54z_5tCRFZw2kiHtrD8RcS61cQa0bqv"
                            }
                        }
                        #endregion
                    }
                };
                #endregion

                try
                {
                    var createdUser = await DataService.SignUp(newUser);

                    LoggerService.LogEvent("User_registered");
                    ApplicationDataContainer localSettings = ApplicationData.Current.LocalSettings;
                    if (createdUser.token != null)
                    {
                        localSettings.Values["API_Token"] = createdUser.token;
                        localSettings.Values["User_ID"]   = createdUser.profile.user_attributes.id;
                    }
                    App.ViewModelLocator.Shell.CheckLoggedIn();
                    App.ViewModelLocator.Main.CurrentUser = App.ViewModelLocator.Shell.CurrentUser;
                    App.ViewModelLocator.Main.InitPageAsync();
                    _navigationService.NavigateTo(typeof(MainPage));
                }
                catch (Exception ex)
                {
                    Debug.WriteLine(ex.Message);
                    if (ex is HttpRequestException)
                    {
                        await new MessageDialog("We're having trouble connecting to the HiNative servers").ShowAsync();
                    }
                    await new MessageDialog("Sign up failed, try a different username and/or email").ShowAsync();
                    LoggerService.LogEvent("Registration_failed");
                }
            }
        }