public async Task <Firstname> GenerateAsync(Gender gender, Country country) { List <string> languages = country.Languages .Select(l => l.Value.ToLower()) .ToList(); Maybe <List <FirstnameRecord> > recordsMaybe = await _firstnameRecordsLoader.GetRecordsAsync(); List <FirstnameRecord> records = recordsMaybe .ValueOrThrow(new ApplicationException("No records were loaded. Cannot generate Firstname.")); // filter records List <FirstnameRecord> firstnamesRecords = records .Where(r => r.Genders.Contains(gender) && r.Frequency > 0d && languages.Any(l => r.Languages.Contains(l))) .ToList(); if (firstnamesRecords == null) { throw new ApplicationException("Cannot find any firstname record."); } FirstnameRecord record = _listRandomiser.GetRandomisedItem(firstnamesRecords); return(new Firstname(record.Firstname)); }
public Firstname Generate(Gender gender, Country country) { List <string> languages = country.Languages .Select(l => l.Value.ToLower()) .ToList(); List <FirstnameRecord> firstnamesRecords = _firstnameRecordsLoader.GetRecords().Value .Where(r => r.Genders.Contains(gender) && r.Frequency > 0d && languages.Any(l => r.Languages.Contains(l))) .ToList(); if (firstnamesRecords == null) { throw new ApplicationException("Cannot find any firstname record."); } FirstnameRecord record = _listRandomiser.GetRandomisedItem(firstnamesRecords); return(new Firstname(record.Firstname)); }