This commit is contained in:
@@ -6,9 +6,6 @@ eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOiIxNTcxODU5OTU0IiwiZXhwIjoiMTU3MjQ
|
||||
## IMMEDIATE ITEMS
|
||||
|
||||
|
||||
Make DATALIST route for fetching all datalist key names
|
||||
Make datalist route for fetching the field list of a specific datalist by key name
|
||||
Make dataList route for fetching the actual data
|
||||
|
||||
|
||||
Clean up AyaObjectField definition for FORM FIELD STUFF:
|
||||
@@ -30,7 +27,8 @@ UnMock MOCK_WIDGET_DISPLAY_TEMPLATE_JSON into db with objects and with seeded da
|
||||
- Can it just make a default template if none is found? (no they are all required)
|
||||
- Once both lists are working:
|
||||
|
||||
|
||||
AyaFormFieldDefinitions still has UI field datatype in it, but I don't think I'll need it so ponder this by looking at tests and client and make a decision
|
||||
- Consider if there is some possible future use for this or YAGNI
|
||||
|
||||
//READ THESE NOTES, IS IT ALL DONE NOW?
|
||||
- abstract away the commonalities into other classes
|
||||
|
||||
@@ -145,7 +145,7 @@ namespace AyaNova.Api.Controllers
|
||||
|
||||
if (!ModelState.IsValid)
|
||||
return BadRequest(new ApiErrorResponse(ModelState));
|
||||
return Ok(ApiOkResponse.Response(AyaObjectFieldDefinitions.AyaObjectFieldDefinitionKeys, true));
|
||||
return Ok(ApiOkResponse.Response(AyaFormFieldDefinitions.AyaFormFieldDefinitionKeys, true));
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -59,9 +59,9 @@ namespace AyaNova.Api.Controllers
|
||||
if (!ModelState.IsValid)
|
||||
return BadRequest(new ApiErrorResponse(ModelState));
|
||||
|
||||
if (AyaObjectFieldDefinitions.IsValidObjectKey(objectKey))
|
||||
if (AyaFormFieldDefinitions.IsValidFormFieldDefinitionKey(objectKey))
|
||||
{
|
||||
return Ok(ApiOkResponse.Response(AyaObjectFieldDefinitions.AyaObjectFields(objectKey), true));
|
||||
return Ok(ApiOkResponse.Response(AyaFormFieldDefinitions.AyaObjectFields(objectKey), true));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
194
server/AyaNova/biz/AyaFormFieldDefinitions.cs
Normal file
194
server/AyaNova/biz/AyaFormFieldDefinitions.cs
Normal file
@@ -0,0 +1,194 @@
|
||||
using System.Linq;
|
||||
using System.Collections.Generic;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace AyaNova.Biz
|
||||
{
|
||||
//************************************************
|
||||
// This contains all the fields that are customizable on forms
|
||||
// it is used for both validation and driving the UI etc
|
||||
//See the DataList folder / namespace for LIST related similar class
|
||||
|
||||
public static class AyaFormFieldDefinitions
|
||||
{
|
||||
|
||||
//DEFINE VALID KEYS HERE
|
||||
|
||||
public const string WIDGET_KEY = "widget";
|
||||
public const string USER_KEY = "user";
|
||||
|
||||
|
||||
public static List<string> AyaFormFieldDefinitionKeys
|
||||
{
|
||||
get
|
||||
{
|
||||
List<string> l = new List<string>{
|
||||
WIDGET_KEY, USER_KEY
|
||||
};
|
||||
return l;
|
||||
}
|
||||
}
|
||||
|
||||
public static bool IsValidFormFieldDefinitionKey(string key)
|
||||
{
|
||||
return AyaFormFieldDefinitionKeys.Contains(key);
|
||||
}
|
||||
|
||||
public static List<AyaFormFieldDefinition> AyaObjectFields(string key)
|
||||
{
|
||||
/*
|
||||
***************************** WARNING: Be careful here, if a standard field is hideable and also it's DB SCHEMA is set to NON NULLABLE then the CLIENT end needs to set a default
|
||||
***************************** Otherwise the hidden field can't be set and the object can't be saved EVER
|
||||
*/
|
||||
List<AyaFormFieldDefinition> l = new List<AyaFormFieldDefinition>();
|
||||
switch (key)
|
||||
{
|
||||
case WIDGET_KEY:
|
||||
#region WIDGET_KEY
|
||||
|
||||
//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 AyaFormFieldDefinition { LtKey = "df", AyaObjectType = (int)AyaType.Widget });
|
||||
l.Add(new AyaFormFieldDefinition { LtKey = "WidgetName", FieldKey = "Name", UiFieldDataType = (int)AyaUiFieldDataType.Text, Hideable = false });
|
||||
l.Add(new AyaFormFieldDefinition { LtKey = "WidgetSerial", FieldKey = "Serial", UiFieldDataType = (int)AyaUiFieldDataType.Integer });
|
||||
l.Add(new AyaFormFieldDefinition { LtKey = "WidgetDollarAmount", FieldKey = "DollarAmount", UiFieldDataType = (int)AyaUiFieldDataType.Currency });
|
||||
l.Add(new AyaFormFieldDefinition { LtKey = "WidgetCount", FieldKey = "Count", UiFieldDataType = (int)AyaUiFieldDataType.Integer });
|
||||
l.Add(new AyaFormFieldDefinition { LtKey = "WidgetRoles", FieldKey = "Roles", UiFieldDataType = (int)AyaUiFieldDataType.Enum, EnumType = typeof(AuthorizationRoles).ToString() });
|
||||
l.Add(new AyaFormFieldDefinition { LtKey = "WidgetStartDate", FieldKey = "StartDate", UiFieldDataType = (int)AyaUiFieldDataType.DateTime });
|
||||
l.Add(new AyaFormFieldDefinition { LtKey = "WidgetEndDate", FieldKey = "EndDate", UiFieldDataType = (int)AyaUiFieldDataType.DateTime });
|
||||
l.Add(new AyaFormFieldDefinition { LtKey = "WidgetNotes", FieldKey = "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 AyaFormFieldDefinition { LtKey = "User", FieldKey = "userid", UiFieldDataType = (int)AyaUiFieldDataType.Text, AyaObjectType = (int)AyaType.User });
|
||||
l.Add(new AyaFormFieldDefinition { LtKey = "Active", FieldKey = "Active", UiFieldDataType = (int)AyaUiFieldDataType.Bool, Hideable = false });
|
||||
l.Add(new AyaFormFieldDefinition { LtKey = "Tags", FieldKey = "Tags", UiFieldDataType = (int)AyaUiFieldDataType.Tags });
|
||||
|
||||
l.Add(new AyaFormFieldDefinition { LtKey = "WidgetCustom1", FieldKey = "WidgetCustom1", IsCustomField = true });
|
||||
l.Add(new AyaFormFieldDefinition { LtKey = "WidgetCustom2", FieldKey = "WidgetCustom2", IsCustomField = true });
|
||||
l.Add(new AyaFormFieldDefinition { LtKey = "WidgetCustom3", FieldKey = "WidgetCustom3", IsCustomField = true });
|
||||
l.Add(new AyaFormFieldDefinition { LtKey = "WidgetCustom4", FieldKey = "WidgetCustom4", IsCustomField = true });
|
||||
l.Add(new AyaFormFieldDefinition { LtKey = "WidgetCustom5", FieldKey = "WidgetCustom5", IsCustomField = true });
|
||||
l.Add(new AyaFormFieldDefinition { LtKey = "WidgetCustom6", FieldKey = "WidgetCustom6", IsCustomField = true });
|
||||
l.Add(new AyaFormFieldDefinition { LtKey = "WidgetCustom7", FieldKey = "WidgetCustom7", IsCustomField = true });
|
||||
l.Add(new AyaFormFieldDefinition { LtKey = "WidgetCustom8", FieldKey = "WidgetCustom8", IsCustomField = true });
|
||||
l.Add(new AyaFormFieldDefinition { LtKey = "WidgetCustom9", FieldKey = "WidgetCustom9", IsCustomField = true });
|
||||
l.Add(new AyaFormFieldDefinition { LtKey = "WidgetCustom10", FieldKey = "WidgetCustom10", IsCustomField = true });
|
||||
l.Add(new AyaFormFieldDefinition { LtKey = "WidgetCustom11", FieldKey = "WidgetCustom11", IsCustomField = true });
|
||||
l.Add(new AyaFormFieldDefinition { LtKey = "WidgetCustom12", FieldKey = "WidgetCustom12", IsCustomField = true });
|
||||
l.Add(new AyaFormFieldDefinition { LtKey = "WidgetCustom13", FieldKey = "WidgetCustom13", IsCustomField = true });
|
||||
l.Add(new AyaFormFieldDefinition { LtKey = "WidgetCustom14", FieldKey = "WidgetCustom14", IsCustomField = true });
|
||||
l.Add(new AyaFormFieldDefinition { LtKey = "WidgetCustom15", FieldKey = "WidgetCustom15", IsCustomField = true });
|
||||
l.Add(new AyaFormFieldDefinition { LtKey = "WidgetCustom16", FieldKey = "WidgetCustom16", IsCustomField = true });
|
||||
break;
|
||||
#endregion
|
||||
case USER_KEY:
|
||||
#region USER_KEY
|
||||
l.Add(new AyaFormFieldDefinition { LtKey = "df", AyaObjectType = (int)AyaType.User });
|
||||
l.Add(new AyaFormFieldDefinition { LtKey = "Name", FieldKey = "Name", UiFieldDataType = (int)AyaUiFieldDataType.Text, Hideable = false });
|
||||
l.Add(new AyaFormFieldDefinition { LtKey = "UserEmployeeNumber", FieldKey = "EmployeeNumber", UiFieldDataType = (int)AyaUiFieldDataType.Text });
|
||||
l.Add(new AyaFormFieldDefinition { LtKey = "AuthorizationRoles", FieldKey = "Roles", Hideable = false, UiFieldDataType = (int)AyaUiFieldDataType.Enum, EnumType = typeof(AuthorizationRoles).ToString() });
|
||||
l.Add(new AyaFormFieldDefinition { LtKey = "UserNotes", FieldKey = "Notes", UiFieldDataType = (int)AyaUiFieldDataType.Text });
|
||||
l.Add(new AyaFormFieldDefinition { LtKey = "UserUserType", FieldKey = "UserType", Hideable = false, UiFieldDataType = (int)AyaUiFieldDataType.Enum, EnumType = typeof(UserType).ToString() });
|
||||
l.Add(new AyaFormFieldDefinition { LtKey = "Active", FieldKey = "Active", UiFieldDataType = (int)AyaUiFieldDataType.Bool, Hideable = false });
|
||||
l.Add(new AyaFormFieldDefinition { LtKey = "Tags", FieldKey = "Tags", UiFieldDataType = (int)AyaUiFieldDataType.Tags });
|
||||
|
||||
l.Add(new AyaFormFieldDefinition { LtKey = "UserCustom1", FieldKey = "UserCustom1", IsCustomField = true });
|
||||
l.Add(new AyaFormFieldDefinition { LtKey = "UserCustom2", FieldKey = "UserCustom2", IsCustomField = true });
|
||||
l.Add(new AyaFormFieldDefinition { LtKey = "UserCustom3", FieldKey = "UserCustom3", IsCustomField = true });
|
||||
l.Add(new AyaFormFieldDefinition { LtKey = "UserCustom4", FieldKey = "UserCustom4", IsCustomField = true });
|
||||
l.Add(new AyaFormFieldDefinition { LtKey = "UserCustom5", FieldKey = "UserCustom5", IsCustomField = true });
|
||||
l.Add(new AyaFormFieldDefinition { LtKey = "UserCustom6", FieldKey = "UserCustom6", IsCustomField = true });
|
||||
l.Add(new AyaFormFieldDefinition { LtKey = "UserCustom7", FieldKey = "UserCustom7", IsCustomField = true });
|
||||
l.Add(new AyaFormFieldDefinition { LtKey = "UserCustom8", FieldKey = "UserCustom8", IsCustomField = true });
|
||||
l.Add(new AyaFormFieldDefinition { LtKey = "UserCustom9", FieldKey = "UserCustom9", IsCustomField = true });
|
||||
l.Add(new AyaFormFieldDefinition { LtKey = "UserCustom10", FieldKey = "UserCustom10", IsCustomField = true });
|
||||
l.Add(new AyaFormFieldDefinition { LtKey = "UserCustom11", FieldKey = "UserCustom11", IsCustomField = true });
|
||||
l.Add(new AyaFormFieldDefinition { LtKey = "UserCustom12", FieldKey = "UserCustom12", IsCustomField = true });
|
||||
l.Add(new AyaFormFieldDefinition { LtKey = "UserCustom13", FieldKey = "UserCustom13", IsCustomField = true });
|
||||
l.Add(new AyaFormFieldDefinition { LtKey = "UserCustom14", FieldKey = "UserCustom14", IsCustomField = true });
|
||||
l.Add(new AyaFormFieldDefinition { LtKey = "UserCustom15", FieldKey = "UserCustom15", IsCustomField = true });
|
||||
l.Add(new AyaFormFieldDefinition { LtKey = "UserCustom16", FieldKey = "UserCustom16", IsCustomField = true });
|
||||
break;
|
||||
#endregion
|
||||
|
||||
|
||||
|
||||
default:
|
||||
throw new System.ArgumentOutOfRangeException($"AyaFormFieldDefinitions: {key} is not valid");
|
||||
}
|
||||
return l;
|
||||
}
|
||||
|
||||
|
||||
// public static string TranslateLTCustomFieldToInternalCustomFieldName(string lTCustomFieldName)
|
||||
// {
|
||||
// var i = System.Convert.ToInt32(System.Text.RegularExpressions.Regex.Replace(
|
||||
// lTCustomFieldName, // Our input
|
||||
// "[^0-9]", // Select everything that is not in the range of 0-9
|
||||
// "" // Replace that with an empty string.
|
||||
// ));
|
||||
|
||||
// return $"c{i}";
|
||||
// }
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}//eoc ObjectFields
|
||||
|
||||
public class AyaFormFieldDefinition
|
||||
{
|
||||
//CLIENT / SERVER Unique identifier used at BOTH client and server
|
||||
//also the sql displaycolumnname if identical
|
||||
public string FieldKey { get; set; }
|
||||
|
||||
//CLIENT Use only for display
|
||||
public string LtKey { get; set; }
|
||||
|
||||
//CLIENT form customization
|
||||
public bool Hideable { get; set; }
|
||||
|
||||
//CLIENT / SERVER - client display server validation purposes
|
||||
public bool IsCustomField { get; set; }
|
||||
|
||||
// //CLIENT / SERVER - client display server validation purposes
|
||||
// public bool IsFilterable { get; set; }
|
||||
|
||||
// //CLIENT / SERVER - client display server validation purposes
|
||||
// public bool IsSortable { get; set; }
|
||||
|
||||
//CLIENT Use only for display
|
||||
public int UiFieldDataType { get; set; }
|
||||
|
||||
//CLIENT Use only for display
|
||||
public string EnumType { get; set; }
|
||||
|
||||
//CLIENT / SERVER - client display and to indicate what object to open , Server for formatting return object
|
||||
public int AyaObjectType { get; set; }
|
||||
|
||||
|
||||
|
||||
|
||||
public AyaFormFieldDefinition()
|
||||
{
|
||||
//most common defaults
|
||||
Hideable = true;
|
||||
IsCustomField = false;
|
||||
// IsFilterable = true;
|
||||
// IsSortable = true;
|
||||
//Set openable object type to no type which is the default and means it's not a link to another object
|
||||
AyaObjectType = (int)AyaType.NoType;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}//ens
|
||||
@@ -1,408 +0,0 @@
|
||||
using System.Linq;
|
||||
using System.Collections.Generic;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace AyaNova.Biz
|
||||
{
|
||||
//************************************************
|
||||
// This contains all the fields that are:
|
||||
// - Customizable on forms
|
||||
// - In grid list templates
|
||||
//In addition it serves as a source for valid object keys in AvailableObjectKeys
|
||||
//SQL code uses this:
|
||||
// - a source of database column names and ID column names
|
||||
// - Essentially this replaces all the attribute decoration in v7 and the individual classes with objects
|
||||
|
||||
|
||||
public static class AyaObjectFieldDefinitions
|
||||
{
|
||||
|
||||
//DEFINE VALID KEYS HERE
|
||||
//For objects that are both list and edit form it's just the name of the object
|
||||
//For objects that are compound list objects or reporting objects it's whatever uniquely but clearly identifies that and ends in _LIST
|
||||
public const string WIDGET_KEY = "widget";
|
||||
public const string USER_KEY = "user";
|
||||
public const string TEST_WIDGET_USER_EMAIL_ADDRESS_LIST_KEY = "TEST_WIDGET_USER_EMAIL_ADDRESS_LIST";//for development testing, not a real thing going forward
|
||||
|
||||
|
||||
public static List<string> AyaObjectFieldDefinitionKeys
|
||||
{
|
||||
get
|
||||
{
|
||||
List<string> l = new List<string>{
|
||||
WIDGET_KEY, USER_KEY
|
||||
};
|
||||
return l;
|
||||
}
|
||||
}
|
||||
|
||||
public static bool IsValidObjectKey(string key)
|
||||
{
|
||||
return AyaObjectFieldDefinitionKeys.Contains(key);
|
||||
}
|
||||
|
||||
public static List<AyaObjectFieldDefinition> AyaObjectFields(string key)
|
||||
{
|
||||
/*
|
||||
***************************** WARNING: Be careful here, if a standard field is hideable and also it's DB SCHEMA is set to NON NULLABLE then the CLIENT end needs to set a default
|
||||
***************************** Otherwise the hidden field can't be set and the object can't be saved EVER
|
||||
Defaults of paramterless constructor:
|
||||
SharedLTKey = false;
|
||||
Hideable = true;
|
||||
Custom = false;
|
||||
Filterable = true;
|
||||
Sortable = true;
|
||||
MiniAvailable = true;
|
||||
*/
|
||||
List<AyaObjectFieldDefinition> l = new List<AyaObjectFieldDefinition>();
|
||||
switch (key)
|
||||
{
|
||||
/*
|
||||
TODO: going to need some SQL hints added here
|
||||
- SqlIDColumn indicating what the ID column is to fetch the underlying value from
|
||||
- SqlColumn indicating an alternative column name as known to the sql server if it varies from the propertyname (in lowercase)
|
||||
|
||||
Also: going to need a definition of the table name and the default identity column
|
||||
Maybe decorate with an INTERNAL ONLY bool so that we see it at the server but not at the client or when fetched as possible fields
|
||||
|
||||
hypothetical to help develop this:
|
||||
Client and head office list:
|
||||
{key=ClientName, propertyname=Name, idcolumn=id,}
|
||||
|
||||
In v7 this is what the attribute decorations looked like:
|
||||
[SqlColumnNameAttribute("aClient.aName", "aClient.aID")]
|
||||
public GridNameValueCellItem LT_O_Client
|
||||
{
|
||||
get
|
||||
{
|
||||
return mClient;
|
||||
}
|
||||
}
|
||||
|
||||
[SqlColumnNameAttribute("aHeadOffice.aName","aHeadOffice.aID")]
|
||||
public GridNameValueCellItem LT_O_HeadOffice
|
||||
{
|
||||
get
|
||||
{
|
||||
return mHeadOffice;
|
||||
}
|
||||
}
|
||||
|
||||
And the query (from clientlistdetailed)
|
||||
string q =
|
||||
"SELECT ~MAXRECS~ ACLIENT.aID, ACLIENT.aName, ACLIENT.aModified, " +
|
||||
" ACLIENT.AACTIVE, ACLIENT.aUsesBanking, " +
|
||||
" ACLIENT.aBillHeadOffice, ACLIENT.aWebAddress, " +
|
||||
" ACLIENT.aDispatchZoneID, ACLIENT.aClientGroupID, " +
|
||||
" ACLIENT.aLastWorkorderID, " +
|
||||
" ACLIENT.aLastServiceDate, (SELECT TOP 1 aSBANK.aHoursBalance " +
|
||||
"FROM aServiceBank aSBANK WHERE aSBANK.AAPPLIESTOROOTOBJECTID " +
|
||||
"= ACLIENT.aID ORDER " +
|
||||
"BY aSBANK.aCreated DESC) AS HOURSBAL, (SELECT TOP " +
|
||||
"1 aSBANK.aIncidentsBalance FROM aServiceBank aSBANK " +
|
||||
"WHERE aSBANK.AAPPLIESTOROOTOBJECTID = ACLIENT.aID " +
|
||||
"ORDER BY aSBANK.aCreated DESC) AS INCIDENTSBAL, " +
|
||||
" (SELECT TOP 1 aSBANK.aCurrencyBalance FROM " +
|
||||
"aServiceBank aSBANK WHERE aSBANK.AAPPLIESTOROOTOBJECTID " +
|
||||
"= ACLIENT.aID ORDER BY aSBANK.aCreated DESC) " +
|
||||
"AS CURRENCYBAL, " +
|
||||
" ACLIENT.AACCOUNTNUMBER, aHeadOffice.aName " +
|
||||
"AS aHeadOfficeName, aHeadOffice.aID " +
|
||||
"AS aHeadOfficeID, aDispatchZone.aName AS aDispatchZoneName, " +
|
||||
" ACLIENT.aRegionID, aRegion.aName " +
|
||||
"AS aRegionName, aClientGroup.aName AS " +
|
||||
"aClientGroupName, aPHYSICAL.aDeliveryAddress, " +
|
||||
"aPHYSICAL.aCity, aPHYSICAL.aStateProv, aPHYSICAL.aCountry, " +
|
||||
" aPHYSICAL.aPostal, aPHYSICAL.AADDRESSTYPE, " +
|
||||
" aPHYSICAL.aLongitude, aPHYSICAL.aLatitude, " +
|
||||
" aWorkorderService.aServiceNumber, " +
|
||||
" ACLIENT.aContractID, aContract.aName AS " +
|
||||
"aContractName, ACLIENT.aContractExpires, aPHYSICAL.aCountryCode, " +
|
||||
" aPOSTAL.AADDRESSTYPE AS aPAddressType, " +
|
||||
" aPOSTAL.aDeliveryAddress AS aPDeliveryAddress, " +
|
||||
" aPOSTAL.aCity AS aPCity, aPOSTAL.aStateProv " +
|
||||
"AS aPStateProv, aPOSTAL.aCountryCode AS aPCountryCode, " +
|
||||
" aPOSTAL.aCountry AS aPCountry, aPOSTAL.aPostal " +
|
||||
"AS aPPostal, ACLIENT.aCustom1, ACLIENT.aCustom2, " +
|
||||
" ACLIENT.aCustom3, ACLIENT.aCustom4, " +
|
||||
" ACLIENT.aCustom5, ACLIENT.aCustom6, " +
|
||||
" ACLIENT.aCustom7, ACLIENT.aCustom8, ACLIENT.aCustom9, " +
|
||||
" ACLIENT.aCustom0, ACLIENT.aTechNotes, " +
|
||||
" ACLIENT.aNotes, ACLIENT.aPopUpNotes, " +
|
||||
" ACLIENT.ACONTACT, ACLIENT.AEMAIL, ACLIENT.APHONE1, ACLIENT.APHONE2, ACLIENT.APHONE3, ACLIENT.APHONE4, ACLIENT.APHONE5, ACLIENT.ACONTACTNOTES " +
|
||||
|
||||
|
||||
|
||||
"FROM " +
|
||||
" ACLIENT ACLIENT " +
|
||||
" LEFT OUTER JOIN ADISPATCHZONE ON (ACLIENT.ADISPATCHZONEID=ADISPATCHZONE.AID) " +
|
||||
" LEFT OUTER JOIN ACLIENTGROUP ON (ACLIENT.ACLIENTGROUPID=ACLIENTGROUP.AID) " +
|
||||
" LEFT OUTER JOIN AADDRESS aPHYSICAL ON (ACLIENT.AID=aPHYSICAL.AROOTOBJECTID) " +
|
||||
" LEFT OUTER JOIN AADDRESS aPOSTAL ON (ACLIENT.AID=aPOSTAL.AROOTOBJECTID) " +
|
||||
" LEFT OUTER JOIN ACONTRACT ON (ACLIENT.ACONTRACTID=ACONTRACT.AID) " +
|
||||
" LEFT OUTER JOIN AHEADOFFICE ON (ACLIENT.AHEADOFFICEID=AHEADOFFICE.AID) " +
|
||||
" LEFT OUTER JOIN AWORKORDERSERVICE ON (ACLIENT.ALASTWORKORDERID=AWORKORDERSERVICE.AWORKORDERID) " +
|
||||
" LEFT OUTER JOIN AREGION ON (ACLIENT.AREGIONID=AREGION.AID) " +
|
||||
|
||||
"WHERE (aPHYSICAL.AADDRESSTYPE " +
|
||||
"IS NULL OR aPHYSICAL.AADDRESSTYPE " +
|
||||
"= 2) AND (aPOSTAL.AADDRESSTYPE IS NULL OR aPOSTAL.AADDRESSTYPE " +
|
||||
"= 1) \r\n ";
|
||||
|
||||
|
||||
*/
|
||||
case WIDGET_KEY:
|
||||
#region WIDGET_KEY
|
||||
|
||||
//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 AyaObjectFieldDefinition { LtKey = "df", AyaObjectType = (int)AyaType.Widget });
|
||||
l.Add(new AyaObjectFieldDefinition { LtKey = "WidgetName", FieldKey = "Name", UiFieldDataType = (int)AyaUiFieldDataType.Text, Hideable = false });
|
||||
l.Add(new AyaObjectFieldDefinition { LtKey = "WidgetSerial", FieldKey = "Serial", UiFieldDataType = (int)AyaUiFieldDataType.Integer });
|
||||
l.Add(new AyaObjectFieldDefinition { LtKey = "WidgetDollarAmount", FieldKey = "DollarAmount", UiFieldDataType = (int)AyaUiFieldDataType.Currency });
|
||||
l.Add(new AyaObjectFieldDefinition { LtKey = "WidgetCount", FieldKey = "Count", UiFieldDataType = (int)AyaUiFieldDataType.Integer });
|
||||
l.Add(new AyaObjectFieldDefinition { LtKey = "WidgetRoles", FieldKey = "Roles", UiFieldDataType = (int)AyaUiFieldDataType.Enum, EnumType = typeof(AuthorizationRoles).ToString() });
|
||||
l.Add(new AyaObjectFieldDefinition { LtKey = "WidgetStartDate", FieldKey = "StartDate", UiFieldDataType = (int)AyaUiFieldDataType.DateTime });
|
||||
l.Add(new AyaObjectFieldDefinition { LtKey = "WidgetEndDate", FieldKey = "EndDate", UiFieldDataType = (int)AyaUiFieldDataType.DateTime });
|
||||
l.Add(new AyaObjectFieldDefinition { LtKey = "WidgetNotes", FieldKey = "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 AyaObjectFieldDefinition { LtKey = "User", FieldKey = "userid", UiFieldDataType = (int)AyaUiFieldDataType.Text, AyaObjectType = (int)AyaType.User });
|
||||
l.Add(new AyaObjectFieldDefinition { LtKey = "Active", FieldKey = "Active", UiFieldDataType = (int)AyaUiFieldDataType.Bool, Hideable = false });
|
||||
l.Add(new AyaObjectFieldDefinition { LtKey = "Tags", FieldKey = "Tags", UiFieldDataType = (int)AyaUiFieldDataType.Tags });
|
||||
|
||||
l.Add(new AyaObjectFieldDefinition { LtKey = "WidgetCustom1", FieldKey = "WidgetCustom1", IsCustomField = true });
|
||||
l.Add(new AyaObjectFieldDefinition { LtKey = "WidgetCustom2", FieldKey = "WidgetCustom2", IsCustomField = true });
|
||||
l.Add(new AyaObjectFieldDefinition { LtKey = "WidgetCustom3", FieldKey = "WidgetCustom3", IsCustomField = true });
|
||||
l.Add(new AyaObjectFieldDefinition { LtKey = "WidgetCustom4", FieldKey = "WidgetCustom4", IsCustomField = true });
|
||||
l.Add(new AyaObjectFieldDefinition { LtKey = "WidgetCustom5", FieldKey = "WidgetCustom5", IsCustomField = true });
|
||||
l.Add(new AyaObjectFieldDefinition { LtKey = "WidgetCustom6", FieldKey = "WidgetCustom6", IsCustomField = true });
|
||||
l.Add(new AyaObjectFieldDefinition { LtKey = "WidgetCustom7", FieldKey = "WidgetCustom7", IsCustomField = true });
|
||||
l.Add(new AyaObjectFieldDefinition { LtKey = "WidgetCustom8", FieldKey = "WidgetCustom8", IsCustomField = true });
|
||||
l.Add(new AyaObjectFieldDefinition { LtKey = "WidgetCustom9", FieldKey = "WidgetCustom9", IsCustomField = true });
|
||||
l.Add(new AyaObjectFieldDefinition { LtKey = "WidgetCustom10", FieldKey = "WidgetCustom10", IsCustomField = true });
|
||||
l.Add(new AyaObjectFieldDefinition { LtKey = "WidgetCustom11", FieldKey = "WidgetCustom11", IsCustomField = true });
|
||||
l.Add(new AyaObjectFieldDefinition { LtKey = "WidgetCustom12", FieldKey = "WidgetCustom12", IsCustomField = true });
|
||||
l.Add(new AyaObjectFieldDefinition { LtKey = "WidgetCustom13", FieldKey = "WidgetCustom13", IsCustomField = true });
|
||||
l.Add(new AyaObjectFieldDefinition { LtKey = "WidgetCustom14", FieldKey = "WidgetCustom14", IsCustomField = true });
|
||||
l.Add(new AyaObjectFieldDefinition { LtKey = "WidgetCustom15", FieldKey = "WidgetCustom15", IsCustomField = true });
|
||||
l.Add(new AyaObjectFieldDefinition { LtKey = "WidgetCustom16", FieldKey = "WidgetCustom16", IsCustomField = true });
|
||||
break;
|
||||
#endregion
|
||||
case USER_KEY:
|
||||
#region USER_KEY
|
||||
l.Add(new AyaObjectFieldDefinition { LtKey = "df", AyaObjectType = (int)AyaType.User });
|
||||
l.Add(new AyaObjectFieldDefinition { LtKey = "Name", FieldKey = "Name", UiFieldDataType = (int)AyaUiFieldDataType.Text, Hideable = false });
|
||||
l.Add(new AyaObjectFieldDefinition { LtKey = "UserEmployeeNumber", FieldKey = "EmployeeNumber", UiFieldDataType = (int)AyaUiFieldDataType.Text });
|
||||
l.Add(new AyaObjectFieldDefinition { LtKey = "AuthorizationRoles", FieldKey = "Roles", Hideable = false, UiFieldDataType = (int)AyaUiFieldDataType.Enum, EnumType = typeof(AuthorizationRoles).ToString() });
|
||||
l.Add(new AyaObjectFieldDefinition { LtKey = "UserNotes", FieldKey = "Notes", UiFieldDataType = (int)AyaUiFieldDataType.Text });
|
||||
l.Add(new AyaObjectFieldDefinition { LtKey = "UserUserType", FieldKey = "UserType", Hideable = false, UiFieldDataType = (int)AyaUiFieldDataType.Enum, EnumType = typeof(UserType).ToString() });
|
||||
l.Add(new AyaObjectFieldDefinition { LtKey = "Active", FieldKey = "Active", UiFieldDataType = (int)AyaUiFieldDataType.Bool, Hideable = false });
|
||||
l.Add(new AyaObjectFieldDefinition { LtKey = "Tags", FieldKey = "Tags", UiFieldDataType = (int)AyaUiFieldDataType.Tags });
|
||||
|
||||
l.Add(new AyaObjectFieldDefinition { LtKey = "UserCustom1", FieldKey = "UserCustom1", IsCustomField = true });
|
||||
l.Add(new AyaObjectFieldDefinition { LtKey = "UserCustom2", FieldKey = "UserCustom2", IsCustomField = true });
|
||||
l.Add(new AyaObjectFieldDefinition { LtKey = "UserCustom3", FieldKey = "UserCustom3", IsCustomField = true });
|
||||
l.Add(new AyaObjectFieldDefinition { LtKey = "UserCustom4", FieldKey = "UserCustom4", IsCustomField = true });
|
||||
l.Add(new AyaObjectFieldDefinition { LtKey = "UserCustom5", FieldKey = "UserCustom5", IsCustomField = true });
|
||||
l.Add(new AyaObjectFieldDefinition { LtKey = "UserCustom6", FieldKey = "UserCustom6", IsCustomField = true });
|
||||
l.Add(new AyaObjectFieldDefinition { LtKey = "UserCustom7", FieldKey = "UserCustom7", IsCustomField = true });
|
||||
l.Add(new AyaObjectFieldDefinition { LtKey = "UserCustom8", FieldKey = "UserCustom8", IsCustomField = true });
|
||||
l.Add(new AyaObjectFieldDefinition { LtKey = "UserCustom9", FieldKey = "UserCustom9", IsCustomField = true });
|
||||
l.Add(new AyaObjectFieldDefinition { LtKey = "UserCustom10", FieldKey = "UserCustom10", IsCustomField = true });
|
||||
l.Add(new AyaObjectFieldDefinition { LtKey = "UserCustom11", FieldKey = "UserCustom11", IsCustomField = true });
|
||||
l.Add(new AyaObjectFieldDefinition { LtKey = "UserCustom12", FieldKey = "UserCustom12", IsCustomField = true });
|
||||
l.Add(new AyaObjectFieldDefinition { LtKey = "UserCustom13", FieldKey = "UserCustom13", IsCustomField = true });
|
||||
l.Add(new AyaObjectFieldDefinition { LtKey = "UserCustom14", FieldKey = "UserCustom14", IsCustomField = true });
|
||||
l.Add(new AyaObjectFieldDefinition { LtKey = "UserCustom15", FieldKey = "UserCustom15", IsCustomField = true });
|
||||
l.Add(new AyaObjectFieldDefinition { LtKey = "UserCustom16", FieldKey = "UserCustom16", IsCustomField = true });
|
||||
break;
|
||||
#endregion
|
||||
case TEST_WIDGET_USER_EMAIL_ADDRESS_LIST_KEY:
|
||||
#region TEST_WIDGET_USER_EMAIL_ADDRESS_LIST_KEY
|
||||
|
||||
l.Add(new AyaObjectFieldDefinition { FieldKey = "df", AyaObjectType = (int)AyaType.Widget, SqlIdColumnName = "awidget.id" });
|
||||
l.Add(new AyaObjectFieldDefinition
|
||||
{
|
||||
FieldKey = "widgetname",
|
||||
LtKey = "WidgetName",
|
||||
UiFieldDataType = (int)AyaUiFieldDataType.Text,
|
||||
AyaObjectType = (int)AyaType.Widget,
|
||||
SqlIdColumnName = "awidget.id",
|
||||
SqlValueColumnName = "awidget.name"
|
||||
});
|
||||
l.Add(new AyaObjectFieldDefinition
|
||||
{
|
||||
FieldKey = "username",
|
||||
LtKey = "User",
|
||||
UiFieldDataType = (int)AyaUiFieldDataType.Text,
|
||||
AyaObjectType = (int)AyaType.User,
|
||||
SqlIdColumnName = "auser.id",
|
||||
SqlValueColumnName = "auser.name"
|
||||
});
|
||||
l.Add(new AyaObjectFieldDefinition
|
||||
{
|
||||
LtKey = "UserEmailAddress",
|
||||
FieldKey = "emailaddress",
|
||||
SqlValueColumnName = "auseroptions.emailaddress",
|
||||
UiFieldDataType = (int)AyaUiFieldDataType.EmailAddress
|
||||
});
|
||||
l.Add(new AyaObjectFieldDefinition
|
||||
{
|
||||
LtKey = "Active",
|
||||
FieldKey = "widgetactive",
|
||||
SqlValueColumnName = "awidget.active",
|
||||
UiFieldDataType = (int)AyaUiFieldDataType.Bool
|
||||
});
|
||||
break;
|
||||
#endregion
|
||||
|
||||
|
||||
default:
|
||||
throw new System.ArgumentOutOfRangeException($"ObjectFields: {key} is not a valid object key");
|
||||
}
|
||||
return l;
|
||||
}
|
||||
|
||||
|
||||
public static string TranslateLTCustomFieldToInternalCustomFieldName(string lTCustomFieldName)
|
||||
{
|
||||
var i = System.Convert.ToInt32(System.Text.RegularExpressions.Regex.Replace(
|
||||
lTCustomFieldName, // Our input
|
||||
"[^0-9]", // Select everything that is not in the range of 0-9
|
||||
"" // Replace that with an empty string.
|
||||
));
|
||||
|
||||
return $"c{i}";
|
||||
}
|
||||
|
||||
|
||||
|
||||
//Standard mini COLUMN definition
|
||||
public static string GenerateMINIListColumnsJSON(AyaType defaultLinkType)
|
||||
{
|
||||
return $"[ {{\"cm\":\"df\",\"dt\":0,\"ay\":{(int)defaultLinkType}}},{{\"cm\":\"Widget\",\"dt\":{(int)AyaUiFieldDataType.Text},\"ay\":{(int)defaultLinkType}}}]";
|
||||
}
|
||||
|
||||
|
||||
//Accept a json template
|
||||
//return a column list suitable for api list return
|
||||
public static string GenerateListColumnsJSONFromTemplate(AyaType defaultLinkType, List<AyaObjectFieldDefinition> objectFields, string template)
|
||||
{
|
||||
//parse the template
|
||||
var jtemplate = JObject.Parse(template);
|
||||
|
||||
|
||||
//convert to strings (https://stackoverflow.com/a/33836599/8939)
|
||||
var fullFields = ((JArray)jtemplate["full"]).ToObject<string[]>();
|
||||
|
||||
//Generate JSON fragment to return with column definitions
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
sb.Append("[");
|
||||
//df First column is always the df column
|
||||
sb.Append($"{{\"cm\":\"df\",\"dt\":0,\"ay\":{(int)defaultLinkType}}}");
|
||||
|
||||
foreach (string s in fullFields)
|
||||
{
|
||||
AyaObjectFieldDefinition o = objectFields.FirstOrDefault(x => x.FieldKey == s);
|
||||
#if (DEBUG)
|
||||
//Developers little helper
|
||||
if (o == null)
|
||||
{
|
||||
throw new System.ArgumentNullException($"DEV ERROR in objectFields::GenerateListColumnsJSONFromTemplate - field {s} specified in template was NOT found in ObjectFields list");
|
||||
}
|
||||
#endif
|
||||
|
||||
if (o != null)
|
||||
{//Here is where we can vet the field name, if it doesn't exist. For production we'll just ignore those ones
|
||||
|
||||
sb.Append(",");
|
||||
sb.Append("{");
|
||||
//Build required part of column definition
|
||||
sb.Append($"\"cm\":\"{o.LtKey}\",\"dt\":{(int)o.UiFieldDataType}");
|
||||
|
||||
//Has a AyObjectType? (linkable / openable)
|
||||
if (o.AyaObjectType != 0)
|
||||
sb.Append($",\"ay\":{(int)o.AyaObjectType}");
|
||||
|
||||
sb.Append("}");
|
||||
|
||||
}
|
||||
}
|
||||
sb.Append("]");
|
||||
|
||||
return sb.ToString();
|
||||
}
|
||||
|
||||
|
||||
|
||||
}//eoc ObjectFields
|
||||
|
||||
public class AyaObjectFieldDefinition
|
||||
{
|
||||
//CLIENT / SERVER Unique identifier used at BOTH client and server
|
||||
//also the sql displaycolumnname if identical
|
||||
public string FieldKey { get; set; }
|
||||
|
||||
//CLIENT Use only for display
|
||||
public string LtKey { get; set; }
|
||||
|
||||
//CLIENT form customization
|
||||
public bool Hideable { get; set; }
|
||||
|
||||
//CLIENT / SERVER - client display server validation purposes
|
||||
public bool IsCustomField { get; set; }
|
||||
|
||||
//CLIENT / SERVER - client display server validation purposes
|
||||
public bool IsFilterable { get; set; }
|
||||
|
||||
//CLIENT / SERVER - client display server validation purposes
|
||||
public bool IsSortable { get; set; }
|
||||
|
||||
//CLIENT Use only for display
|
||||
public int UiFieldDataType { get; set; }
|
||||
|
||||
//CLIENT Use only for display
|
||||
public string EnumType { get; set; }
|
||||
|
||||
//CLIENT / SERVER - client display and to indicate what object to open , Server for formatting return object
|
||||
public int AyaObjectType { get; set; }
|
||||
|
||||
//SERVER - for building sql queries
|
||||
public string SqlIdColumnName { get; set; }
|
||||
public string SqlValueColumnName { get; set; }
|
||||
|
||||
|
||||
public AyaObjectFieldDefinition()
|
||||
{
|
||||
//most common defaults
|
||||
Hideable = true;
|
||||
IsCustomField = false;
|
||||
IsFilterable = true;
|
||||
IsSortable = true;
|
||||
//Set openable object type to no type which is the default and means it's not a link to another object
|
||||
AyaObjectType = (int)AyaType.NoType;
|
||||
|
||||
}
|
||||
|
||||
//Get column to query for display name or use FieldName if there is no difference
|
||||
public string GetSqlValueColumnName()
|
||||
{
|
||||
if (string.IsNullOrEmpty(SqlValueColumnName))
|
||||
{
|
||||
return FieldKey.ToLowerInvariant();
|
||||
}
|
||||
else
|
||||
{
|
||||
return SqlValueColumnName;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}//ens
|
||||
@@ -16,7 +16,7 @@ namespace AyaNova.Biz
|
||||
return;
|
||||
|
||||
var FormTemplate = JArray.Parse(formCustom.Template);
|
||||
var ThisFormCustomFieldsList = AyaObjectFieldDefinitions.AyaObjectFields(formCustom.FormKey).Where(x => x.IsCustomField == true).Select(x => x.LtKey).ToList();
|
||||
var ThisFormCustomFieldsList = AyaFormFieldDefinitions.AyaObjectFields(formCustom.FormKey).Where(x => x.IsCustomField == true).Select(x => x.LtKey).ToList();
|
||||
|
||||
//If the customFields string is empty then only validation is if any of the fields are required to be filled in
|
||||
if (!hasCustomData)
|
||||
@@ -52,7 +52,7 @@ namespace AyaNova.Biz
|
||||
{
|
||||
|
||||
//Translate the LT field key to the actual customFieldData field key
|
||||
var InternalCustomFieldName = AyaObjectFieldDefinitions.TranslateLTCustomFieldToInternalCustomFieldName(iFldKey);
|
||||
var InternalCustomFieldName = AyaFormFieldDefinitions.TranslateLTCustomFieldToInternalCustomFieldName(iFldKey);
|
||||
//Check if it's set to required
|
||||
var isRequired = CustomFieldIsSetToRequired(FormTemplate, iFldKey);
|
||||
|
||||
|
||||
@@ -247,14 +247,14 @@ namespace AyaNova.Biz
|
||||
AddError(ApiErrorCode.VALIDATION_REQUIRED, "ListKey");
|
||||
|
||||
|
||||
List<AyaObjectFieldDefinition> FieldList = null;
|
||||
if (!AyaObjectFieldDefinitions.IsValidObjectKey(inObj.ListKey))
|
||||
List<AyaFormFieldDefinition> FieldList = null;
|
||||
if (!AyaFormFieldDefinitions.IsValidFormFieldDefinitionKey(inObj.ListKey))
|
||||
{
|
||||
AddError(ApiErrorCode.VALIDATION_INVALID_VALUE, "ListKey", $"ListKey \"{inObj.ListKey}\" is empty or in-valid");
|
||||
}
|
||||
else
|
||||
{
|
||||
FieldList = AyaObjectFieldDefinitions.AyaObjectFields(inObj.ListKey);
|
||||
FieldList = AyaFormFieldDefinitions.AyaObjectFields(inObj.ListKey);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -96,7 +96,7 @@ namespace AyaNova.Biz
|
||||
}
|
||||
|
||||
//If it doesn't exist, vet the form key name is ok by checking with this list
|
||||
if (!AyaObjectFieldDefinitions.AyaObjectFieldDefinitionKeys.Contains(formKey))
|
||||
if (!AyaFormFieldDefinitions.AyaFormFieldDefinitionKeys.Contains(formKey))
|
||||
{
|
||||
//Nope, whatever it is, it's not valid
|
||||
return null;
|
||||
@@ -165,7 +165,7 @@ namespace AyaNova.Biz
|
||||
AddError(ApiErrorCode.VALIDATION_REQUIRED, "FormKey");
|
||||
else
|
||||
{
|
||||
if (!AyaObjectFieldDefinitions.IsValidObjectKey(inObj.FormKey))
|
||||
if (!AyaFormFieldDefinitions.IsValidFormFieldDefinitionKey(inObj.FormKey))
|
||||
{
|
||||
AddError(ApiErrorCode.VALIDATION_INVALID_VALUE, "FormKey");
|
||||
}
|
||||
@@ -192,7 +192,7 @@ namespace AyaNova.Biz
|
||||
if ((!PropertyHasErrors("FormKey") && !string.IsNullOrWhiteSpace(inObj.Template)))
|
||||
{
|
||||
var ValidCustomFieldTypes = CustomFieldType.ValidCustomFieldTypes;
|
||||
var ValidFormFields = AyaObjectFieldDefinitions.AyaObjectFields(inObj.FormKey);
|
||||
var ValidFormFields = AyaFormFieldDefinitions.AyaObjectFields(inObj.FormKey);
|
||||
try
|
||||
{
|
||||
//Parse the json, expecting something like this:
|
||||
@@ -206,7 +206,7 @@ namespace AyaNova.Biz
|
||||
|
||||
for (int i = 0; i < v.Count; i++)
|
||||
{
|
||||
AyaObjectFieldDefinition MasterFormField = null;
|
||||
AyaFormFieldDefinition MasterFormField = null;
|
||||
|
||||
var formFieldItem = v[i];
|
||||
if (formFieldItem["fld"] == null)
|
||||
|
||||
@@ -10,7 +10,7 @@ namespace AyaNova.Biz
|
||||
internal static class PickListFetcher
|
||||
{
|
||||
|
||||
internal static PickListResult GetPickList(AyContext ct, long userId, ListOptions pagingOptions, List<AyaObjectFieldDefinition> objectFields, string tableName)
|
||||
internal static PickListResult GetPickList(AyContext ct, long userId, ListOptions pagingOptions, List<AyaFormFieldDefinition> objectFields, string tableName)
|
||||
{
|
||||
|
||||
List<NameIdItem> listItems = new List<NameIdItem>();
|
||||
|
||||
@@ -18,7 +18,7 @@ namespace AyaNova.Biz
|
||||
//var OuterJson=JObject.Parse(formCustom.Template);
|
||||
var FormTemplate = JArray.Parse(formCustom.Template);
|
||||
// var FormTemplate=(JArray)OuterJson["template"];
|
||||
var FormFields = AyaObjectFieldDefinitions.AyaObjectFields(formCustom.FormKey);
|
||||
var FormFields = AyaFormFieldDefinitions.AyaObjectFields(formCustom.FormKey);
|
||||
// var ThisFormNormalFieldsList = FormFields.Where(x => x.Custom == false).Select(x => x.Key).ToList();
|
||||
|
||||
foreach (JObject jo in FormTemplate)
|
||||
@@ -30,7 +30,7 @@ namespace AyaNova.Biz
|
||||
// - e.g.: {template:[{fld:"ltkeyfieldname",hide:"true/false",required:"true/false", type:"bool"},{fld:"ltkeyfieldname",hide:"true/false",required:"true/false", type:"text"]}
|
||||
|
||||
//get the FormField object
|
||||
AyaObjectFieldDefinition FF = FormFields.Where(x => x.LtKey == FldLtKey).Single();
|
||||
AyaFormFieldDefinition FF = FormFields.Where(x => x.LtKey == FldLtKey).Single();
|
||||
|
||||
//don't validate custom fields, just skip them
|
||||
// if (!string.IsNullOrWhiteSpace(FF.PropertyName))//this used to work because there would be no property name but now there is so it doesn't
|
||||
|
||||
@@ -531,7 +531,7 @@ namespace AyaNova.Biz
|
||||
AddError(ApiErrorCode.VALIDATION_LENGTH_EXCEEDED, "EmployeeNumber", "255 max");
|
||||
|
||||
//Any form customizations to validate?
|
||||
var FormCustomization = ct.FormCustom.SingleOrDefault(x => x.FormKey == AyaObjectFieldDefinitions.USER_KEY);
|
||||
var FormCustomization = ct.FormCustom.SingleOrDefault(x => x.FormKey == AyaFormFieldDefinitions.USER_KEY);
|
||||
if (FormCustomization != null)
|
||||
{
|
||||
//Yeppers, do the validation, there are two, the custom fields and the regular fields that might be set to required
|
||||
|
||||
@@ -375,7 +375,7 @@ namespace AyaNova.Biz
|
||||
}
|
||||
|
||||
//Any form customizations to validate?
|
||||
var FormCustomization = ct.FormCustom.SingleOrDefault(x => x.FormKey == AyaObjectFieldDefinitions.WIDGET_KEY);
|
||||
var FormCustomization = ct.FormCustom.SingleOrDefault(x => x.FormKey == AyaFormFieldDefinitions.WIDGET_KEY);
|
||||
if (FormCustomization != null)
|
||||
{
|
||||
//Yeppers, do the validation, there are two, the custom fields and the regular fields that might be set to required
|
||||
|
||||
@@ -82,7 +82,7 @@ namespace AyaNova.Util
|
||||
|
||||
var fc = new FormCustom()
|
||||
{
|
||||
FormKey = AyaObjectFieldDefinitions.WIDGET_KEY,
|
||||
FormKey = AyaFormFieldDefinitions.WIDGET_KEY,
|
||||
Template = @"[
|
||||
{
|
||||
""fld"": ""WidgetNotes"",
|
||||
|
||||
Reference in New Issue
Block a user