public virtual void ConvertAndValidateLineData(LoadDetailData load, bool manuallyCreated, string urnPrefix, BaseServiceResponse response) { if (load.LineItems?.Count > 0) { for (int i = 0; i < load.LineItems.Count; i++) { var itemUrnPrefix = $"{urnPrefix}:{nameof(load.LineItems)}:{i}"; var lineItem = load.LineItems[i]; //if (string.IsNullOrWhiteSpace(lineItem.ProductDescription)) // response.AddError($"{itemUrnPrefix}:{nameof(lineItem.ProductDescription)}", _messages.ProductDescriptionRequired); if (lineItem.Quantity <= 0) { response.AddError($"{itemUrnPrefix}:{nameof(lineItem.Quantity)}", _messages.LineItemQuantityInvalid); } if (lineItem.Weight <= 0) { response.AddError($"{itemUrnPrefix}:{nameof(lineItem.Weight)}", _messages.LineItemWeightInvalid); } if (lineItem.Volume <= 0) { response.AddError($"{itemUrnPrefix}:{nameof(lineItem.Volume)}", _messages.LineItemVolumeInvalid); } if (string.IsNullOrWhiteSpace(lineItem.UnitOfMeasure)) { response.AddError($"{itemUrnPrefix}:{nameof(lineItem.UnitOfMeasure)}", _messages.UnitOfMeasureRequired); } else { //match unit of measure on name or code lineItem.UnitOfMeasureId = UnitsOfMeasure?.FirstOrDefault(_ => string.Compare(_.Name, lineItem.UnitOfMeasure, true) == 0 || string.Compare(_.Code, lineItem.UnitOfMeasure, true) == 0)?.UnitOfMeasureId; if (lineItem.UnitOfMeasureId == null) { response.AddError($"{itemUrnPrefix}:{nameof(lineItem.UnitOfMeasure)}", _messages.UnitOfMeasureInvalid); } } if (lineItem.PickupStopNumber <= 0) { response.AddError($"{itemUrnPrefix}:{nameof(lineItem.PickupStopNumber)}", _messages.LineItemPickupStopNumberRequired); } else if (!(load.LoadStops?.Any(_ => _.StopTypeId == (int)StopTypeEnum.Pickup && _.StopNbr == lineItem.PickupStopNumber) ?? false)) { response.AddError($"{itemUrnPrefix}:{nameof(lineItem.PickupStopNumber)}", _messages.LineItemPickupStopNumberInvalid); } if (lineItem.DeliveryStopNumber <= 0) { response.AddError($"{itemUrnPrefix}:{nameof(lineItem.DeliveryStopNumber)}", _messages.LineItemDeliveryStopNumberRequired); } else if (!(load.LoadStops?.Any(_ => _.StopTypeId == (int)StopTypeEnum.Delivery && _.StopNbr == lineItem.DeliveryStopNumber) ?? false)) { response.AddError($"{itemUrnPrefix}:{nameof(lineItem.DeliveryStopNumber)}", _messages.LineItemDeliveryStopNumberInvalid); } } } }