72 lines
1.8 KiB
C#
72 lines
1.8 KiB
C#
using System.ComponentModel.DataAnnotations;
|
|
using Tiku.Application.Content;
|
|
|
|
namespace Tiku.Api.Contracts;
|
|
|
|
public sealed class ContentNavigationQueryDto
|
|
{
|
|
[StringLength(100)]
|
|
public string? TenantCode { get; set; }
|
|
|
|
public Guid? RegionId { get; set; }
|
|
|
|
public Guid? EntryId { get; set; }
|
|
|
|
public Guid? NodeId { get; set; }
|
|
|
|
public Guid? CollectionId { get; set; }
|
|
|
|
[StringLength(64)]
|
|
[RegularExpression("^(root|[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$")]
|
|
public string? ParentId { get; set; }
|
|
|
|
[StringLength(50)]
|
|
public string? EntryType { get; set; }
|
|
|
|
[StringLength(50)]
|
|
public string? CollectionType { get; set; }
|
|
|
|
[StringLength(50)]
|
|
public string? Mode { get; set; }
|
|
|
|
[StringLength(50)]
|
|
public string? MarkerType { get; set; }
|
|
|
|
[StringLength(100)]
|
|
public string? Keyword { get; set; }
|
|
|
|
public bool IncludeHidden { get; set; }
|
|
|
|
public bool IncludeInactive { get; set; }
|
|
|
|
[Range(1, 1000)]
|
|
public int? Limit { get; set; }
|
|
|
|
public ContentNavigationFilter ToFilter(Guid tenantId)
|
|
{
|
|
var parentWasSpecified = ParentId is not null;
|
|
var parentIsRoot = string.Equals(ParentId, "root", StringComparison.OrdinalIgnoreCase);
|
|
Guid? parentId = parentIsRoot || string.IsNullOrWhiteSpace(ParentId)
|
|
? null
|
|
: Guid.Parse(ParentId);
|
|
|
|
return new ContentNavigationFilter(
|
|
tenantId,
|
|
RegionId,
|
|
EntryId,
|
|
NodeId,
|
|
CollectionId,
|
|
parentId,
|
|
parentWasSpecified,
|
|
parentIsRoot,
|
|
EntryType,
|
|
CollectionType,
|
|
Mode,
|
|
MarkerType,
|
|
Keyword,
|
|
IncludeHidden,
|
|
IncludeInactive,
|
|
Limit);
|
|
}
|
|
}
|