public async Task <bool> LoginAsync(string username, string password, bool clearLocalData)
        {
            // login
            var token = await RemoteLoginAsync(username, password);

            //if logged
            if (!string.IsNullOrEmpty(token))
            {
                var           tokenHandler = new JwtSecurityTokenHandler();
                SecurityToken validatedToken;
                var           tokenValidationParameters = new TokenValidationParameters();
                var           readToken = tokenHandler.ReadJwtToken(token);
                var           claim     = readToken.Claims.First(c => c.Type == "unique_name");

                var userId = Guid.Parse(claim.Value);
                Preferences.Set(PreferencesKeys.JWTTOKEN, token);
                Preferences.Set(PreferencesKeys.IsUserLogged, true);
                Preferences.Set(PreferencesKeys.UserExternalId, userId.ToString());
                settingsViewModel.RefreshUserButtons();

                if (clearLocalData)
                {
                    //clear DB
                    await syncMobileService.CleanDataBaseAsync();
                }

                //set externalId
                var user = await this.userRepository.GetFirstUserAsync();

                user.EditExternalId(userId.ToString());
                await userRepository.UpdateUserAsync(user);

                //sync
                //await syncMobileService.SyncAsync();

                return(true);
            }
            else
            {
                return(false);
            }
        }