This commit is contained in:
@@ -119,7 +119,7 @@ namespace AyaNova.Api.Controllers
|
|||||||
|
|
||||||
if (ObjectFields.IsValidObjectKey(formkey))
|
if (ObjectFields.IsValidObjectKey(formkey))
|
||||||
{
|
{
|
||||||
return Ok(ApiOkResponse.Response(ObjectFields.FormFields(formkey), true));
|
return Ok(ApiOkResponse.Response(ObjectFields.ObjectFields(formkey), true));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -4,11 +4,15 @@ namespace AyaNova.Biz
|
|||||||
{
|
{
|
||||||
public static class AyDataType
|
public static class AyDataType
|
||||||
{
|
{
|
||||||
|
//Date and time types, all stored internally as a date and time timestamp, but may display as date only or time only
|
||||||
|
public const string DateTime = "datetime";
|
||||||
public const string Date = "date";
|
public const string Date = "date";
|
||||||
|
public const string Time = "time";
|
||||||
public const string Text = "text";
|
public const string Text = "text";
|
||||||
public const string Integer = "int";
|
public const string Integer = "int";
|
||||||
public const string Bool = "bool";
|
public const string Bool = "bool";
|
||||||
public const string Decimal = "decimal";
|
public const string Decimal = "decimal";
|
||||||
|
public const string Currency = "currency";
|
||||||
public const string Tags = "tags";
|
public const string Tags = "tags";
|
||||||
public const string Enum = "enum";//enums are just integers in the db so the sql code handles it like an int, but the client needs to know it's an enum
|
public const string Enum = "enum";//enums are just integers in the db so the sql code handles it like an int, but the client needs to know it's an enum
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ namespace AyaNova.Biz
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
var FormTemplate = JArray.Parse(formCustom.Template);
|
var FormTemplate = JArray.Parse(formCustom.Template);
|
||||||
var ThisFormCustomFieldsList = ObjectFields.FormFields(formCustom.FormKey).Where(x => x.Custom == true).Select(x => x.Key).ToList();
|
var ThisFormCustomFieldsList = ObjectFields.ObjectFields(formCustom.FormKey).Where(x => x.Custom == true).Select(x => x.Key).ToList();
|
||||||
|
|
||||||
//If the customFields string is empty then only validation is if any of the fields are required to be filled in
|
//If the customFields string is empty then only validation is if any of the fields are required to be filled in
|
||||||
if (!hasCustomData)
|
if (!hasCustomData)
|
||||||
|
|||||||
@@ -270,7 +270,10 @@ namespace AyaNova.Biz
|
|||||||
}
|
}
|
||||||
break;
|
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 AyDataType.Date:
|
case AyDataType.Date:
|
||||||
|
case AyDataType.DateTime:
|
||||||
|
case AyDataType.Time:
|
||||||
{
|
{
|
||||||
//Note: it is assumed all dates come into here from the CLIENT in UTC iso8601 format
|
//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
|
//suitable for the database to handle as all database dates are in UTC
|
||||||
|
|||||||
@@ -192,7 +192,7 @@ namespace AyaNova.Biz
|
|||||||
if ((!PropertyHasErrors("FormKey") && !string.IsNullOrWhiteSpace(inObj.Template)))
|
if ((!PropertyHasErrors("FormKey") && !string.IsNullOrWhiteSpace(inObj.Template)))
|
||||||
{
|
{
|
||||||
var ValidCustomFieldTypes = CustomFieldType.ValidCustomFieldTypes;
|
var ValidCustomFieldTypes = CustomFieldType.ValidCustomFieldTypes;
|
||||||
var ValidFormFields = ObjectFields.FormFields(inObj.FormKey);
|
var ValidFormFields = ObjectFields.ObjectFields(inObj.FormKey);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
//Parse the json, expecting something like this:
|
//Parse the json, expecting something like this:
|
||||||
|
|||||||
@@ -6,11 +6,14 @@ namespace AyaNova.Biz
|
|||||||
// This contains all the fields that are:
|
// This contains all the fields that are:
|
||||||
// Customizable on forms
|
// Customizable on forms
|
||||||
// In grid list templates
|
// In grid list templates
|
||||||
//In addition it serves as a source for valid form keys in AvailableFormKeys
|
//In addition it serves as a source for valid object keys in AvailableObjectKeys
|
||||||
//
|
//
|
||||||
public static class ObjectFields
|
public static class ObjectFields
|
||||||
{
|
{
|
||||||
|
|
||||||
|
//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
|
||||||
public const string WIDGET_KEY = "widget";
|
public const string WIDGET_KEY = "widget";
|
||||||
public const string USER_KEY = "user";
|
public const string USER_KEY = "user";
|
||||||
|
|
||||||
@@ -31,21 +34,31 @@ namespace AyaNova.Biz
|
|||||||
return AvailableObjectKeys.Contains(key);
|
return AvailableObjectKeys.Contains(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<ObjectField> FormFields(string key)
|
public static List<ObjectField> ObjectFieldsList(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
|
***************************** 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
|
***************************** 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<ObjectField> l = new List<ObjectField>();
|
List<ObjectField> l = new List<ObjectField>();
|
||||||
switch (key)
|
switch (key)
|
||||||
{
|
{
|
||||||
case WIDGET_KEY:
|
case WIDGET_KEY:
|
||||||
l.Add(new ObjectField("WidgetName", "Name", false, false));//is not shared localized text key and not hideable as it is in the validation rules for widget
|
l.Add(new ObjectField { Key = "WidgetName", PropertyName = "Name", DataType = AyDataType.Text, Hideable = false });
|
||||||
l.Add(new ObjectField("WidgetSerial", "Serial"));//not in validation rules BUT, is HIDEABLE and is set to NOT NULLABLE in the schema so this field MUST MUST have a default value in client
|
l.Add(new ObjectField { Key = "WidgetSerial", PropertyName = "Serial", DataType = AyDataType.Integer });
|
||||||
l.Add(new ObjectField("WidgetDollarAmount", "DollarAmount"));
|
l.Add(new ObjectField { Key = "WidgetDollarAmount", PropertyName = "DollarAmount", DataType = AyDataType.Currency });
|
||||||
l.Add(new ObjectField("WidgetCount", "Count"));
|
l.Add(new ObjectField { Key = "WidgetCount", PropertyName = "Count", DataType = AyDataType.Integer });
|
||||||
l.Add(new ObjectField("WidgetRoles", "Roles"));//not required but must be a valid default
|
l.Add(new ObjectField { Key = "WidgetRoles", PropertyName = "Roles", DataType = AyDataType.Enum, EnumType = typeof(AuthorizationRoles).ToString() });
|
||||||
|
l.Add(new ObjectField { Key = "WidgetStartDate", PropertyName = "StartDate", DataType = AyDataType.Date });
|
||||||
|
|
||||||
|
|
||||||
l.Add(new ObjectField("WidgetStartDate", "StartDate"));//have rule for date precedence but can both be empty so allowing to hide is ok
|
l.Add(new ObjectField("WidgetStartDate", "StartDate"));//have rule for date precedence but can both be empty so allowing to hide is ok
|
||||||
l.Add(new ObjectField("WidgetEndDate", "EndDate"));
|
l.Add(new ObjectField("WidgetEndDate", "EndDate"));
|
||||||
l.Add(new ObjectField("WidgetNotes", "Notes"));
|
l.Add(new ObjectField("WidgetNotes", "Notes"));
|
||||||
@@ -131,9 +144,20 @@ namespace AyaNova.Biz
|
|||||||
public bool Sortable { get; set; }
|
public bool Sortable { get; set; }
|
||||||
public bool MiniAvailable { get; set; }
|
public bool MiniAvailable { get; set; }
|
||||||
public string DataType { get; set; }
|
public string DataType { 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; }
|
||||||
|
|
||||||
|
|
||||||
public ObjectField() { }
|
public ObjectField()
|
||||||
|
{
|
||||||
|
//most common defaults
|
||||||
|
SharedLTKey = false;
|
||||||
|
Hideable = true;
|
||||||
|
Custom = false;
|
||||||
|
Filterable = true;
|
||||||
|
Sortable = true;
|
||||||
|
MiniAvailable = true;
|
||||||
|
}
|
||||||
|
|
||||||
public ObjectField(string key, string propertyName, bool sharedLTKey = false, bool hideable = true, bool custom = false)
|
public ObjectField(string key, string propertyName, bool sharedLTKey = false, bool hideable = true, bool custom = false)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ namespace AyaNova.Biz
|
|||||||
//var OuterJson=JObject.Parse(formCustom.Template);
|
//var OuterJson=JObject.Parse(formCustom.Template);
|
||||||
var FormTemplate = JArray.Parse(formCustom.Template);
|
var FormTemplate = JArray.Parse(formCustom.Template);
|
||||||
// var FormTemplate=(JArray)OuterJson["template"];
|
// var FormTemplate=(JArray)OuterJson["template"];
|
||||||
var FormFields = ObjectFields.FormFields(formCustom.FormKey);
|
var FormFields = ObjectFields.ObjectFields(formCustom.FormKey);
|
||||||
// var ThisFormNormalFieldsList = FormFields.Where(x => x.Custom == false).Select(x => x.Key).ToList();
|
// var ThisFormNormalFieldsList = FormFields.Where(x => x.Custom == false).Select(x => x.Key).ToList();
|
||||||
|
|
||||||
foreach (JObject jo in FormTemplate)
|
foreach (JObject jo in FormTemplate)
|
||||||
|
|||||||
Reference in New Issue
Block a user