private string GenerateName(string category, int recursionCount) { if (recursionCount >= MAX_RECURSION_COUNT) { throw new StackOverflowException("No name can be generated. Choosing another category may help"); } Adjectives = _.List.Shuffle(Adjectives); var adjective = Adjectives.First(); // Take only animals that the first letter is the same as the first letter of the adjective var filteredAnimals = Animals[category].Where(a => a.ToUpper()[0] == adjective.ToUpper()[0]).ToList(); // If we didn't find any matching animals - try again if (!filteredAnimals.Any()) { return(GenerateName(category, ++recursionCount)); } filteredAnimals = _.List.Shuffle(filteredAnimals).ToList(); var name = CultureInfo.CurrentCulture.TextInfo.ToTitleCase($"{adjective} {filteredAnimals.First()}"); // If the name was already given - try again if (PreviousNames.Contains(name)) { return(GenerateName(category, ++recursionCount)); } UpdatePreviousNames(name); return(name); }
public ClientNamesSummaryViewModel(DebtorDetailsResponse debtorDetails) { CurrentName.FirstName = debtorDetails.FirstName; CurrentName.MiddleName = debtorDetails.MiddleName; CurrentName.LastName = debtorDetails.LastName; CurrentNameDisplay = CurrentName.GetFullName(); if (debtorDetails.PreviousNames != null && debtorDetails.PreviousNames.Any()) { PreviousNames = debtorDetails.PreviousNames.Select(x => new ClientName { FirstName = x.FirstName, MiddleName = x.MiddleName, LastName = x.LastName, NameId = x.Id }); PreviousNamesDisplay = PreviousNames.Select(x => x.GetFullName()); } }
private void UpdatePreviousNames(string name) { PreviousNames.Add(name); }