This commit is contained in:
@@ -822,23 +822,23 @@ namespace AyaNova.Biz
|
||||
//WORKORDER
|
||||
List<FormField> l = new List<FormField>();
|
||||
|
||||
l.Add(new FormField { TKey = "WorkOrderSummary", FieldKey = "Notes" });
|
||||
l.Add(new FormField { TKey = "WorkOrderStatus", FieldKey = "LastStatusId" });
|
||||
l.Add(new FormField { TKey = "WorkOrderSummary", ModelProperty = "Notes" });
|
||||
l.Add(new FormField { TKey = "WorkOrderStatus", ModelProperty = "LastStatusId" });
|
||||
l.Add(new FormField { TKey = "Address", FieldKey = "Address" });
|
||||
l.Add(new FormField { TKey = "WorkOrderCloseByDate", FieldKey = "CompleteByDate" });
|
||||
l.Add(new FormField { TKey = "Project", FieldKey = "ProjectId" });
|
||||
l.Add(new FormField { TKey = "Contract", FieldKey = "ContractId" });
|
||||
l.Add(new FormField { TKey = "WorkOrderInvoiceNumber", FieldKey = "InvoiceNumber" });
|
||||
l.Add(new FormField { TKey = "WorkOrderServiceDate", FieldKey = "ServiceDate" });
|
||||
l.Add(new FormField { TKey = "WorkOrderCustomerContactName", FieldKey = "CustomerContactName" });
|
||||
l.Add(new FormField { TKey = "WorkOrderCustomerReferenceNumber", FieldKey = "CustomerReferenceNumber" });
|
||||
l.Add(new FormField { TKey = "WorkOrderInternalReferenceNumber", FieldKey = "InternalReferenceNumber" });
|
||||
l.Add(new FormField { TKey = "WorkOrderOnsite", FieldKey = "Onsite" });
|
||||
l.Add(new FormField { TKey = "CustomerSignature", FieldKey = "CustomerSignature" });
|
||||
l.Add(new FormField { TKey = "TechSignature", FieldKey = "TechSignature" });
|
||||
l.Add(new FormField { TKey = "Tags", FieldKey = "Tags" });
|
||||
l.Add(new FormField { TKey = "Wiki", FieldKey = "Wiki" });
|
||||
l.Add(new FormField { TKey = "Attachments", FieldKey = "Attachments", Requireable = false });
|
||||
l.Add(new FormField { TKey = "WorkOrderCloseByDate", ModelProperty = "CompleteByDate" });
|
||||
l.Add(new FormField { TKey = "Project", ModelProperty = "ProjectId" });
|
||||
l.Add(new FormField { TKey = "Contract", ModelProperty = "ContractId" });
|
||||
l.Add(new FormField { TKey = "WorkOrderInvoiceNumber", ModelProperty = "InvoiceNumber" });
|
||||
l.Add(new FormField { TKey = "WorkOrderServiceDate", ModelProperty = "ServiceDate" });
|
||||
l.Add(new FormField { TKey = "WorkOrderCustomerContactName", ModelProperty = "CustomerContactName" });
|
||||
l.Add(new FormField { TKey = "WorkOrderCustomerReferenceNumber", ModelProperty = "CustomerReferenceNumber" });
|
||||
l.Add(new FormField { TKey = "WorkOrderInternalReferenceNumber", ModelProperty = "InternalReferenceNumber" });
|
||||
l.Add(new FormField { TKey = "WorkOrderOnsite", ModelProperty = "Onsite" });
|
||||
l.Add(new FormField { TKey = "CustomerSignature" });
|
||||
l.Add(new FormField { TKey = "TechSignature" });
|
||||
l.Add(new FormField { TKey = "Tags" });
|
||||
l.Add(new FormField { TKey = "Wiki" });
|
||||
l.Add(new FormField { TKey = "Attachments", Requireable = false });
|
||||
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 = "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 = "WorkOrderItemTechNotes", FieldKey = "WorkOrderItemTechNotes", TKeySection = "WorkOrderItem", ModelProperty = "TechNotes" });
|
||||
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 = "WorkOrderItemWorkOrderStatusID", FieldKey = "WorkOrderItemWorkOrderStatusID", TKeySection = "WorkOrderItem", ModelProperty = "WorkOrderItemStatusId" });
|
||||
l.Add(new FormField { TKey = "WorkOrderItemPriorityID", FieldKey = "WorkOrderItemPriorityID", TKeySection = "WorkOrderItem", ModelProperty = "WorkOrderItemPriorityId" });
|
||||
@@ -1376,10 +1376,10 @@ namespace AyaNova.Biz
|
||||
l.Add(new FormField { TKey = "WorkOrderCustom16", FieldKey = "WorkOrderCustom16", IsCustomField = true });
|
||||
|
||||
//PM ITEM
|
||||
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 = "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 = "WorkOrderItemWorkOrderStatusID", FieldKey = "WorkOrderItemWorkOrderStatusID", TKeySection = "WorkOrderItem", ModelProperty = "WorkOrderItemStatusId" });
|
||||
l.Add(new FormField { TKey = "WorkOrderItemPriorityID", FieldKey = "WorkOrderItemPriorityID", TKeySection = "WorkOrderItem", ModelProperty = "WorkOrderItemPriorityId" });
|
||||
@@ -1416,7 +1416,7 @@ namespace AyaNova.Biz
|
||||
l.Add(new FormField { TKey = "WorkOrderItemOutsideServiceList", FieldKey = "WorkOrderItemOutsideServiceList", TKeySection = "WorkOrderItem", Requireable = false });
|
||||
|
||||
//PM ITEM UNIT
|
||||
l.Add(new FormField { TKey = "WorkOrderItemUnitNotes", FieldKey = "WorkOrderItemUnitNotes", TKeySection = "WorkOrderItemUnit", ModelProperty = "Notes" });
|
||||
l.Add(new FormField { TKey = "WorkOrderItemUnitNotes", FieldKey = "WorkOrderItemUnitNotes", TKeySection = "WorkOrderItemUnit", ModelProperty = "Notes" });
|
||||
l.Add(new FormField { TKey = "UnitModelVendorID", FieldKey = "UnitModelVendorID", TKeySection = "WorkOrderItemUnit", Requireable = false });
|
||||
l.Add(new FormField { TKey = "UnitModelName", FieldKey = "UnitModelName", TKeySection = "WorkOrderItemUnit", Requireable = false });
|
||||
l.Add(new FormField { TKey = "UnitDescription", FieldKey = "UnitDescription", TKeySection = "WorkOrderItemUnit", Requireable = false });
|
||||
@@ -1442,7 +1442,7 @@ namespace AyaNova.Biz
|
||||
l.Add(new FormField { TKey = "WorkOrderItemUnitCustom16", FieldKey = "WorkOrderItemUnitCustom16", IsCustomField = true, TKeySection = "WorkOrderItemUnit" });
|
||||
|
||||
//PM ITEM SCHEDULED USER
|
||||
l.Add(new FormField { TKey = "WorkOrderItemScheduledUserEstimatedQuantity", FieldKey = "WorkOrderItemScheduledUserEstimatedQuantity", TKeySection = "WorkOrderItemScheduledUser", Requireable = false });
|
||||
l.Add(new FormField { TKey = "WorkOrderItemScheduledUserEstimatedQuantity", FieldKey = "WorkOrderItemScheduledUserEstimatedQuantity", TKeySection = "WorkOrderItemScheduledUser", Requireable = false });
|
||||
l.Add(new FormField { TKey = "WorkOrderItemScheduledUserServiceRateID", FieldKey = "WorkOrderItemScheduledUserServiceRateID", TKeySection = "WorkOrderItemScheduledUser", ModelProperty = "ServiceRateId" });
|
||||
l.Add(new FormField { TKey = "WorkOrderItemScheduledUserStartDate", FieldKey = "WorkOrderItemScheduledUserStartDate", TKeySection = "WorkOrderItemScheduledUser", ModelProperty = "StartDate" });
|
||||
l.Add(new FormField { TKey = "WorkOrderItemScheduledUserStopDate", FieldKey = "WorkOrderItemScheduledUserStopDate", TKeySection = "WorkOrderItemScheduledUser", ModelProperty = "StopDate" });
|
||||
@@ -1471,7 +1471,7 @@ namespace AyaNova.Biz
|
||||
l.Add(new FormField { TKey = "LineTotal", FieldKey = "PartLineTotalViz", TKeySection = "WorkOrderItemPart", Requireable = false });
|
||||
|
||||
//PM ITEM PART REQUEST
|
||||
l.Add(new FormField { TKey = "WorkOrderItemPartRequestPartID", FieldKey = "WorkOrderItemPartRequestPartID", TKeySection = "WorkOrderItemPartRequests", Requireable = false });
|
||||
l.Add(new FormField { TKey = "WorkOrderItemPartRequestPartID", FieldKey = "WorkOrderItemPartRequestPartID", TKeySection = "WorkOrderItemPartRequests", Requireable = false });
|
||||
l.Add(new FormField { TKey = "WorkOrderItemPartRequestPartWarehouseID", FieldKey = "WorkOrderItemPartRequestPartWarehouseID", TKeySection = "WorkOrderItemPartRequests", Requireable = false });
|
||||
l.Add(new FormField { TKey = "WorkOrderItemPartRequestQuantity", FieldKey = "WorkOrderItemPartRequestQuantity", TKeySection = "WorkOrderItemPartRequests", Requireable = false });
|
||||
l.Add(new FormField { TKey = "PartUPC", FieldKey = "PartRequestPartUPC", TKeySection = "WorkOrderItemPartRequests", Requireable = false });
|
||||
@@ -1500,7 +1500,7 @@ namespace AyaNova.Biz
|
||||
l.Add(new FormField { TKey = "LineTotal", FieldKey = "LaborLineTotalViz", TKeySection = "WorkOrderItemLabor", Requireable = false });
|
||||
|
||||
//PM ITEM TRAVEL
|
||||
l.Add(new FormField { TKey = "WorkOrderItemTravelStartDate", FieldKey = "WorkOrderItemTravelStartDate", TKeySection = "WorkOrderItemTravel", ModelProperty = "TravelStartDate" });
|
||||
l.Add(new FormField { TKey = "WorkOrderItemTravelStartDate", FieldKey = "WorkOrderItemTravelStartDate", TKeySection = "WorkOrderItemTravel", ModelProperty = "TravelStartDate" });
|
||||
l.Add(new FormField { TKey = "WorkOrderItemTravelStopDate", FieldKey = "WorkOrderItemTravelStopDate", TKeySection = "WorkOrderItemTravel", ModelProperty = "TravelStopDate" });
|
||||
l.Add(new FormField { TKey = "WorkOrderItemTravelServiceRateID", FieldKey = "WorkOrderItemTravelServiceRateID", TKeySection = "WorkOrderItemTravel", ModelProperty = "TravelRateId" });
|
||||
l.Add(new FormField { TKey = "WorkOrderItemTravelDetails", FieldKey = "WorkOrderItemTravelDetails", TKeySection = "WorkOrderItemTravel", ModelProperty = "TravelDetails" });
|
||||
@@ -1636,18 +1636,33 @@ namespace AyaNova.Biz
|
||||
|
||||
public class FormField
|
||||
{
|
||||
private string tKey;
|
||||
|
||||
//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
|
||||
//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; }
|
||||
|
||||
//This exists to handle things like workorderitemtags which
|
||||
//need to use a unique fieldkey but it can't match the model property becuase then
|
||||
//This exists to handle scenario of repeated identical model property multiple times on workorder quote pm forms
|
||||
//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
|
||||
//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;
|
||||
|
||||
//CLIENT Use only for display in customization form
|
||||
public string TKey { get; set; }
|
||||
//CLIENT Use only for display in customization form, translation key to show translated name on UI customize form
|
||||
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
|
||||
//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
|
||||
//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);
|
||||
if (propertyValue == null)
|
||||
biz.AddError(ApiErrorCode.VALIDATION_CUSTOM_REQUIRED_EMPTY, FF.FieldKey);
|
||||
biz.AddError(ApiErrorCode.VALIDATION_CUSTOM_REQUIRED_EMPTY, RequiredPropertyName);
|
||||
else
|
||||
{
|
||||
|
||||
@@ -98,12 +100,12 @@ namespace AyaNova.Biz
|
||||
{
|
||||
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
|
||||
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