This commit is contained in:
@@ -822,23 +822,23 @@ namespace AyaNova.Biz
|
|||||||
//WORKORDER
|
//WORKORDER
|
||||||
List<FormField> l = new List<FormField>();
|
List<FormField> l = new List<FormField>();
|
||||||
|
|
||||||
l.Add(new FormField { TKey = "WorkOrderSummary", FieldKey = "Notes" });
|
l.Add(new FormField { TKey = "WorkOrderSummary", ModelProperty = "Notes" });
|
||||||
l.Add(new FormField { TKey = "WorkOrderStatus", FieldKey = "LastStatusId" });
|
l.Add(new FormField { TKey = "WorkOrderStatus", ModelProperty = "LastStatusId" });
|
||||||
l.Add(new FormField { TKey = "Address", FieldKey = "Address" });
|
l.Add(new FormField { TKey = "Address", FieldKey = "Address" });
|
||||||
l.Add(new FormField { TKey = "WorkOrderCloseByDate", FieldKey = "CompleteByDate" });
|
l.Add(new FormField { TKey = "WorkOrderCloseByDate", ModelProperty = "CompleteByDate" });
|
||||||
l.Add(new FormField { TKey = "Project", FieldKey = "ProjectId" });
|
l.Add(new FormField { TKey = "Project", ModelProperty = "ProjectId" });
|
||||||
l.Add(new FormField { TKey = "Contract", FieldKey = "ContractId" });
|
l.Add(new FormField { TKey = "Contract", ModelProperty = "ContractId" });
|
||||||
l.Add(new FormField { TKey = "WorkOrderInvoiceNumber", FieldKey = "InvoiceNumber" });
|
l.Add(new FormField { TKey = "WorkOrderInvoiceNumber", ModelProperty = "InvoiceNumber" });
|
||||||
l.Add(new FormField { TKey = "WorkOrderServiceDate", FieldKey = "ServiceDate" });
|
l.Add(new FormField { TKey = "WorkOrderServiceDate", ModelProperty = "ServiceDate" });
|
||||||
l.Add(new FormField { TKey = "WorkOrderCustomerContactName", FieldKey = "CustomerContactName" });
|
l.Add(new FormField { TKey = "WorkOrderCustomerContactName", ModelProperty = "CustomerContactName" });
|
||||||
l.Add(new FormField { TKey = "WorkOrderCustomerReferenceNumber", FieldKey = "CustomerReferenceNumber" });
|
l.Add(new FormField { TKey = "WorkOrderCustomerReferenceNumber", ModelProperty = "CustomerReferenceNumber" });
|
||||||
l.Add(new FormField { TKey = "WorkOrderInternalReferenceNumber", FieldKey = "InternalReferenceNumber" });
|
l.Add(new FormField { TKey = "WorkOrderInternalReferenceNumber", ModelProperty = "InternalReferenceNumber" });
|
||||||
l.Add(new FormField { TKey = "WorkOrderOnsite", FieldKey = "Onsite" });
|
l.Add(new FormField { TKey = "WorkOrderOnsite", ModelProperty = "Onsite" });
|
||||||
l.Add(new FormField { TKey = "CustomerSignature", FieldKey = "CustomerSignature" });
|
l.Add(new FormField { TKey = "CustomerSignature" });
|
||||||
l.Add(new FormField { TKey = "TechSignature", FieldKey = "TechSignature" });
|
l.Add(new FormField { TKey = "TechSignature" });
|
||||||
l.Add(new FormField { TKey = "Tags", FieldKey = "Tags" });
|
l.Add(new FormField { TKey = "Tags" });
|
||||||
l.Add(new FormField { TKey = "Wiki", FieldKey = "Wiki" });
|
l.Add(new FormField { TKey = "Wiki" });
|
||||||
l.Add(new FormField { TKey = "Attachments", FieldKey = "Attachments", Requireable = false });
|
l.Add(new FormField { TKey = "Attachments", Requireable = false });
|
||||||
l.Add(new FormField { TKey = "WorkOrderCustom1", FieldKey = "WorkOrderCustom1", IsCustomField = true });
|
l.Add(new FormField { TKey = "WorkOrderCustom1", FieldKey = "WorkOrderCustom1", IsCustomField = true });
|
||||||
l.Add(new FormField { TKey = "WorkOrderCustom2", FieldKey = "WorkOrderCustom2", IsCustomField = true });
|
l.Add(new FormField { TKey = "WorkOrderCustom2", FieldKey = "WorkOrderCustom2", IsCustomField = true });
|
||||||
l.Add(new FormField { TKey = "WorkOrderCustom3", FieldKey = "WorkOrderCustom3", IsCustomField = true });
|
l.Add(new FormField { TKey = "WorkOrderCustom3", FieldKey = "WorkOrderCustom3", IsCustomField = true });
|
||||||
@@ -1102,7 +1102,7 @@ namespace AyaNova.Biz
|
|||||||
l.Add(new FormField { TKey = "Sequence", FieldKey = "WorkOrderItemSequence", TKeySection = "WorkOrderItem", Requireable = false });
|
l.Add(new FormField { TKey = "Sequence", FieldKey = "WorkOrderItemSequence", TKeySection = "WorkOrderItem", Requireable = false });
|
||||||
l.Add(new FormField { TKey = "WorkOrderItemTechNotes", FieldKey = "WorkOrderItemTechNotes", TKeySection = "WorkOrderItem", ModelProperty = "TechNotes" });
|
l.Add(new FormField { TKey = "WorkOrderItemTechNotes", FieldKey = "WorkOrderItemTechNotes", TKeySection = "WorkOrderItem", ModelProperty = "TechNotes" });
|
||||||
l.Add(new FormField { TKey = "Tags", FieldKey = "WorkOrderItemTags", TKeySection = "WorkOrderItem", ModelProperty = "Tags" });
|
l.Add(new FormField { TKey = "Tags", FieldKey = "WorkOrderItemTags", TKeySection = "WorkOrderItem", ModelProperty = "Tags" });
|
||||||
l.Add(new FormField { TKey = "Wiki", FieldKey = "WorkOrderItemWiki", TKeySection = "WorkOrderItem", ModelProperty = "Wiki" });
|
l.Add(new FormField { TKey = "Wiki", FieldKey = "WorkOrderItemWiki", TKeySection = "WorkOrderItem", ModelProperty = "Wiki", Requireable = false });
|
||||||
l.Add(new FormField { TKey = "Attachments", FieldKey = "WorkOrderItemAttachments", TKeySection = "WorkOrderItem", Requireable = false });
|
l.Add(new FormField { TKey = "Attachments", FieldKey = "WorkOrderItemAttachments", TKeySection = "WorkOrderItem", Requireable = false });
|
||||||
l.Add(new FormField { TKey = "WorkOrderItemWorkOrderStatusID", FieldKey = "WorkOrderItemWorkOrderStatusID", TKeySection = "WorkOrderItem", ModelProperty = "WorkOrderItemStatusId" });
|
l.Add(new FormField { TKey = "WorkOrderItemWorkOrderStatusID", FieldKey = "WorkOrderItemWorkOrderStatusID", TKeySection = "WorkOrderItem", ModelProperty = "WorkOrderItemStatusId" });
|
||||||
l.Add(new FormField { TKey = "WorkOrderItemPriorityID", FieldKey = "WorkOrderItemPriorityID", TKeySection = "WorkOrderItem", ModelProperty = "WorkOrderItemPriorityId" });
|
l.Add(new FormField { TKey = "WorkOrderItemPriorityID", FieldKey = "WorkOrderItemPriorityID", TKeySection = "WorkOrderItem", ModelProperty = "WorkOrderItemPriorityId" });
|
||||||
@@ -1379,7 +1379,7 @@ namespace AyaNova.Biz
|
|||||||
l.Add(new FormField { TKey = "Sequence", FieldKey = "WorkOrderItemSequence", TKeySection = "WorkOrderItem", Requireable = false });
|
l.Add(new FormField { TKey = "Sequence", FieldKey = "WorkOrderItemSequence", TKeySection = "WorkOrderItem", Requireable = false });
|
||||||
l.Add(new FormField { TKey = "WorkOrderItemTechNotes", FieldKey = "WorkOrderItemTechNotes", TKeySection = "WorkOrderItem", ModelProperty = "TechNotes" });
|
l.Add(new FormField { TKey = "WorkOrderItemTechNotes", FieldKey = "WorkOrderItemTechNotes", TKeySection = "WorkOrderItem", ModelProperty = "TechNotes" });
|
||||||
l.Add(new FormField { TKey = "Tags", FieldKey = "WorkOrderItemTags", TKeySection = "WorkOrderItem", ModelProperty = "Tags" });
|
l.Add(new FormField { TKey = "Tags", FieldKey = "WorkOrderItemTags", TKeySection = "WorkOrderItem", ModelProperty = "Tags" });
|
||||||
l.Add(new FormField { TKey = "Wiki", FieldKey = "WorkOrderItemWiki", TKeySection = "WorkOrderItem", ModelProperty = "Wiki" });
|
l.Add(new FormField { TKey = "Wiki", FieldKey = "WorkOrderItemWiki", TKeySection = "WorkOrderItem", ModelProperty = "Wiki", Requireable = false });
|
||||||
l.Add(new FormField { TKey = "Attachments", FieldKey = "WorkOrderItemAttachments", TKeySection = "WorkOrderItem", Requireable = false });
|
l.Add(new FormField { TKey = "Attachments", FieldKey = "WorkOrderItemAttachments", TKeySection = "WorkOrderItem", Requireable = false });
|
||||||
l.Add(new FormField { TKey = "WorkOrderItemWorkOrderStatusID", FieldKey = "WorkOrderItemWorkOrderStatusID", TKeySection = "WorkOrderItem", ModelProperty = "WorkOrderItemStatusId" });
|
l.Add(new FormField { TKey = "WorkOrderItemWorkOrderStatusID", FieldKey = "WorkOrderItemWorkOrderStatusID", TKeySection = "WorkOrderItem", ModelProperty = "WorkOrderItemStatusId" });
|
||||||
l.Add(new FormField { TKey = "WorkOrderItemPriorityID", FieldKey = "WorkOrderItemPriorityID", TKeySection = "WorkOrderItem", ModelProperty = "WorkOrderItemPriorityId" });
|
l.Add(new FormField { TKey = "WorkOrderItemPriorityID", FieldKey = "WorkOrderItemPriorityID", TKeySection = "WorkOrderItem", ModelProperty = "WorkOrderItemPriorityId" });
|
||||||
@@ -1636,18 +1636,33 @@ namespace AyaNova.Biz
|
|||||||
|
|
||||||
public class FormField
|
public class FormField
|
||||||
{
|
{
|
||||||
|
private string tKey;
|
||||||
|
|
||||||
//CLIENT / SERVER Unique identifier used at BOTH client and server
|
//CLIENT / SERVER Unique identifier used at BOTH client and server
|
||||||
//MUST MATCH MODEL PROPERTY NAME EXACTLY UNLESS ModelProperty is set OR REQUIRED FIELD VALIDATION WON"T WORK
|
//MUST MATCH MODEL PROPERTY NAME EXACTLY UNLESS ModelProperty is set OR REQUIRED FIELD VALIDATION WON"T WORK
|
||||||
|
//The model name is used for validation and the fieldKey sometimes is not the model name in big forms with repeating model names in which case
|
||||||
|
//the fieldkey will be unique and the ModelProperty will be set instead
|
||||||
public string FieldKey { get; set; }
|
public string FieldKey { get; set; }
|
||||||
|
|
||||||
//This exists to handle things like workorderitemtags which
|
//This exists to handle scenario of repeated identical model property multiple times on workorder quote pm forms
|
||||||
//need to use a unique fieldkey but it can't match the model property becuase then
|
//e.g. need to use a unique fieldkey but it can't match the model property becuase then
|
||||||
//it would need to be "Tags" but there is already a "Tags" on the workorder header and in units
|
//it would need to be "Tags" but there is already a "Tags" on the workorder header and in units
|
||||||
//so here we can specify an exact property tag to check
|
//so here we can specify an exact property tag to check. RequiredfieldsValidator will use this instead when set to issue errors
|
||||||
public string ModelProperty { get; set; } = null;
|
public string ModelProperty { get; set; } = null;
|
||||||
|
|
||||||
//CLIENT Use only for display in customization form
|
//CLIENT Use only for display in customization form, translation key to show translated name on UI customize form
|
||||||
public string TKey { get; set; }
|
public string TKey
|
||||||
|
{
|
||||||
|
get => tKey;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
tKey = value;
|
||||||
|
if (this.FieldKey == null)//save having to type out fieldkey when it's identical to tkey
|
||||||
|
{
|
||||||
|
this.FieldKey = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//CLIENT Use only for display in customization form to disambiguate things like
|
//CLIENT Use only for display in customization form to disambiguate things like
|
||||||
//Tags in main workorder and Tags in Workorder Item and Tags in Unit (all on same form)
|
//Tags in main workorder and Tags in Workorder Item and Tags in Unit (all on same form)
|
||||||
|
|||||||
@@ -88,9 +88,11 @@ namespace AyaNova.Biz
|
|||||||
{
|
{
|
||||||
//It's a simple property on the main object
|
//It's a simple property on the main object
|
||||||
//use reflection to get the underlying value from the proposed object to be saved
|
//use reflection to get the underlying value from the proposed object to be saved
|
||||||
|
//issue the error on the *Models* property name to mirror how all other server error handling and validation works
|
||||||
|
//so that client end consumes it properly (fieldkey is just for the UI and showing / hiding overall form values)
|
||||||
object propertyValue = proposedObject.GetType().GetProperty(RequiredPropertyName).GetValue(proposedObject, null);
|
object propertyValue = proposedObject.GetType().GetProperty(RequiredPropertyName).GetValue(proposedObject, null);
|
||||||
if (propertyValue == null)
|
if (propertyValue == null)
|
||||||
biz.AddError(ApiErrorCode.VALIDATION_CUSTOM_REQUIRED_EMPTY, FF.FieldKey);
|
biz.AddError(ApiErrorCode.VALIDATION_CUSTOM_REQUIRED_EMPTY, RequiredPropertyName);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
||||||
@@ -98,12 +100,12 @@ namespace AyaNova.Biz
|
|||||||
{
|
{
|
||||||
if (((System.Collections.Generic.List<string>)propertyValue).Count == 0)
|
if (((System.Collections.Generic.List<string>)propertyValue).Count == 0)
|
||||||
{
|
{
|
||||||
biz.AddError(ApiErrorCode.VALIDATION_CUSTOM_REQUIRED_EMPTY, FF.FieldKey);
|
biz.AddError(ApiErrorCode.VALIDATION_CUSTOM_REQUIRED_EMPTY, RequiredPropertyName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if (string.IsNullOrWhiteSpace(propertyValue.ToString()))
|
if (string.IsNullOrWhiteSpace(propertyValue.ToString()))
|
||||||
biz.AddError(ApiErrorCode.VALIDATION_CUSTOM_REQUIRED_EMPTY, FF.FieldKey);
|
biz.AddError(ApiErrorCode.VALIDATION_CUSTOM_REQUIRED_EMPTY, RequiredPropertyName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user