diff --git a/devdocs/todo.txt b/devdocs/todo.txt
index 829f41a3..7914acdd 100644
--- a/devdocs/todo.txt
+++ b/devdocs/todo.txt
@@ -5,11 +5,24 @@ Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOiIxNTQ0NTU5NzAwIiwiZXhwIjoi
## IMMEDIATE ITEMS
+ User - implement filter on usertype so we have at least one enum filter, also these filters are going to be used internally by a lot of code
+ to fill pick lists and such in the UI so they must support most things I would need to filter by inluding enums.
+ - No need for other enum filters just yet, add them as required so there's no YAGNI happening.
- User and any other getmany LISTS - replicate from widget list when above is done
+ Widget and user picklist, modify to use filter and sort criteria, remove the startswith built in filter
+ - Fix up the old tests for picklists and replace with new test using filter ID
+ - Don't forget to test with no filter ID to ensure still works as normal (default picklist should sort by alpha, need extra default method for sql query)
+ User
+ - Create one filter and sort test that can be adapted for all other objects so we know each object has one basic test for it's filter and sort code
+ - Probably just filter by name and sort by active to be most universal
+
+ NEXT
+ - This should be the point that the lists code is concluded and can move on to the other SERVER items below then back to client stuff in the middle here
- TODO after CLIENT testing:
+-----------------------
+
+TODO CLIENT STUFF
- LIST
- Overall list menu toolbar at top with following icons:
- Add new item
@@ -66,9 +79,9 @@ Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOiIxNTQ0NTU5NzAwIiwiZXhwIjoi
- broken rule display
+----------------
-
-TODO SERVER
+TODO SERVER STUFF
- ProcessObjectKeywords improvement
-Should just be able to pass the object to be processed to a method that will automatically find the Name field and all text fields and process it accordingly
- May need a hint if there isn't a specific "Name" field but that's probably so rare that can just leave that out and continue the old way for any object without a Name
@@ -92,11 +105,17 @@ TODO SERVER
- Wherever I am currently storing time zone that's where these other settings need to be
- TODO: Make sure private data filters get deleted with users who created them
+ - TAGS: REally need to have a think about how tags are used in the UI, probably need a autofill route that has a source of used or common tags to drive it
+ - so user can type first fiew characters adn select
+ - So consistency is maintained and not sloppy multiple spellings
+ - Maybe a db stored procedure and trigger or biz code that feeds a consolidated tag table of all entered tags in the system?
+ - Maybe a reference count for each tag to drive a tag cloud feature and also a order by commonality feature when offering and also to know when to remove the tag repository when no one is using that tag anymore in any records
+-----------------
-
+TODO AFTER ABOVE:
diff --git a/server/AyaNova/Controllers/UserController.cs b/server/AyaNova/Controllers/UserController.cs
index 2f199e5a..044ec7b4 100644
--- a/server/AyaNova/Controllers/UserController.cs
+++ b/server/AyaNova/Controllers/UserController.cs
@@ -88,6 +88,33 @@ namespace AyaNova.Api.Controllers
+ ///
+ /// Get filter and sort options
+ ///
+ /// Required roles:
+ /// BizAdminFull, InventoryFull, BizAdminLimited, InventoryLimited, TechFull, TechLimited, Accounting
+ ///
+ ///
+ /// Filter options
+ [HttpGet("FilterOptions")]
+ public ActionResult FilterOptions()
+ {
+ if (serverState.IsClosed)
+ return StatusCode(503, new ApiErrorResponse(ApiErrorCode.API_CLOSED, null, serverState.Reason));
+
+ //Instantiate the business object handler
+ UserBiz biz = UserBiz.GetBiz(ct, HttpContext);
+
+ if (!Authorized.IsAuthorizedToReadFullRecord(HttpContext.Items, biz.BizType))
+ return StatusCode(401, new ApiNotAuthorizedResponse());
+
+ return Ok(new
+ {
+ data = UserBiz.FilterOptions(biz.UserLocaleId)
+ });
+ }
+
+
///
/// Get paged list of Users
///
diff --git a/server/AyaNova/Controllers/WidgetController.cs b/server/AyaNova/Controllers/WidgetController.cs
index e6a94aca..ffb220ef 100644
--- a/server/AyaNova/Controllers/WidgetController.cs
+++ b/server/AyaNova/Controllers/WidgetController.cs
@@ -79,7 +79,7 @@ namespace AyaNova.Api.Controllers
///
- /// Get filter options
+ /// Get filter and sort options
///
/// Required roles:
/// BizAdminFull, InventoryFull, BizAdminLimited, InventoryLimited, TechFull, TechLimited, Accounting