private async Task GetLanguageTexts(GetLanguageTextsInput filter) { await WebRequest.Execute(() => appService.GetLanguageTexts(filter), async result => { dataPager.SetList(result); await Task.CompletedTask; }); }
public LanguageTextViewModel(ILanguageAppService appService, IApplicationContext context) { sources = new ObservableCollection <string>(); baseLanguages = new ObservableCollection <LanguageStruct>(); targetLanguages = new ObservableCollection <LanguageStruct>(); input = new GetLanguageTextsInput() { FilterText = "", MaxResultCount = AppConsts.DefaultPageSize, SkipCount = 0 }; this.appService = appService; this.context = context; EditCommand = new DelegateCommand <LanguageTextListDto>(Edit); SearchCommand = new DelegateCommand(Search); dataPager.OnPageIndexChangedEventhandler += LanguageOnPageIndexChangedEventhandler; }
public async Task <PagedResultDto <LanguageTextListDto> > GetLanguageTexts(GetLanguageTextsInput input) { if (input.BaseLanguageName.IsNullOrEmpty()) { var defaultLanguage = await _languageManager.GetDefaultLanguageOrNullAsync(AbpSession.TenantId); if (defaultLanguage == null) { defaultLanguage = (await _languageManager.GetLanguagesAsync(AbpSession.TenantId)).FirstOrDefault(); if (defaultLanguage == null) { throw new Exception("No language found in the application!"); } } input.BaseLanguageName = defaultLanguage.Name; } var source = LocalizationManager.GetSource(input.SourceName); var baseCulture = CultureInfo.GetCultureInfo(input.BaseLanguageName); var targetCulture = CultureInfo.GetCultureInfo(input.TargetLanguageName); var languageTexts = source .GetAllStrings() .Select(localizedString => new LanguageTextListDto { Key = localizedString.Name, BaseValue = _languageTextManager.GetStringOrNull(AbpSession.TenantId, source.Name, baseCulture, localizedString.Name), TargetValue = _languageTextManager.GetStringOrNull(AbpSession.TenantId, source.Name, targetCulture, localizedString.Name, false) }) .AsQueryable(); //Filters if (input.TargetValueFilter == "EMPTY") { languageTexts = languageTexts.Where(s => s.TargetValue.IsNullOrEmpty()); } if (!input.FilterText.IsNullOrEmpty()) { languageTexts = languageTexts.Where( l => l.Key != null && l.Key.IndexOf(input.FilterText, StringComparison.CurrentCultureIgnoreCase) >= 0 || l.BaseValue != null && l.BaseValue.IndexOf(input.FilterText, StringComparison.CurrentCultureIgnoreCase) >= 0 || l.TargetValue != null && l.TargetValue.IndexOf(input.FilterText, StringComparison.CurrentCultureIgnoreCase) >= 0 ); } var totalCount = languageTexts.Count(); //Ordering if (!input.Sorting.IsNullOrEmpty()) { languageTexts = languageTexts.OrderBy(input.Sorting); } //Paging if (input.SkipCount > 0) { languageTexts = languageTexts.Skip(input.SkipCount); } if (input.MaxResultCount > 0) { languageTexts = languageTexts.Take(input.MaxResultCount); } return(new PagedResultDto <LanguageTextListDto>( totalCount, languageTexts.ToList() )); }
public async Task <PagedResultDto <LanguageTextListDto> > GetLanguageTexts(GetLanguageTextsInput input) { return(await cacheManager.GetCache("Language").Get($"{input.BaseLanguageName}-{input.SourceName}-{input.TargetLanguageName}", async() => { //Logger.Info("Languages GetLanguageTexts"); /* Note: This method is used by SPA without paging, MPA with paging. * So, it can both usable with paging or not */ //Normalize base language name if (input.BaseLanguageName.IsNullOrEmpty()) { var defaultLanguage = await applicationLanguageManager.GetDefaultLanguageOrNullAsync(AbpSession.TenantId); if (defaultLanguage == null) { defaultLanguage = (await applicationLanguageManager.GetLanguagesAsync(AbpSession.TenantId)).FirstOrDefault(); if (defaultLanguage == null) { throw new Exception("No language found in the application!"); } } input.BaseLanguageName = defaultLanguage.Name; } var source = LocalizationManager.GetSource(input.SourceName); var baseCulture = CultureInfo.GetCultureInfo(input.BaseLanguageName); var targetCulture = CultureInfo.GetCultureInfo(input.TargetLanguageName); var languageTexts = source .GetAllStrings() .Select(localizedString => new LanguageTextListDto { Key = localizedString.Name, BaseValue = applicationLanguageTextManager.GetStringOrNull(AbpSession.TenantId, source.Name, baseCulture, localizedString.Name), TargetValue = applicationLanguageTextManager.GetStringOrNull(AbpSession.TenantId, source.Name, targetCulture, localizedString.Name, false) }) .AsQueryable(); //Filters if (input.TargetValueFilter == "EMPTY") { languageTexts = languageTexts.Where(s => s.TargetValue.IsNullOrEmpty()); } if (!input.FilterText.IsNullOrEmpty()) { languageTexts = languageTexts.Where( l => (l.Key != null && l.Key.IndexOf(input.FilterText, StringComparison.CurrentCultureIgnoreCase) >= 0) || (l.BaseValue != null && l.BaseValue.IndexOf(input.FilterText, StringComparison.CurrentCultureIgnoreCase) >= 0) || (l.TargetValue != null && l.TargetValue.IndexOf(input.FilterText, StringComparison.CurrentCultureIgnoreCase) >= 0) ); } var totalCount = languageTexts.Count(); //Ordering if (!input.Sorting.IsNullOrEmpty()) { languageTexts = languageTexts.OrderBy(input.Sorting); } //Paging if (input.SkipCount > 0) { languageTexts = languageTexts.Skip(input.SkipCount); } if (input.MaxResultCount > 0) { languageTexts = languageTexts.Take(input.MaxResultCount); } return new PagedResultDto <LanguageTextListDto>( totalCount, languageTexts.ToList() ); })); }