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

View File

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