public async Task<AuthenticationReport> Login(string username, string password)
 {
     var report = new AuthenticationReport();
     try
     {
         var message = await ExecuteLoginRequest(username, password);
         var content = await message.Content.ReadAsStringAsync();
         XmlDocument doc = new XmlDocument();
         doc.LoadXml(content);
         var invalidCredentials = doc.DocumentElement.GetElementsByTagName("InvalidCredentialsFault").Count > 0;
         if (invalidCredentials)
         {
             report.Error = WebError.InvalidCredentials;
             return report;
         }
         var userData = GetUserDataFromXml(doc);
         report = new AuthenticationReport(true) { UserData = userData };
     }
     catch (Exception exception)
     {
         var webErrorStatus = Windows.Web.WebError.GetStatus(exception.HResult);
         if (webErrorStatus == WebErrorStatus.HostNameNotResolved)
             report.ErrorMessage = "Please check your internet connection and try again";
         else report.ErrorMessage = "Unknown error. Please try again!";
         return report;
     }
     return report;
 }
 private async Task HandleAuthenticationResult(AuthenticationReport authenticationReport)
 {
     if (authenticationReport.Successful)
     {
         var userData = authenticationReport.UserData;
         _appSettings.Set(StorageKey.SessionId, userData.SessionId);
         _appSettings.Set(StorageKey.UserDisplayName, userData.DisplayName);
         _appSettings.Set(StorageKey.City, userData.City);
         _appSettings.Set(StorageKey.UserStatus, userData.Status);
         _appSettings.Set(StorageKey.Country, userData.Country);
         _appSettings.Set(StorageKey.SessionExpiration, userData.Expiration);
         if (RememberMe)
         {
             _appSettings.Set(StorageKey.Username, Username);
             _appSettings.Set(StorageKey.Password, Password);
         }
         NavigationService.Navigate(typeof(HomeView));
         _statisticsService.RegisterEvent(EventCategory.UserEvent, "logged in", userData.DisplayName);
     }
     else
     {
         switch (authenticationReport.Error)
         {
             case WebError.InvalidCredentials:
                 await
                     _dialogService.ShowMessageDialog(
                         "The credentials are invalid. Please check your username and password.");
                 break;
             case WebError.Unknown:
                 await _dialogService.ShowMessageDialog(authenticationReport.ErrorMessage);
                 break;
         }
     }
 }