diff --git a/server/AyaNova/Controllers/EnumListController.cs b/server/AyaNova/Controllers/EnumListController.cs index b7a24dc0..e9937156 100644 --- a/server/AyaNova/Controllers/EnumListController.cs +++ b/server/AyaNova/Controllers/EnumListController.cs @@ -76,6 +76,8 @@ namespace AyaNova.Api.Controllers List> ret = new List>(); ret.Add(new KeyValuePair(StringUtil.TrimTypeName(typeof(UserType).ToString()), "AyaNova user account types")); + ret.Add(new KeyValuePair("insideusertype", "AyaNova user account types for staff / contractors")); + ret.Add(new KeyValuePair("outsideusertype", "AyaNova user account types for customer / headoffice users")); ret.Add(new KeyValuePair(StringUtil.TrimTypeName(typeof(AuthorizationRoles).ToString()), "AyaNova user account role types")); ret.Add(new KeyValuePair(StringUtil.TrimTypeName(typeof(AyaType).ToString()), "All AyaNova object types")); ret.Add(new KeyValuePair("Core", "All Core AyaNova business object types")); @@ -169,23 +171,43 @@ namespace AyaNova.Api.Controllers } else if (keyNameInLowerCase == StringUtil.TrimTypeName(typeof(UserType).ToString()).ToLowerInvariant()) { - TranslationKeysToFetch.Add("UserTypeAdministrator"); + TranslationKeysToFetch.Add("UserTypeService"); TranslationKeysToFetch.Add("UserTypeNotService"); TranslationKeysToFetch.Add("UserTypeCustomer"); TranslationKeysToFetch.Add("UserTypeHeadOffice"); TranslationKeysToFetch.Add("UserTypeServiceContractor"); - TranslationKeysToFetch.Add("UserTypeUtility"); var LT = await TranslationBiz.GetSubsetStaticAsync(TranslationKeysToFetch, translationId); - ReturnList.Add(new NameIdItem() { Name = LT["UserTypeAdministrator"], Id = (long)UserType.Administrator }); ReturnList.Add(new NameIdItem() { Name = LT["UserTypeService"], Id = (long)UserType.Service }); ReturnList.Add(new NameIdItem() { Name = LT["UserTypeNotService"], Id = (long)UserType.NotService }); ReturnList.Add(new NameIdItem() { Name = LT["UserTypeCustomer"], Id = (long)UserType.Customer }); ReturnList.Add(new NameIdItem() { Name = LT["UserTypeHeadOffice"], Id = (long)UserType.HeadOffice }); - ReturnList.Add(new NameIdItem() { Name = LT["UserTypeUtility"], Id = (long)UserType.Utility }); ReturnList.Add(new NameIdItem() { Name = LT["UserTypeServiceContractor"], Id = (long)UserType.ServiceContractor }); } + else if (keyNameInLowerCase == "insideusertype") + { + + TranslationKeysToFetch.Add("UserTypeService"); + TranslationKeysToFetch.Add("UserTypeNotService"); + TranslationKeysToFetch.Add("UserTypeServiceContractor"); + var LT = await TranslationBiz.GetSubsetStaticAsync(TranslationKeysToFetch, translationId); + + ReturnList.Add(new NameIdItem() { Name = LT["UserTypeService"], Id = (long)UserType.Service }); + ReturnList.Add(new NameIdItem() { Name = LT["UserTypeNotService"], Id = (long)UserType.NotService }); + ReturnList.Add(new NameIdItem() { Name = LT["UserTypeServiceContractor"], Id = (long)UserType.ServiceContractor }); + } + else if (keyNameInLowerCase == "outsideusertype") + { + + + TranslationKeysToFetch.Add("UserTypeCustomer"); + TranslationKeysToFetch.Add("UserTypeHeadOffice"); + var LT = await TranslationBiz.GetSubsetStaticAsync(TranslationKeysToFetch, translationId); + + ReturnList.Add(new NameIdItem() { Name = LT["UserTypeCustomer"], Id = (long)UserType.Customer }); + ReturnList.Add(new NameIdItem() { Name = LT["UserTypeHeadOffice"], Id = (long)UserType.HeadOffice }); + } else if (keyNameInLowerCase == StringUtil.TrimTypeName(typeof(AyaEvent).ToString()).ToLowerInvariant()) { TranslationKeysToFetch.Add("EventDeleted"); @@ -355,7 +377,7 @@ namespace AyaNova.Api.Controllers } else { - ReturnList.Add(new NameIdItem() { Name = $"Unknown enum type list key value {enumKey}", Id = (long)UserType.Administrator }); + ReturnList.Add(new NameIdItem() { Name = $"Unknown enum type list key value {enumKey}", Id = 0 }); } return ReturnList; diff --git a/server/AyaNova/Controllers/UserController.cs b/server/AyaNova/Controllers/UserController.cs index 18316a4c..84bec6ef 100644 --- a/server/AyaNova/Controllers/UserController.cs +++ b/server/AyaNova/Controllers/UserController.cs @@ -262,11 +262,60 @@ namespace AyaNova.Api.Controllers } - private bool UserExists(long id) + /// + /// Get list of Users + /// (rights to User object required) + /// + /// All "inside" Users (except Customer and HeadOffice type) + [HttpGet("list")] + public async Task GetInsideUserList() { - return ct.User.Any(z => z.Id == id); + if (serverState.IsClosed) + return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason)); + + if (!Authorized.HasReadFullRole(HttpContext.Items, AyaType.User)) + return StatusCode(403, new ApiNotAuthorizedResponse()); + + + var ret = await ct.User.Where(z => z.UserType != UserType.Customer && z.UserType != UserType.HeadOffice).Select(z => new dtUser + { + Id = z.Id, + Active = z.Active, + Name = z.Name, + Roles = z.Roles, + UserType = z.UserType, + EmployeeNumber = z.EmployeeNumber, + LastLogin = z.LastLogin + + }).ToListAsync(); + return Ok(ApiOkResponse.Response(ret)); } + /// + /// Get list of Customer / Head office Users + /// (Rights to Customer object required) + /// + /// All "outside" Users (No staff or contractors) + [HttpGet("outlist")] + public async Task GetOutsideUserList() + { + if (serverState.IsClosed) + return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason)); + + if (!Authorized.HasReadFullRole(HttpContext.Items, AyaType.Customer)) + return StatusCode(403, new ApiNotAuthorizedResponse()); + + var ret = await ct.User.Where(z => z.UserType == UserType.Customer || z.UserType == UserType.HeadOffice).Select(z => new dtUser + { + Id = z.Id, + Active = z.Active, + Name = z.Name, + UserType = z.UserType, + LastLogin = z.LastLogin + + }).ToListAsync(); + return Ok(ApiOkResponse.Response(ret)); + } //------------ diff --git a/server/AyaNova/DataList/UserDataList.cs b/server/AyaNova/DataList/UserDataList.cs index cb142f4a..800ec2f2 100644 --- a/server/AyaNova/DataList/UserDataList.cs +++ b/server/AyaNova/DataList/UserDataList.cs @@ -1,138 +1,140 @@ -using System.Collections.Generic; -using Newtonsoft.Json.Linq; -using AyaNova.Biz; -namespace AyaNova.DataList -{ - internal class UserDataList : AyaDataList - { +//##### DEPRECATED, using fixed list in UserController now - public UserDataList() - { - DefaultListObjectType = AyaType.User; - SQLFrom = "from auser"; - var RoleSet = BizRoles.GetRoleSet(DefaultListObjectType); - AllowedRoles = RoleSet.ReadFullRecord | RoleSet.Change; +// using System.Collections.Generic; +// using Newtonsoft.Json.Linq; +// using AyaNova.Biz; +// namespace AyaNova.DataList +// { +// internal class UserDataList : AyaDataList +// { - //Default ListView - dynamic dlistView = new JArray(); +// public UserDataList() +// { +// DefaultListObjectType = AyaType.User; +// SQLFrom = "from auser"; +// var RoleSet = BizRoles.GetRoleSet(DefaultListObjectType); +// AllowedRoles = RoleSet.ReadFullRecord | RoleSet.Change; - dynamic cm = new JObject(); - cm.fld = "username"; - dlistView.Add(cm); +// //Default ListView +// dynamic dlistView = new JArray(); - cm = new JObject(); - cm.fld = "useremployeenumber"; - dlistView.Add(cm); +// dynamic cm = new JObject(); +// cm.fld = "username"; +// dlistView.Add(cm); - cm = new JObject(); - cm.fld = "usertype"; - dlistView.Add(cm); +// cm = new JObject(); +// cm.fld = "useremployeenumber"; +// dlistView.Add(cm); - cm = new JObject(); - cm.fld = "useractive"; - dlistView.Add(cm); - - cm = new JObject(); - cm.fld = "userlastlogin"; - dlistView.Add(cm); +// cm = new JObject(); +// cm.fld = "usertype"; +// dlistView.Add(cm); - cm = new JObject(); - cm.fld = "userroles"; - dlistView.Add(cm); +// cm = new JObject(); +// cm.fld = "useractive"; +// dlistView.Add(cm); + +// cm = new JObject(); +// cm.fld = "userlastlogin"; +// dlistView.Add(cm); + +// cm = new JObject(); +// cm.fld = "userroles"; +// dlistView.Add(cm); - DefaultListView = dlistView.ToString(Newtonsoft.Json.Formatting.None); +// DefaultListView = dlistView.ToString(Newtonsoft.Json.Formatting.None); - //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 = "username", - AyaObjectType = (int)AyaType.User, - UiFieldDataType = (int)UiFieldDataType.Text, - SqlIdColumnName = "auser.id", - SqlValueColumnName = "auser.name", - IsRowId = true - }); +// //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 = "username", +// AyaObjectType = (int)AyaType.User, +// UiFieldDataType = (int)UiFieldDataType.Text, +// SqlIdColumnName = "auser.id", +// SqlValueColumnName = "auser.name", +// IsRowId = true +// }); - FieldDefinitions.Add(new AyaDataListFieldDefinition - { - TKey = "Active", - FieldKey = "useractive", - UiFieldDataType = (int)UiFieldDataType.Bool, - SqlValueColumnName = "auser.active" - }); +// FieldDefinitions.Add(new AyaDataListFieldDefinition +// { +// TKey = "Active", +// FieldKey = "useractive", +// UiFieldDataType = (int)UiFieldDataType.Bool, +// SqlValueColumnName = "auser.active" +// }); - FieldDefinitions.Add(new AyaDataListFieldDefinition - { - TKey = "AuthorizationRoles", - FieldKey = "userroles", - UiFieldDataType = (int)UiFieldDataType.Enum, - EnumType = AyaNova.Util.StringUtil.TrimTypeName(typeof(AuthorizationRoles).ToString()), - SqlValueColumnName = "auser.roles" - }); +// FieldDefinitions.Add(new AyaDataListFieldDefinition +// { +// TKey = "AuthorizationRoles", +// FieldKey = "userroles", +// UiFieldDataType = (int)UiFieldDataType.Enum, +// EnumType = AyaNova.Util.StringUtil.TrimTypeName(typeof(AuthorizationRoles).ToString()), +// SqlValueColumnName = "auser.roles" +// }); - FieldDefinitions.Add(new AyaDataListFieldDefinition - { - TKey = "LastLogin", - FieldKey = "userlastlogin", - UiFieldDataType = (int)UiFieldDataType.DateTime, - SqlValueColumnName = "auser.lastlogin" - }); +// FieldDefinitions.Add(new AyaDataListFieldDefinition +// { +// TKey = "LastLogin", +// FieldKey = "userlastlogin", +// UiFieldDataType = (int)UiFieldDataType.DateTime, +// SqlValueColumnName = "auser.lastlogin" +// }); - 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 = "UserType", +// FieldKey = "usertype", +// UiFieldDataType = (int)UiFieldDataType.Enum, +// EnumType = AyaNova.Util.StringUtil.TrimTypeName(typeof(UserType).ToString()), +// SqlValueColumnName = "auser.usertype" +// }); - FieldDefinitions.Add(new AyaDataListFieldDefinition - { - TKey = "UserEmployeeNumber", - FieldKey = "useremployeenumber", - UiFieldDataType = (int)UiFieldDataType.Text, - SqlValueColumnName = "auser.employeenumber" - }); +// FieldDefinitions.Add(new AyaDataListFieldDefinition +// { +// TKey = "UserEmployeeNumber", +// FieldKey = "useremployeenumber", +// UiFieldDataType = (int)UiFieldDataType.Text, +// SqlValueColumnName = "auser.employeenumber" +// }); - FieldDefinitions.Add(new AyaDataListFieldDefinition - { - TKey = "UserNotes", - FieldKey = "usernotes", - UiFieldDataType = (int)UiFieldDataType.Text, - SqlValueColumnName = "auser.notes" - }); +// FieldDefinitions.Add(new AyaDataListFieldDefinition +// { +// TKey = "UserNotes", +// FieldKey = "usernotes", +// UiFieldDataType = (int)UiFieldDataType.Text, +// SqlValueColumnName = "auser.notes" +// }); - // //------------------------- - //NOT SURE ABOUT CUSTOM FIELDS - //NEED TO COME BACK TO THIS ONCE CLIENT IS CONSUMING THESE LISTS - //WIDGETLIST has custom fields so good test before doing here +// // //------------------------- +// //NOT SURE ABOUT CUSTOM FIELDS +// //NEED TO COME BACK TO THIS ONCE CLIENT IS CONSUMING THESE LISTS +// //WIDGETLIST has custom fields so good test before doing here - // FieldDefinitions.Add(new AyaDataListFieldDefinition { TKey = "WidgetCustom1", FieldKey = "widgetcustom1", IsCustomField = true }); - // FieldDefinitions.Add(new AyaDataListFieldDefinition { TKey = "WidgetCustom2", FieldKey = "widgetcustom2", IsCustomField = true }); - // FieldDefinitions.Add(new AyaDataListFieldDefinition { TKey = "WidgetCustom3", FieldKey = "widgetcustom3", IsCustomField = true }); - // FieldDefinitions.Add(new AyaDataListFieldDefinition { TKey = "WidgetCustom4", FieldKey = "widgetcustom4", IsCustomField = true }); - // FieldDefinitions.Add(new AyaDataListFieldDefinition { TKey = "WidgetCustom5", FieldKey = "widgetcustom5", IsCustomField = true }); - // FieldDefinitions.Add(new AyaDataListFieldDefinition { TKey = "WidgetCustom6", FieldKey = "widgetcustom6", IsCustomField = true }); - // FieldDefinitions.Add(new AyaDataListFieldDefinition { TKey = "WidgetCustom7", FieldKey = "widgetcustom7", IsCustomField = true }); - // FieldDefinitions.Add(new AyaDataListFieldDefinition { TKey = "WidgetCustom8", FieldKey = "widgetcustom8", IsCustomField = true }); - // FieldDefinitions.Add(new AyaDataListFieldDefinition { TKey = "WidgetCustom9", FieldKey = "widgetcustom9", IsCustomField = true }); - // FieldDefinitions.Add(new AyaDataListFieldDefinition { TKey = "WidgetCustom10", FieldKey = "widgetcustom10", IsCustomField = true }); - // FieldDefinitions.Add(new AyaDataListFieldDefinition { TKey = "WidgetCustom11", FieldKey = "widgetcustom11", IsCustomField = true }); - // FieldDefinitions.Add(new AyaDataListFieldDefinition { TKey = "WidgetCustom12", FieldKey = "widgetcustom12", IsCustomField = true }); - // FieldDefinitions.Add(new AyaDataListFieldDefinition { TKey = "WidgetCustom13", FieldKey = "widgetcustom13", IsCustomField = true }); - // FieldDefinitions.Add(new AyaDataListFieldDefinition { TKey = "WidgetCustom14", FieldKey = "widgetcustom14", IsCustomField = true }); - // FieldDefinitions.Add(new AyaDataListFieldDefinition { TKey = "WidgetCustom15", FieldKey = "widgetcustom15", IsCustomField = true }); - // FieldDefinitions.Add(new AyaDataListFieldDefinition { TKey = "WidgetCustom16", FieldKey = "widgetcustom16", IsCustomField = true }); - } - }//eoc -}//eons \ No newline at end of file +// // FieldDefinitions.Add(new AyaDataListFieldDefinition { TKey = "WidgetCustom1", FieldKey = "widgetcustom1", IsCustomField = true }); +// // FieldDefinitions.Add(new AyaDataListFieldDefinition { TKey = "WidgetCustom2", FieldKey = "widgetcustom2", IsCustomField = true }); +// // FieldDefinitions.Add(new AyaDataListFieldDefinition { TKey = "WidgetCustom3", FieldKey = "widgetcustom3", IsCustomField = true }); +// // FieldDefinitions.Add(new AyaDataListFieldDefinition { TKey = "WidgetCustom4", FieldKey = "widgetcustom4", IsCustomField = true }); +// // FieldDefinitions.Add(new AyaDataListFieldDefinition { TKey = "WidgetCustom5", FieldKey = "widgetcustom5", IsCustomField = true }); +// // FieldDefinitions.Add(new AyaDataListFieldDefinition { TKey = "WidgetCustom6", FieldKey = "widgetcustom6", IsCustomField = true }); +// // FieldDefinitions.Add(new AyaDataListFieldDefinition { TKey = "WidgetCustom7", FieldKey = "widgetcustom7", IsCustomField = true }); +// // FieldDefinitions.Add(new AyaDataListFieldDefinition { TKey = "WidgetCustom8", FieldKey = "widgetcustom8", IsCustomField = true }); +// // FieldDefinitions.Add(new AyaDataListFieldDefinition { TKey = "WidgetCustom9", FieldKey = "widgetcustom9", IsCustomField = true }); +// // FieldDefinitions.Add(new AyaDataListFieldDefinition { TKey = "WidgetCustom10", FieldKey = "widgetcustom10", IsCustomField = true }); +// // FieldDefinitions.Add(new AyaDataListFieldDefinition { TKey = "WidgetCustom11", FieldKey = "widgetcustom11", IsCustomField = true }); +// // FieldDefinitions.Add(new AyaDataListFieldDefinition { TKey = "WidgetCustom12", FieldKey = "widgetcustom12", IsCustomField = true }); +// // FieldDefinitions.Add(new AyaDataListFieldDefinition { TKey = "WidgetCustom13", FieldKey = "widgetcustom13", IsCustomField = true }); +// // FieldDefinitions.Add(new AyaDataListFieldDefinition { TKey = "WidgetCustom14", FieldKey = "widgetcustom14", IsCustomField = true }); +// // FieldDefinitions.Add(new AyaDataListFieldDefinition { TKey = "WidgetCustom15", FieldKey = "widgetcustom15", IsCustomField = true }); +// // FieldDefinitions.Add(new AyaDataListFieldDefinition { TKey = "WidgetCustom16", FieldKey = "widgetcustom16", IsCustomField = true }); +// } +// }//eoc +// }//eons \ No newline at end of file diff --git a/server/AyaNova/biz/PrimeData.cs b/server/AyaNova/biz/PrimeData.cs index f62d3d82..f9321973 100644 --- a/server/AyaNova/biz/PrimeData.cs +++ b/server/AyaNova/biz/PrimeData.cs @@ -31,7 +31,7 @@ namespace AyaNova.Biz u.Roles = AuthorizationRoles.All;//AuthorizationRoles.BizAdminFull | AuthorizationRoles.OpsAdminFull | AuthorizationRoles.DispatchFull | AuthorizationRoles.InventoryFull; - u.UserType = UserType.Administrator; + u.UserType = UserType.NotService; u.UserOptions = new UserOptions(); u.UserOptions.TranslationId = ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID;//Ensure primeTranslations is called first await ct.User.AddAsync(u); diff --git a/server/AyaNova/biz/UserType.cs b/server/AyaNova/biz/UserType.cs index 13a79f0c..6c5eccf6 100644 --- a/server/AyaNova/biz/UserType.cs +++ b/server/AyaNova/biz/UserType.cs @@ -4,13 +4,11 @@ namespace AyaNova.Biz /// AyaNova User types /// public enum UserType : int - { - Administrator = 1, - Service = 2, - NotService = 3, - Customer = 4, - HeadOffice = 5, - Utility = 6, - ServiceContractor = 7 + { + Service = 1, + NotService = 2, + Customer = 3, + HeadOffice = 4, + ServiceContractor = 5 } }//eons diff --git a/server/AyaNova/util/Seeder.cs b/server/AyaNova/util/Seeder.cs index 309f9359..c9666b4b 100644 --- a/server/AyaNova/util/Seeder.cs +++ b/server/AyaNova/util/Seeder.cs @@ -530,9 +530,9 @@ namespace AyaNova.Util await GenSeedUserAsync(log, 1, AuthorizationRoles.OpsAdminLimited, UserType.NotService, false, "TEST_INACTIVE", "TEST_INACTIVE", 0, KnownUserTags); //Alternate translation users for each stock translation - await GenSeedUserAsync(log, 1, AuthorizationRoles.All, UserType.Administrator, true, "de", "de", await TranslationBiz.TranslationNameToIdStaticAsync("de"), KnownUserTags); - await GenSeedUserAsync(log, 1, AuthorizationRoles.All, UserType.Administrator, true, "es", "es", await TranslationBiz.TranslationNameToIdStaticAsync("es"), KnownUserTags); - await GenSeedUserAsync(log, 1, AuthorizationRoles.All, UserType.Administrator, true, "fr", "fr", await TranslationBiz.TranslationNameToIdStaticAsync("fr"), KnownUserTags); + await GenSeedUserAsync(log, 1, AuthorizationRoles.All, UserType.NotService, true, "de", "de", await TranslationBiz.TranslationNameToIdStaticAsync("de"), KnownUserTags); + await GenSeedUserAsync(log, 1, AuthorizationRoles.All, UserType.NotService, true, "es", "es", await TranslationBiz.TranslationNameToIdStaticAsync("es"), KnownUserTags); + await GenSeedUserAsync(log, 1, AuthorizationRoles.All, UserType.NotService, true, "fr", "fr", await TranslationBiz.TranslationNameToIdStaticAsync("fr"), KnownUserTags); }