From e2f99520f38cf2605e45e440102c246e7e0ade88 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Fri, 17 Jan 2020 00:25:21 +0000 Subject: [PATCH] --- .../Controllers/AyaEnumPickListController.cs | 4 +- .../{AyDataType.cs => AyaUiFieldDataType.cs} | 2 +- server/AyaNova/biz/CustomFieldType.cs | 16 +++--- server/AyaNova/biz/ObjectFields.cs | 50 +++++++++---------- .../AyaNova/biz/SqlFilterCriteriaBuilder.cs | 30 +++++------ 5 files changed, 51 insertions(+), 51 deletions(-) rename server/AyaNova/biz/{AyDataType.cs => AyaUiFieldDataType.cs} (96%) diff --git a/server/AyaNova/Controllers/AyaEnumPickListController.cs b/server/AyaNova/Controllers/AyaEnumPickListController.cs index d8c381ca..c906f587 100644 --- a/server/AyaNova/Controllers/AyaEnumPickListController.cs +++ b/server/AyaNova/Controllers/AyaEnumPickListController.cs @@ -66,8 +66,8 @@ namespace AyaNova.Api.Controllers case "datatypes": { //Iterate the enum and get the values - Type t = typeof(AyaDataType); - Enum.GetName(t, AyaDataType.NoType); + Type t = typeof(AyaUiFieldDataType); + Enum.GetName(t, AyaUiFieldDataType.NoType); foreach (var dt in Enum.GetValues(t)) { ReturnList.Add(new NameIdItem() { Name = Enum.GetName(t, dt), Id = (int) dt }); diff --git a/server/AyaNova/biz/AyDataType.cs b/server/AyaNova/biz/AyaUiFieldDataType.cs similarity index 96% rename from server/AyaNova/biz/AyDataType.cs rename to server/AyaNova/biz/AyaUiFieldDataType.cs index b332b43c..8220b33c 100644 --- a/server/AyaNova/biz/AyDataType.cs +++ b/server/AyaNova/biz/AyaUiFieldDataType.cs @@ -18,7 +18,7 @@ namespace AyaNova.Biz // } //DataTypes used to format display properly and for custom fields definition etc - public enum AyaDataType : int + public enum AyaUiFieldDataType : int { NoType = 0, DateTime = 1, diff --git a/server/AyaNova/biz/CustomFieldType.cs b/server/AyaNova/biz/CustomFieldType.cs index 4cec97fe..7bd9d880 100644 --- a/server/AyaNova/biz/CustomFieldType.cs +++ b/server/AyaNova/biz/CustomFieldType.cs @@ -18,14 +18,14 @@ namespace AyaNova.Biz get { var ret = new List(); - ret.Add((int)AyaDataType.Currency); - ret.Add((int)AyaDataType.Date); - ret.Add((int)AyaDataType.Time); - ret.Add((int)AyaDataType.DateTime); - ret.Add((int)AyaDataType.Text); - ret.Add((int)AyaDataType.Decimal); - ret.Add((int)AyaDataType.Integer); - ret.Add((int)AyaDataType.Bool); + ret.Add((int)AyaUiFieldDataType.Currency); + ret.Add((int)AyaUiFieldDataType.Date); + ret.Add((int)AyaUiFieldDataType.Time); + ret.Add((int)AyaUiFieldDataType.DateTime); + ret.Add((int)AyaUiFieldDataType.Text); + ret.Add((int)AyaUiFieldDataType.Decimal); + ret.Add((int)AyaUiFieldDataType.Integer); + ret.Add((int)AyaUiFieldDataType.Bool); return ret; } } diff --git a/server/AyaNova/biz/ObjectFields.cs b/server/AyaNova/biz/ObjectFields.cs index 2548c84d..6476f4c9 100644 --- a/server/AyaNova/biz/ObjectFields.cs +++ b/server/AyaNova/biz/ObjectFields.cs @@ -158,19 +158,19 @@ namespace AyaNova.Biz //first column is the non visible Default Id column so that the client knows what to open when there is no field with ID selected that matches underlying record type //in this case the default of id is sufficient for this list l.Add(new ObjectField { Key = "df", AyObjectType = (int)AyaType.Widget }); - l.Add(new ObjectField { Key = "WidgetName", PropertyName = "Name", DataType = (int)AyaDataType.Text, Hideable = false }); - l.Add(new ObjectField { Key = "WidgetSerial", PropertyName = "Serial", DataType = (int)AyaDataType.Integer }); - l.Add(new ObjectField { Key = "WidgetDollarAmount", PropertyName = "DollarAmount", DataType = (int)AyaDataType.Currency }); - l.Add(new ObjectField { Key = "WidgetCount", PropertyName = "Count", DataType = (int)AyaDataType.Integer }); - l.Add(new ObjectField { Key = "WidgetRoles", PropertyName = "Roles", DataType = (int)AyaDataType.Enum, EnumType = typeof(AuthorizationRoles).ToString() }); - l.Add(new ObjectField { Key = "WidgetStartDate", PropertyName = "StartDate", DataType = (int)AyaDataType.DateTime }); - l.Add(new ObjectField { Key = "WidgetEndDate", PropertyName = "EndDate", DataType = (int)AyaDataType.DateTime }); - l.Add(new ObjectField { Key = "WidgetNotes", PropertyName = "Notes", DataType = (int)AyaDataType.Text }); + l.Add(new ObjectField { Key = "WidgetName", PropertyName = "Name", UiFieldDataType = (int)AyaUiFieldDataType.Text, Hideable = false }); + l.Add(new ObjectField { Key = "WidgetSerial", PropertyName = "Serial", UiFieldDataType = (int)AyaUiFieldDataType.Integer }); + l.Add(new ObjectField { Key = "WidgetDollarAmount", PropertyName = "DollarAmount", UiFieldDataType = (int)AyaUiFieldDataType.Currency }); + l.Add(new ObjectField { Key = "WidgetCount", PropertyName = "Count", UiFieldDataType = (int)AyaUiFieldDataType.Integer }); + l.Add(new ObjectField { Key = "WidgetRoles", PropertyName = "Roles", UiFieldDataType = (int)AyaUiFieldDataType.Enum, EnumType = typeof(AuthorizationRoles).ToString() }); + l.Add(new ObjectField { Key = "WidgetStartDate", PropertyName = "StartDate", UiFieldDataType = (int)AyaUiFieldDataType.DateTime }); + l.Add(new ObjectField { Key = "WidgetEndDate", PropertyName = "EndDate", UiFieldDataType = (int)AyaUiFieldDataType.DateTime }); + l.Add(new ObjectField { Key = "WidgetNotes", PropertyName = "Notes", UiFieldDataType = (int)AyaUiFieldDataType.Text }); //More to do on this, maybe the datatype should be a LINK or something for UI purposes //circle back on this when there is enough infrastructure to test - l.Add(new ObjectField { Key = "User", PropertyName = "userid", DataType = (int)AyaDataType.Text, AyObjectType = (int)AyaType.User }); - l.Add(new ObjectField { Key = "Active", PropertyName = "Active", DataType = (int)AyaDataType.Bool, Hideable = false, SharedLTKey = true }); - l.Add(new ObjectField { Key = "Tags", PropertyName = "Tags", DataType = (int)AyaDataType.Tags, SharedLTKey = true }); + l.Add(new ObjectField { Key = "User", PropertyName = "userid", UiFieldDataType = (int)AyaUiFieldDataType.Text, AyObjectType = (int)AyaType.User }); + l.Add(new ObjectField { Key = "Active", PropertyName = "Active", UiFieldDataType = (int)AyaUiFieldDataType.Bool, Hideable = false, SharedLTKey = true }); + l.Add(new ObjectField { Key = "Tags", PropertyName = "Tags", UiFieldDataType = (int)AyaUiFieldDataType.Tags, SharedLTKey = true }); l.Add(new ObjectField { Key = "WidgetCustom1", PropertyName = "WidgetCustom1", Custom = true }); l.Add(new ObjectField { Key = "WidgetCustom2", PropertyName = "WidgetCustom2", Custom = true }); @@ -193,13 +193,13 @@ namespace AyaNova.Biz case USER_KEY: #region USER_KEY l.Add(new ObjectField { Key = "df", AyObjectType = (int)AyaType.User }); - l.Add(new ObjectField { Key = "Name", PropertyName = "Name", SharedLTKey = true, DataType = (int)AyaDataType.Text, Hideable = false }); - l.Add(new ObjectField { Key = "UserEmployeeNumber", PropertyName = "EmployeeNumber", DataType = (int)AyaDataType.Text }); - l.Add(new ObjectField { Key = "AuthorizationRoles", PropertyName = "Roles", Hideable = false, DataType = (int)AyaDataType.Enum, EnumType = typeof(AuthorizationRoles).ToString() }); - l.Add(new ObjectField { Key = "UserNotes", PropertyName = "Notes", DataType = (int)AyaDataType.Text }); - l.Add(new ObjectField { Key = "UserUserType", PropertyName = "UserType", Hideable = false, DataType = (int)AyaDataType.Enum, EnumType = typeof(UserType).ToString() }); - l.Add(new ObjectField { Key = "Active", PropertyName = "Active", DataType = (int)AyaDataType.Bool, Hideable = false, SharedLTKey = true }); - l.Add(new ObjectField { Key = "Tags", PropertyName = "Tags", DataType = (int)AyaDataType.Tags, SharedLTKey = true }); + l.Add(new ObjectField { Key = "Name", PropertyName = "Name", SharedLTKey = true, UiFieldDataType = (int)AyaUiFieldDataType.Text, Hideable = false }); + l.Add(new ObjectField { Key = "UserEmployeeNumber", PropertyName = "EmployeeNumber", UiFieldDataType = (int)AyaUiFieldDataType.Text }); + l.Add(new ObjectField { Key = "AuthorizationRoles", PropertyName = "Roles", Hideable = false, UiFieldDataType = (int)AyaUiFieldDataType.Enum, EnumType = typeof(AuthorizationRoles).ToString() }); + l.Add(new ObjectField { Key = "UserNotes", PropertyName = "Notes", UiFieldDataType = (int)AyaUiFieldDataType.Text }); + l.Add(new ObjectField { Key = "UserUserType", PropertyName = "UserType", Hideable = false, UiFieldDataType = (int)AyaUiFieldDataType.Enum, EnumType = typeof(UserType).ToString() }); + l.Add(new ObjectField { Key = "Active", PropertyName = "Active", UiFieldDataType = (int)AyaUiFieldDataType.Bool, Hideable = false, SharedLTKey = true }); + l.Add(new ObjectField { Key = "Tags", PropertyName = "Tags", UiFieldDataType = (int)AyaUiFieldDataType.Tags, SharedLTKey = true }); l.Add(new ObjectField { Key = "UserCustom1", PropertyName = "UserCustom1", Custom = true }); l.Add(new ObjectField { Key = "UserCustom2", PropertyName = "UserCustom2", Custom = true }); @@ -248,11 +248,11 @@ namespace AyaNova.Biz public string SqlColumn { get; set; } */ l.Add(new ObjectField { Key = "df", AyObjectType = (int)AyaType.Widget }); - l.Add(new ObjectField { Key = "WidgetName", PropertyName = "Name", DataType = (int)AyaDataType.Text, Hideable = false, });//not hideable for strictly list must mean it has to be in template? + l.Add(new ObjectField { Key = "WidgetName", PropertyName = "Name", UiFieldDataType = (int)AyaUiFieldDataType.Text, Hideable = false, });//not hideable for strictly list must mean it has to be in template? - l.Add(new ObjectField { Key = "User", PropertyName = "userid", DataType = (int)AyaDataType.Text, AyObjectType = (int)AyaType.User }); - l.Add(new ObjectField { Key = "Name", PropertyName = "Name", SharedLTKey = true, DataType = (int)AyaDataType.Text, Hideable = false }); - l.Add(new ObjectField { Key = "UserEmailAddress", PropertyName = "Emailaddress", DataType = (int)AyaDataType.EmailAddress, SqlColumn = "emailaddress" }); + l.Add(new ObjectField { Key = "User", PropertyName = "userid", UiFieldDataType = (int)AyaUiFieldDataType.Text, AyObjectType = (int)AyaType.User }); + l.Add(new ObjectField { Key = "Name", PropertyName = "Name", SharedLTKey = true, UiFieldDataType = (int)AyaUiFieldDataType.Text, Hideable = false }); + l.Add(new ObjectField { Key = "UserEmailAddress", PropertyName = "Emailaddress", UiFieldDataType = (int)AyaUiFieldDataType.EmailAddress, SqlColumn = "emailaddress" }); break; #endregion @@ -280,7 +280,7 @@ namespace AyaNova.Biz //Standard mini COLUMN definition public static string GenerateMINIListColumnsJSON(AyaType defaultLinkType) { - return $"[ {{\"cm\":\"df\",\"dt\":0,\"ay\":{(int)defaultLinkType}}},{{\"cm\":\"Widget\",\"dt\":{(int)AyaDataType.Text},\"ay\":{(int)defaultLinkType}}}]"; + return $"[ {{\"cm\":\"df\",\"dt\":0,\"ay\":{(int)defaultLinkType}}},{{\"cm\":\"Widget\",\"dt\":{(int)AyaUiFieldDataType.Text},\"ay\":{(int)defaultLinkType}}}]"; } @@ -321,7 +321,7 @@ namespace AyaNova.Biz sb.Append(","); sb.Append("{"); //Build required part of column definition - sb.Append($"\"cm\":\"{o.Key}\",\"dt\":{(int)o.DataType}"); + sb.Append($"\"cm\":\"{o.Key}\",\"dt\":{(int)o.UiFieldDataType}"); //Has a AyObjectType? (linkable / openable) if (o.AyObjectType != 0) @@ -350,7 +350,7 @@ namespace AyaNova.Biz public bool Filterable { get; set; } public bool Sortable { get; set; } public bool MiniAvailable { get; set; } - public int DataType { get; set; } + public int UiFieldDataType { get; set; } //If it's an enum DataType then this is the specific enum type which sb the name of the class that holds the enum in the server project public string EnumType { get; set; } //if field is a reference to another object (i.e. a client in a workorders list) diff --git a/server/AyaNova/biz/SqlFilterCriteriaBuilder.cs b/server/AyaNova/biz/SqlFilterCriteriaBuilder.cs index 65c23712..0df44a63 100644 --- a/server/AyaNova/biz/SqlFilterCriteriaBuilder.cs +++ b/server/AyaNova/biz/SqlFilterCriteriaBuilder.cs @@ -38,9 +38,9 @@ namespace AyaNova.Biz tagList = filterItem["value"].ToObject>(); } - var dataType = objectFields.Find(x => x.PropertyName.ToLowerInvariant() == fld).DataType; + var dataType = objectFields.Find(x => x.PropertyName.ToLowerInvariant() == fld).UiFieldDataType; sb.Append("("); - sb.Append(DataFilterToColumnCriteria(fld, (AyaDataType)dataType, opType, val, tagList, userId)); + sb.Append(DataFilterToColumnCriteria(fld, (AyaUiFieldDataType)dataType, opType, val, tagList, userId)); if (i < FilterArray.Count - 1) { sb.Append(") AND "); @@ -53,7 +53,7 @@ namespace AyaNova.Biz /// /// Translate DataFilter to Postgres friendly SQL criteria /// - private static string DataFilterToColumnCriteria(string sColumn, AyaDataType DataType, string sOperator, string sValue, List sTags, long userId)//, bool IsCompound) + private static string DataFilterToColumnCriteria(string sColumn, AyaUiFieldDataType DataType, string sOperator, string sValue, List sTags, long userId)//, bool IsCompound) { bool TagFilter = sTags.Count < 0; StringBuilder sb = new StringBuilder(); @@ -67,7 +67,7 @@ namespace AyaNova.Biz { switch (DataType) { - case AyaDataType.Text: + case AyaUiFieldDataType.Text: { if (sOperator == DataFilterComparisonOperator.Equality) { @@ -144,7 +144,7 @@ namespace AyaNova.Biz #region Build for specific type switch (DataType) { - case AyaDataType.Text: + case AyaUiFieldDataType.Text: //escape any pre-existing apostrophes //i.e. "O'Flaherty's pub" sValue = sValue.Replace("'", "''"); @@ -243,7 +243,7 @@ namespace AyaNova.Biz } #endregion build text ops criteria break; - case AyaDataType.Bool: + case AyaUiFieldDataType.Bool: { switch (sOperator) { @@ -271,9 +271,9 @@ namespace AyaNova.Biz break; //Note there are three types here for display purposes but all are stored in the db as a timestamp the same with date and time components - case AyaDataType.Date: - case AyaDataType.DateTime: - case AyaDataType.Time: + case AyaUiFieldDataType.Date: + case AyaUiFieldDataType.DateTime: + case AyaUiFieldDataType.Time: { //Note: it is assumed all dates come into here from the CLIENT in UTC iso8601 format //suitable for the database to handle as all database dates are in UTC @@ -717,16 +717,16 @@ namespace AyaNova.Biz } } break; - case AyaDataType.Enum://enums are just ints to the db, but it's a special type so the client can recognize it - case AyaDataType.Decimal: - case AyaDataType.Integer: //whole numbers, not only integer + case AyaUiFieldDataType.Enum://enums are just ints to the db, but it's a special type so the client can recognize it + case AyaUiFieldDataType.Decimal: + case AyaUiFieldDataType.Integer: //whole numbers, not only integer { //case 1795 - it's numeric, convert to locale independant format //RAVEN NOTE: this code looks suspect to me, but I'll leave it in for now NumberFormatInfo nfi = System.Globalization.CultureInfo.CurrentCulture.NumberFormat; switch (DataType) { - case AyaDataType.Decimal: + case AyaUiFieldDataType.Decimal: { if (nfi.CurrencyDecimalSeparator != ".") { @@ -735,7 +735,7 @@ namespace AyaNova.Biz } } break; - case AyaDataType.Integer: + case AyaUiFieldDataType.Integer: { if (nfi.NumberDecimalSeparator != ".") { @@ -781,7 +781,7 @@ namespace AyaNova.Biz } break; } - case AyaDataType.Tags: + case AyaUiFieldDataType.Tags: { //Build tags filter fragment //for initial release a tag filter is inclusive of all tags only