diff --git a/.vscode/launch.json b/.vscode/launch.json index 8fd97968..0e2049e9 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -53,7 +53,7 @@ "AYANOVA_FOLDER_USER_FILES": "c:\\temp\\RavenTestData\\userfiles", "AYANOVA_FOLDER_BACKUP_FILES": "c:\\temp\\RavenTestData\\backupfiles", "AYANOVA_FOLDER_TEMPORARY_SERVER_FILES": "c:\\temp\\RavenTestData\\tempfiles", - "AYANOVA_SERVER_TEST_MODE": "true", + "AYANOVA_SERVER_TEST_MODE": "false", "AYANOVA_SERVER_TEST_MODE_SEEDLEVEL": "small", "AYANOVA_SERVER_TEST_MODE_TZ_OFFSET": "-7", "AYANOVA_BACKUP_PG_DUMP_PATH": "C:\\data\\code\\postgres_13\\bin\\" diff --git a/server/AyaNova/DataList/InsideUserDataList.cs b/server/AyaNova/DataList/InsideUserDataList.cs index 5e749622..886a32bb 100644 --- a/server/AyaNova/DataList/InsideUserDataList.cs +++ b/server/AyaNova/DataList/InsideUserDataList.cs @@ -9,7 +9,7 @@ namespace AyaNova.DataList public InsideUserDataList() { DefaultListObjectType = AyaType.User; - SQLFrom = "from auser"; + SQLFrom = "from auser left outer join avendor on (auser.vendorid=avendor.id)"; var RoleSet = BizRoles.GetRoleSet(DefaultListObjectType); AllowedRoles = RoleSet.ReadFullRecord | RoleSet.Change; @@ -112,6 +112,16 @@ namespace AyaNova.DataList SqlValueColumnName = "auser.lastlogin" }); + FieldDefinitions.Add(new AyaDataListFieldDefinition + { + TKey = "Vendor", + FieldKey = "uservendor", + UiFieldDataType = (int)UiFieldDataType.Text, + AyaObjectType = (int)AyaType.Vendor, + SqlIdColumnName = "avendor.id", + SqlValueColumnName = "avendor.name" + }); + } }//eoc diff --git a/server/AyaNova/DataList/OutsideUserDataList.cs b/server/AyaNova/DataList/OutsideUserDataList.cs new file mode 100644 index 00000000..a7c4b5fb --- /dev/null +++ b/server/AyaNova/DataList/OutsideUserDataList.cs @@ -0,0 +1,133 @@ +using System.Collections.Generic; +using Newtonsoft.Json.Linq; +using AyaNova.Biz; +namespace AyaNova.DataList +{ + internal class OutsideUserDataList : AyaDataList + { + + public OutsideUserDataList() + { + DefaultListObjectType = AyaType.User; + SQLFrom = "from auser left outer join aheadoffice on (auser.headofficeid=aheadoffice.id) left outer join acustomer on (auser.customerid=acustomer.id)"; + var RoleSet = BizRoles.GetRoleSet(DefaultListObjectType); + AllowedRoles = RoleSet.ReadFullRecord | RoleSet.Change; + + //Default ListView + dynamic dlistView = new JArray(); + + dynamic cm = new JObject(); + cm.fld = "name"; + cm.sort = "+"; + dlistView.Add(cm); + + cm = new JObject(); + cm.fld = "active"; + dlistView.Add(cm); + + cm = new JObject(); + cm.fld = "usercustomer"; + dlistView.Add(cm); + + cm = new JObject(); + cm.fld = "userheadoffice"; + dlistView.Add(cm); + + cm = new JObject(); + cm.fld = "lastlogin"; + dlistView.Add(cm); + + DefaultListView = dlistView.ToString(Newtonsoft.Json.Formatting.None); + + /* + Id = z.Id, + Active = z.Active, + Name = z.Name, + Roles = z.Roles, + UserType = z.UserType, + EmployeeNumber = z.EmployeeNumber, + LastLogin = z.LastLogin + */ + + //NOTE: Due to the join, all the sql id and name fields that can conflict with the joined (in this case User) table need to be specified completely + FieldDefinitions = new List(); + //DPRECATED FieldDefinitions.Add(new AyaDataListFieldDefinition { FieldKey = "df", AyaObjectType = (int)AyaType.User, SqlIdColumnName = "auser.id" }); + FieldDefinitions.Add(new AyaDataListFieldDefinition + { + TKey = "User", + FieldKey = "name", + AyaObjectType = (int)AyaType.User, + UiFieldDataType = (int)UiFieldDataType.Text, + SqlIdColumnName = "auser.id", + SqlValueColumnName = "auser.name", + IsRowId = true + }); + + FieldDefinitions.Add(new AyaDataListFieldDefinition + { + TKey = "UserEmployeeNumber", + FieldKey = "employeenumber", + UiFieldDataType = (int)UiFieldDataType.Text, + SqlValueColumnName = "auser.employeenumber" + }); + + + FieldDefinitions.Add(new AyaDataListFieldDefinition + { + TKey = "Active", + FieldKey = "active", + UiFieldDataType = (int)UiFieldDataType.Bool, + SqlValueColumnName = "auser.active" + }); + + FieldDefinitions.Add(new AyaDataListFieldDefinition + { + TKey = "UserType", + FieldKey = "usertype", + UiFieldDataType = (int)UiFieldDataType.Enum, + EnumType = AyaNova.Util.StringUtil.TrimTypeName(typeof(UserType).ToString()), + SqlValueColumnName = "auser.usertype" + }); + + FieldDefinitions.Add(new AyaDataListFieldDefinition + { + TKey = "AuthorizationRoles", + FieldKey = "roles", + UiFieldDataType = (int)UiFieldDataType.Roles, + //NOTE: not technically an enum list but this will trigger datagrid at client to fetch roles for special handling + EnumType = AyaNova.Util.StringUtil.TrimTypeName(typeof(AuthorizationRoles).ToString()), + SqlValueColumnName = "auser.roles" + }); + + FieldDefinitions.Add(new AyaDataListFieldDefinition + { + TKey = "LastLogin", + FieldKey = "lastlogin", + UiFieldDataType = (int)UiFieldDataType.DateTime, + SqlValueColumnName = "auser.lastlogin" + }); + + FieldDefinitions.Add(new AyaDataListFieldDefinition + { + TKey = "HeadOffice", + FieldKey = "userheadoffice", + UiFieldDataType = (int)UiFieldDataType.Text, + AyaObjectType = (int)AyaType.HeadOffice, + SqlIdColumnName = "aheadoffice.id", + SqlValueColumnName = "aheadoffice.name" + }); + + FieldDefinitions.Add(new AyaDataListFieldDefinition + { + TKey = "Customer", + FieldKey = "usercustomer", + UiFieldDataType = (int)UiFieldDataType.Text, + AyaObjectType = (int)AyaType.Customer, + SqlIdColumnName = "acustomer.id", + SqlValueColumnName = "acustomer.name" + }); + + + } + }//eoc +}//eons \ No newline at end of file