public Task <List <LocalizationModel> > GetLocalizations(LocalizationsSearch search) { if (search == null) { throw new ArgumentNullException(nameof(search)); } Expression <Func <Localization, bool> > predicate = x => x.ResourceKey == search.ResourceKey; if (!string.IsNullOrWhiteSpace(search.Key)) { predicate = predicate.And(x => x.Key.Contains(search.Key.Trim())); } var data = _localizationRepository.Query(predicate).ToList(); var ms = data .GroupBy(x => new { ResourceKey = x.ResourceKey, Key = x.Key }) .Select(x => new LocalizationModel() { ResourceKey = x.Key.ResourceKey, Key = x.Key.Key, Text = x.Select(y => new TextModel() { Text = y.Text, Culture = y.Culture, HasTrans = y.HasTrans }).ToList() }).ToList(); foreach (var m in ms) { foreach (var c in _sqlLocalizationOptions.SupportedCultures) { if (!m.Text.Any(x => x.Culture == c)) { m.Text.Add(new TextModel() { Culture = c.ToString(), HasTrans = false }); } } } foreach (var m in ms) { m.Text = m.Text.Where(x => x.Culture != _sqlLocalizationOptions.DefaultCulture).ToList(); } return(Task.FromResult(ms)); }
public async Task <ActionResult> GetLocalizations([FromQuery] LocalizationsSearch search) { var data = await _localizationService.GetLocalizations(search); return(Ok(data)); }