From 22ac04a35f479592b4eda8cb43142d7168d3df8e Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Wed, 19 Dec 2018 19:28:55 +0000 Subject: [PATCH] --- ...ListController.cs => TagListController.cs} | 23 +++++++++++++++++-- server/AyaNova/biz/TagUtil.cs | 22 ++++++++++++++++++ 2 files changed, 43 insertions(+), 2 deletions(-) rename server/AyaNova/Controllers/{TagPickListController.cs => TagListController.cs} (75%) diff --git a/server/AyaNova/Controllers/TagPickListController.cs b/server/AyaNova/Controllers/TagListController.cs similarity index 75% rename from server/AyaNova/Controllers/TagPickListController.cs rename to server/AyaNova/Controllers/TagListController.cs index 275552aa..cc7f6f3a 100644 --- a/server/AyaNova/Controllers/TagPickListController.cs +++ b/server/AyaNova/Controllers/TagListController.cs @@ -19,7 +19,7 @@ namespace AyaNova.Api.Controllers [Route("api/v{version:apiVersion}/[controller]")] [Produces("application/json")] [Authorize] - public class TagPickListController : Controller + public class TagListController : Controller { private readonly AyContext ct; private readonly ILogger log; @@ -32,7 +32,7 @@ namespace AyaNova.Api.Controllers /// /// /// - public TagPickListController(AyContext dbcontext, ILogger logger, ApiServerState apiServerState) + public TagListController(AyContext dbcontext, ILogger logger, ApiServerState apiServerState) { ct = dbcontext; log = logger; @@ -60,6 +60,25 @@ namespace AyaNova.Api.Controllers + /// + /// Get tag cloud list + /// + /// Required roles: Any + /// + /// The query to filter the returned list by + /// List + [HttpGet("cloudlist")] + public ActionResult GetCloudList([FromQuery]string query) + { + if (!serverState.IsOpen) + { + return StatusCode(503, new ApiErrorResponse(ApiErrorCode.API_CLOSED, null, serverState.Reason)); + } + + return Ok(new ApiOkResponse(TagUtil.CloudListFiltered(ct, query))); + } + + // /// // /// Get all possible enumerated values picklist key names diff --git a/server/AyaNova/biz/TagUtil.cs b/server/AyaNova/biz/TagUtil.cs index 3b569bba..f95ec7de 100644 --- a/server/AyaNova/biz/TagUtil.cs +++ b/server/AyaNova/biz/TagUtil.cs @@ -166,6 +166,28 @@ namespace AyaNova.Biz } } + //Cloud list + public static List CloudListFiltered(AyContext ct, string q) + { + //This path is intended for internal use and accepts that there may not be a filter specified + //however the client will always require a filter to display a tag list for choosing from + if (string.IsNullOrWhiteSpace(q)) + { + return ct.Tag.OrderByDescending(x => x.RefCount).Select(x => new TagCloudItem() { Name = x.Name, ReferenceCount = x.RefCount }).ToList(); + } + else + { + q = NormalizeTag(q); + return ct.Tag.Where(x => x.Name.Contains(q)).OrderByDescending(x => x.RefCount).Select(x => new TagCloudItem() { Name = x.Name, ReferenceCount = x.RefCount }).ToList(); + } + } + }//eoc + + public class TagCloudItem + { + public long ReferenceCount { get; set; } + public string Name { get; set; } + } }//ens