From bddc3222d83f891010ba194bab9cd8e22969cdb2 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Wed, 13 May 2020 00:37:01 +0000 Subject: [PATCH] --- devdocs/todo.txt | 41 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 38 insertions(+), 3 deletions(-) diff --git a/devdocs/todo.txt b/devdocs/todo.txt index 688b3fe7..b9af2537 100644 --- a/devdocs/todo.txt +++ b/devdocs/todo.txt @@ -1,6 +1,20 @@ - PRIORITY - ALWAYS Lowest level stuff first =-=-=-=- +todo: Opening the widgets list on a new empty db I got this error at server: + 2020-05-02 13:20:40.4589|ERROR|Server|Error=>System.ArgumentNullException: Value cannot be null. (Parameter 'AyaDataList:GetCustomFieldDefinitionsForList, Custom field object type Widget has no FormCustom defined') + at AyaNova.DataList.AyaDataList.GetCustomFieldDefinitionsForList() in C:\data\code\raven\server\AyaNova\DataList\AyaDataList.cs:line 150 + at AyaNova.DataList.AyaDataList.GenerateListColumnsJSONFromListView(JArray listViewArray) in C:\data\code\raven\server\AyaNova\DataList\AyaDataList.cs:line 49 + at AyaNova.DataList.DataListFetcher.GetResponseAsync(String DataListKey, AyContext ct, ListOptions listOptions, Int64 UserId, AuthorizationRoles UserRoles) in C:\data\code\raven\server\AyaNova\DataList\DataListFetcher.cs:line 182 + at AyaNova.Api.Controllers.DataListController.List(ListOptions listOptions) in C:\data\code\raven\server\AyaNova\Controllers\DataListController.cs:line 76 + at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfIActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments) + at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.g__Logged|12_1(ControllerActionInvoker invoker) + at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) + at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context) + at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) + at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) + at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) +todo: server bizobjectnamefetcherdirect isn't handling workorders properly (or other serialized objects) + - adde special handling if the name of the "name" column is "serial" or maybe can just run a special query instead? todo: check non-ops user can login during seeding operation todo: BizRoles.cs seems to get hammered on every single request, is it efficient? - Why is it not cached in some way? @@ -9,6 +23,7 @@ todo: BizRoles.cs seems to get hammered on every single request, is it efficient if do so then ideally put them into the biz object responsible? - it has to instantiate that anyway on any meaningful operation or...is this worse than actually caching in a lifetime cache because it will need to load on every route hit whereas a lifteimte cache is just there from being loaded once? +--- todo: API REFACTORING (note: workordercontroller / biz should be following all these rules so it's the template if need reference) todo: consider and then get rid of PATCH in all routes unless compelling reason to keep @@ -29,11 +44,21 @@ todo: Routes should check rights *BEFORE* they fetch the object, not after, all i.e. delete route instantiates biz object, then it fetchs object from db *then* it checks if they have rights to delete (generically, not specific to that object) This is out of order as it triggers a db call even if they have no rights to do it todo: all biz objects "ExistsAsync" is this required / necessary? +--- todo: add query fail logging to datalist just like done with picklist so in production can catch mysterious problems more easily todo: AUTO ID GENERATOR change to a dedicated spot in global rather than inferring as it is not right practically for reasons Get the auto-id most recent values at boot time - internal static void SetMostRecentAutoIdValuesFromDatabase(AyaNova.Models.AyContext ct) + internal static void SetMostRecentAutoIdValuesFromDatabase(AyaNova.Models.AyContext ct) + Server serialized fields, it should *not* be getting the value from the table but rather have it's own table with last number assigned instead + My plan has flaws, getting the number from teh last number used in the actual table is a bit fucked because it means you could end up with mutiple issues + Instead have central location for storing serial numbers (perhaps one per table type for concurrency efficieny? Though it's a pretty fast operation.) + Do not put in shared object though, i.e. global settings or something because it's going to be it's own thing and require efficient access. + Maybe this is a case for a stored procedure? +todo: change trial detection route that client first hits + - make it a different controller and renamed to something like server ping or "hello" or something friendly and useful + - maybe the route that gets Notifications + - because there could be a notificatoin type that doesn't need logged in users for general server down announcements etc todo: Search get search result for workorder descendents doesn't fit into existing system due to it being a biz object wide feature but workorder having sub-get results - CHILD objects need to point to their parent and be readable in code for searching and for opening objects based on child object - so all child objects need a typeandid of the immediate parent @@ -41,6 +66,13 @@ todo: Search get search result for workorder descendents doesn't fit into existi - Required for opening a search result of a descendent that is not directly openable an - Need parent AyaType as an ENUM ATTRIBUTE in the AyaType table for easy traversal todo: search tables in schema, I think there is a missing index here, need to look at the search query section again as it was changed several times from the original schema creation +todo: add long polling notification route (CLIENT AND SERVER) + https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/3507 + - Need way to acknowledge receipt of long poll info from client to server so that it can be removed or something? + - maybe successfull sending clears it regardless of client? +todo: ability to mass tag items from list (SERVER AND CLIENT) + - also a good way to do an initial implementation of a mass ops UI code +todo: ability to mass rename a tag to something else in all objects (SERVER AND CLIENT) todo: api / server landing page is shitty on a mobile and really just shitty, add a logo or some shit todo: Should server show uptime somewhere? @@ -50,7 +82,10 @@ todo: Is there a log that records past jobs, how long can they be viewed? todo: Rename the link to AyaNova App on the server page to just "AyaNova" todo: translation cjkindex, no way to set this value currently todo: Licensing - make sure tech type use license works properly: a tech license is consumed if a user has **any one** of the four roles of TechFull, TechLimited, SubcontractorFull, SubcontractorLimited -todo: BACKUP & related stuff that should be in v.initial release https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/3369 +todo: OPS routes (SERVER AND CLIENT) + - Backup, restore https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/3369 + - These need to be done fairly early on in order to have shit to play with for testing etc + BACKUP & related stuff that should be in v.initial release https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/3369 todo: (BREAK THIS OUT INTO LATER/NOW/CASES) there are several outstanding AUTHENTICATION related cases in rockfish for RAVEN e.g. https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/1924 https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/1835