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; } } }