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