This code works, but I get the feeling that it could be shorter and simpler. Any ideas?
private void CheckNameCase(Models.PersonalInformationModels.PersonalInformationModel model)
{
// if first middle and last names are all upper or lower case then title case the name
//Name
string firstName = model.NameModel.FirstName;
string upperFirstName;
string lowerFirstName;
if (firstName == null)
{
upperFirstName = null;
lowerFirstName = null;
}
else
{
upperFirstName = model.NameModel.FirstName.ToUpper(new CultureInfo("en-US", false));
lowerFirstName = model.NameModel.FirstName.ToLower(new CultureInfo("en-US", false));
}
string middleName = model.NameModel.MiddleName;
string upperMiddleName;
string lowerMiddleName;
if (middleName == null)
{
upperMiddleName = null;
lowerMiddleName = null;
}
else
{
upperMiddleName = model.NameModel.MiddleName.ToUpper(new CultureInfo("en-US", false));
lowerMiddleName = model.NameModel.MiddleName.ToLower(new CultureInfo("en-US", false));
}
string lastName = model.NameModel.LastName;
string upperLastName;
string lowerLastName;
if (lastName == null)
{
upperLastName = null;
lowerLastName = null;
} else
{
upperLastName = model.NameModel.LastName.ToUpper(new CultureInfo("en-US", false));
lowerLastName = model.NameModel.LastName.ToLower(new CultureInfo("en-US", false));
}
if ((firstName == upperFirstName || firstName == lowerFirstName) && (middleName == upperMiddleName || middleName == lowerMiddleName) && (lastName == upperLastName || lastName == lowerLastName))
{
if(!String.IsNullOrEmpty(model.NameModel.FirstName)){ model.NameModel.FirstName = System.Threading.Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(firstName.ToLower(new CultureInfo("en-US", false))); }
if(!String.IsNullOrEmpty(model.NameModel.MiddleName)){ model.NameModel.MiddleName = System.Threading.Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(middleName.ToLower(new CultureInfo("en-US", false))); }
if(!String.IsNullOrEmpty(model.NameModel.LastName)){model.NameModel.LastName = System.Threading.Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(lastName.ToLower(new CultureInfo("en-US", false))); }
}
//Alternate Name
string altFirstName = model.AlternateNameModel.FirstName;
string upperAltFirstName;
string lowerAltFirstName;
if(altFirstName==null)
{
upperAltFirstName = null;
lowerAltFirstName = null;
}else
{
upperAltFirstName = model.AlternateNameModel.FirstName.ToUpper(new CultureInfo("en-US", false));
lowerAltFirstName = model.AlternateNameModel.FirstName.ToLower(new CultureInfo("en-US", false));
}
string altMiddleName = model.AlternateNameModel.MiddleName;
string upperAltMiddleName;
string lowerAltMiddleName;
if(altMiddleName==null)
{
upperAltMiddleName = null;
lowerAltMiddleName = null;
}else
{
upperAltMiddleName = model.AlternateNameModel.MiddleName.ToUpper(new CultureInfo("en-US", false));
lowerAltMiddleName = model.AlternateNameModel.MiddleName.ToLower(new CultureInfo("en-US", false));
}
string altLastName = model.AlternateNameModel.LastName;
string upperAltLastName;
string lowerAltLastName;
if (altLastName==null)
{
upperAltLastName = null;
lowerAltLastName = null;
} else
{
upperAltLastName = model.AlternateNameModel.LastName.ToUpper(new CultureInfo("en-US", false));
lowerAltLastName = model.AlternateNameModel.LastName.ToLower(new CultureInfo("en-US", false));
}
if ((altFirstName == upperAltFirstName || altFirstName == lowerAltFirstName) && (altMiddleName == upperAltMiddleName || altMiddleName == lowerAltMiddleName) && (altLastName == upperAltLastName || altLastName == lowerAltLastName))
{
if(!String.IsNullOrEmpty(model.AlternateNameModel.FirstName)){model.AlternateNameModel.FirstName = System.Threading.Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(altFirstName.ToLower(new CultureInfo("en-US", false)));}
if(!String.IsNullOrEmpty(model.AlternateNameModel.MiddleName)){model.AlternateNameModel.MiddleName = System.Threading.Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(altMiddleName.ToLower(new CultureInfo("en-US", false)));}
if(!String.IsNullOrEmpty(model.AlternateNameModel.LastName)){ model.AlternateNameModel.LastName = System.Threading.Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(altLastName.ToLower(new CultureInfo("en-US", false))); }
}
}