2017-09-23 10:08:18 +02:00
using System ;
2017-09-08 19:39:13 +02:00
2021-02-18 11:06:02 +01:00
namespace Umbraco.Cms.Core.Trees
2017-09-08 19:39:13 +02:00
{
[AttributeUsage(AttributeTargets.Class)]
public sealed class SearchableTreeAttribute : Attribute
{
2019-05-31 20:29:00 +02:00
public const int DefaultSortOrder = 1000 ;
2019-10-07 22:10:21 +02:00
public string ServiceName { get ; }
public string MethodName { get ; }
public int SortOrder { get ; }
2017-09-08 19:39:13 +02:00
/// <summary>
2019-10-07 22:10:21 +02:00
/// This constructor will assume that the method name equals `format(searchResult, appAlias, treeAlias)`.
2017-09-08 19:39:13 +02:00
/// </summary>
2019-10-07 22:10:21 +02:00
/// <param name="serviceName">Name of the service.</param>
public SearchableTreeAttribute ( string serviceName )
: this ( serviceName , string . Empty )
{ }
2019-05-31 20:29:00 +02:00
/// <summary>
2019-10-07 22:10:21 +02:00
/// This constructor defines both the Angular service and method name to use.
2019-05-31 20:29:00 +02:00
/// </summary>
2019-10-07 22:10:21 +02:00
/// <param name="serviceName">Name of the service.</param>
/// <param name="methodName">Name of the method.</param>
public SearchableTreeAttribute ( string serviceName , string methodName )
: this ( serviceName , methodName , DefaultSortOrder )
{ }
2017-09-08 19:39:13 +02:00
/// <summary>
2019-10-07 22:10:21 +02:00
/// This constructor defines both the Angular service and method name to use and explicitly defines a sort order for the results
2017-09-08 19:39:13 +02:00
/// </summary>
2019-10-07 22:10:21 +02:00
/// <param name="serviceName">Name of the service.</param>
/// <param name="methodName">Name of the method.</param>
/// <param name="sortOrder">The sort order.</param>
/// <exception cref="ArgumentNullException">serviceName
/// or
/// methodName</exception>
/// <exception cref="ArgumentException">Value can't be empty or consist only of white-space characters. - serviceName</exception>
public SearchableTreeAttribute ( string serviceName , string methodName , int sortOrder )
2017-09-08 19:39:13 +02:00
{
2019-10-07 22:10:21 +02:00
if ( serviceName = = null ) throw new ArgumentNullException ( nameof ( serviceName ) ) ;
if ( string . IsNullOrWhiteSpace ( serviceName ) ) throw new ArgumentException ( "Value can't be empty or consist only of white-space characters." , nameof ( serviceName ) ) ;
2017-09-08 19:39:13 +02:00
ServiceName = serviceName ;
2019-10-07 22:10:21 +02:00
MethodName = methodName ? ? throw new ArgumentNullException ( nameof ( methodName ) ) ;
SortOrder = sortOrder ;
2017-09-08 19:39:13 +02:00
}
}
2017-09-23 10:08:18 +02:00
}