namespace Umbraco.Cms.Core.Models;
public static class PropertyGroupExtensions
{
private const char AliasSeparator = '/';
///
/// Gets the local alias.
///
/// The property group.
///
/// The local alias.
///
public static string? GetLocalAlias(this PropertyGroup propertyGroup) => GetLocalAlias(propertyGroup.Alias);
internal static string? GetLocalAlias(string alias)
{
var lastIndex = alias?.LastIndexOf(AliasSeparator) ?? -1;
if (lastIndex != -1)
{
return alias?.Substring(lastIndex + 1);
}
return alias;
}
internal static string? GetParentAlias(string? alias)
{
var lastIndex = alias?.LastIndexOf(AliasSeparator) ?? -1;
if (lastIndex == -1)
{
return null;
}
return alias?.Substring(0, lastIndex);
}
///
/// Updates the local alias.
///
/// The property group.
/// The local alias.
public static void UpdateLocalAlias(this PropertyGroup propertyGroup, string localAlias)
{
var parentAlias = propertyGroup.GetParentAlias();
if (string.IsNullOrEmpty(parentAlias))
{
propertyGroup.Alias = localAlias;
}
else
{
propertyGroup.Alias = parentAlias + AliasSeparator + localAlias;
}
}
///
/// Gets the parent alias.
///
/// The property group.
///
/// The parent alias.
///
public static string? GetParentAlias(this PropertyGroup propertyGroup) => GetParentAlias(propertyGroup.Alias);
///
/// Updates the parent alias.
///
/// The property group.
/// The parent alias.
public static void UpdateParentAlias(this PropertyGroup propertyGroup, string parentAlias)
{
var localAlias = propertyGroup.GetLocalAlias();
if (string.IsNullOrEmpty(parentAlias))
{
propertyGroup.Alias = localAlias!;
}
else
{
propertyGroup.Alias = parentAlias + AliasSeparator + localAlias;
}
}
}