This commit is contained in:
@@ -12,8 +12,9 @@ Do the stuff in the Client todo first then back to the server as required.
|
|||||||
-----------------------
|
-----------------------
|
||||||
|
|
||||||
SERVER
|
SERVER
|
||||||
- FormCustomBiz Validation code needs to be written
|
|
||||||
- And test to test validation
|
- Add validation of custom fields in widget
|
||||||
|
- Add validation of required fields that are not custom in widget
|
||||||
|
|
||||||
- Then do the things all the way down to JWT issues below
|
- Then do the things all the way down to JWT issues below
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,8 @@ In each case there may be more details in the `message` property where appropria
|
|||||||
|
|
||||||
| CODE | MEANING |
|
| CODE | MEANING |
|
||||||
| ----- | ------------------------------ |
|
| ----- | ------------------------------ |
|
||||||
| RequiredPropertyEmpty | Required property is missing or empty |
|
| RequiredPropertyEmpty | Required property value is empty |
|
||||||
|
| RequiredPropertyMissing | Required property is missing entirely |
|
||||||
| LengthExceeded | A text property has more characters than are allowed. The limit will be returned in the `message` property of the validation error |
|
| LengthExceeded | A text property has more characters than are allowed. The limit will be returned in the `message` property of the validation error |
|
||||||
| NotUnique | A text property is required to be unique but an existing identical value was found in the database |
|
| NotUnique | A text property is required to be unique but an existing identical value was found in the database |
|
||||||
| StartDateMustComeBeforeEndDate | When an object requires a start and end date the start date must be earlier than the end date |
|
| StartDateMustComeBeforeEndDate | When an object requires a start and end date the start date must be earlier than the end date |
|
||||||
|
|||||||
@@ -17,7 +17,6 @@ namespace AyaNova.Biz
|
|||||||
|
|
||||||
|
|
||||||
var FormTemplate = JArray.Parse(formCustom.Template);
|
var FormTemplate = JArray.Parse(formCustom.Template);
|
||||||
|
|
||||||
var ThisFormCustomFieldsList = FormAvailableFields.FormFields(formCustom.FormKey).Where(x => x.Custom == true).Select(x => x.Key).ToList();
|
var ThisFormCustomFieldsList = FormAvailableFields.FormFields(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
|
||||||
@@ -27,8 +26,8 @@ namespace AyaNova.Biz
|
|||||||
for (int i = 0; i < FormTemplate.Count; i++)
|
for (int i = 0; i < FormTemplate.Count; i++)
|
||||||
{
|
{
|
||||||
//get the field customization
|
//get the field customization
|
||||||
var fldKey = FormTemplate["fld"].Value<string>();
|
var fldKey = FormTemplate[i]["fld"].Value<string>();
|
||||||
var fldRequired = FormTemplate["required"].Value<bool>();
|
var fldRequired = FormTemplate[i]["required"].Value<bool>();
|
||||||
//Check if this is an expected custom field and that it was set to required
|
//Check if this is an expected custom field and that it was set to required
|
||||||
if (ThisFormCustomFieldsList.Contains(fldKey) && fldRequired == true)
|
if (ThisFormCustomFieldsList.Contains(fldKey) && fldRequired == true)
|
||||||
{
|
{
|
||||||
@@ -41,10 +40,42 @@ namespace AyaNova.Biz
|
|||||||
}
|
}
|
||||||
|
|
||||||
//here we have both a bunch of custom fields presumeably and a form customization so let's get cracking...
|
//here we have both a bunch of custom fields presumeably and a form customization so let's get cracking...
|
||||||
|
//parse the custom fields, it should contain an object with 16 keys
|
||||||
var CustomFieldData = JObject.Parse(customFields);
|
var CustomFieldData = JObject.Parse(customFields);
|
||||||
|
|
||||||
|
//make sure all the keys are present
|
||||||
|
foreach (string iFldKey in ThisFormCustomFieldsList)
|
||||||
|
{
|
||||||
|
if (CustomFieldData.ContainsKey(iFldKey))
|
||||||
|
{
|
||||||
|
//validate for now that the custom fields set as required have data in them. Note that we are not validating the sanity of the values, only that they exist
|
||||||
|
//trying to build in slack for when users inevitably change the TYPE of the custom field
|
||||||
|
//Maybe in future this will be handled more thoroughly here but for now just make sure it's been filled in
|
||||||
|
|
||||||
|
//validate it
|
||||||
|
string CurrentValue = CustomFieldData[iFldKey].Value<string>();
|
||||||
|
foreach (JObject jo in FormTemplate)
|
||||||
|
{
|
||||||
|
if (jo["fld"].Value<string>() == iFldKey)
|
||||||
|
{
|
||||||
|
var fldRequired = jo["required"].Value<bool>();
|
||||||
|
if (fldRequired && string.IsNullOrWhiteSpace(CurrentValue))
|
||||||
|
{
|
||||||
|
biz.AddError(ValidationErrorType.RequiredPropertyEmpty, iFldKey);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//This is a serious issue and invalidates all
|
||||||
|
biz.AddError(ValidationErrorType.RequiredPropertyMissing, iFldKey);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}//eoc
|
||||||
}
|
}//ens
|
||||||
|
|||||||
@@ -10,7 +10,8 @@ namespace AyaNova.Biz
|
|||||||
InvalidValue = 5,
|
InvalidValue = 5,
|
||||||
ReferentialIntegrity = 6,
|
ReferentialIntegrity = 6,
|
||||||
InvalidOperation = 7,
|
InvalidOperation = 7,
|
||||||
NotChangeable=8
|
NotChangeable=8,
|
||||||
|
RequiredPropertyMissing = 9
|
||||||
|
|
||||||
//!! NOTE - UPDATE api-validation-error-codes.md documentation when adding items
|
//!! NOTE - UPDATE api-validation-error-codes.md documentation when adding items
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user