This commit is contained in:
2022-01-24 22:38:57 +00:00
parent fadd909c30
commit f1446802f3
2 changed files with 48 additions and 31 deletions

View File

@@ -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)

View File

@@ -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);
} }
} }
} }