private TreatmentZone WriteTreatmentZones(XmlWriter writer, RasterGridPrescription prescription)
{
if (prescription.ProductIds == null)
return null;
var lossOfSignalTreatmentZone = new TreatmentZone { Name = "Loss of GPS", Variables = new List<DataVariable>() };
var outOfFieldTreatmentZone = new TreatmentZone { Name = "Out of Field", Variables = new List<DataVariable>() };
var defaultTreatmentZone = new TreatmentZone { Name = "Default", Variables = new List<DataVariable>() };
var defaultRate = new NumericRepresentationValue(null, new NumericValue(prescription.RxProductLookups.First().UnitOfMeasure, 0));
var isoUnit = DetermineIsoUnit(prescription.RxProductLookups.First().UnitOfMeasure);
foreach (var productId in prescription.ProductIds)
{
var isoProductId = TaskWriter.Products.FindById(productId) ?? TaskWriter.CropVarieties.FindById(productId);
AddDataVariable(lossOfSignalTreatmentZone, prescription.LossOfGpsRate, isoProductId, isoUnit);
AddDataVariable(outOfFieldTreatmentZone, prescription.OutOfFieldRate, isoProductId, isoUnit);
AddDataVariable(defaultTreatmentZone, defaultRate, isoProductId, isoUnit);
}
var lossOfSignalZoneId = "253";
if (lossOfSignalTreatmentZone.Variables.Count > 0)
writer.WriteXmlAttribute("I", lossOfSignalZoneId);
var outOfFieldZoneId = "254";
if (outOfFieldTreatmentZone.Variables.Count > 0)
writer.WriteXmlAttribute("J", outOfFieldZoneId);
TreatmentZoneWriter.Write(writer, "1", defaultTreatmentZone);
if (lossOfSignalTreatmentZone.Variables.Count > 0)
TreatmentZoneWriter.Write(writer, lossOfSignalZoneId, lossOfSignalTreatmentZone);
if (outOfFieldTreatmentZone.Variables.Count > 0)
TreatmentZoneWriter.Write(writer, outOfFieldZoneId, outOfFieldTreatmentZone);
return defaultTreatmentZone;
}