Example #1
0
        async void Handle_LoginClicked(object sender, System.EventArgs e)
        {
            if (string.IsNullOrEmpty(viewModel.TenancyName))
            {
                viewModel.Message = "Please enter valid campus key";
                return;
            }
            if (string.IsNullOrEmpty(viewModel.UsernameOrEmailAddress))
            {
                viewModel.Message = "Please enter valid Username";
                return;
            }
            if (string.IsNullOrEmpty(viewModel.Password))
            {
                viewModel.Message = "Please enter valid password";
                return;
            }
            viewModel.IsBusy  = true;
            viewModel.Message = "Attempting to log in";
            var creds = await Authentication.AttemptToAuthenticate(viewModel.UsernameOrEmailAddress, viewModel.Password, viewModel.TenancyName);

            if (creds.IsAuthenticated)
            {
                if (Settings.IsRegistered)
                {
                    string longlat = await ThisDevice.GetLongLatString();

                    viewModel.Message = "Log in successful, registering device";
                    creds             = await Authentication.Register(new Credentials()
                    {
                        Username    = creds.Username,
                        Password    = creds.Password,
                        TenancyName = creds.TenancyName,
                        IpAddress   = ThisDevice.GetLocalIPAddress(),
                        MAC         = ThisDevice.GetMAC(),
                        Version     = ThisDevice.GetOSVersion(),
                        Device      = ThisDevice.GetDescription(),
                        GeoLocation = longlat
                    });

                    viewModel.Message = "Device registered";
                    //save info permanently
                    Settings.IsRegistered = true;
                    Settings.TenancyName  = creds.TenancyName;
                    Settings.Username     = creds.Username;
                    Settings.Password     = creds.Password;
                    Settings.IsRegistered = creds.IsRegistered;
                    viewModel.IsBusy      = false;
                    viewModel.Message     = "Going to dashbaord";
                }
                await Navigation.PushAsync(new Dashboard());

                //i don't want the user to be able to go back to this page
                Navigation.RemovePage(this);
            }
            else
            {
                viewModel.Message = "Log in failed";
            }
            viewModel.IsBusy = false;
        }