private PFD Map(CropZone cropZone, Dictionary<int, string> keyToIsoId, int cropZoneIndex, Catalog setupCatalog) { var pfd = new PFD { C = cropZone.Description, D = (ulong)Math.Round(cropZone.Area.Value.Value, 0) }; pfd.A = pfd.GetIsoId(cropZoneIndex); if (cropZone.CropId != null) { pfd.G = keyToIsoId[cropZone.CropId.Value]; } pfd.I = keyToIsoId[cropZone.FieldId]; var field = setupCatalog.Fields.First(f => f.Id.ReferenceId == cropZone.FieldId); if (field.FarmId != null) { pfd.F = keyToIsoId[field.FarmId.Value]; var farm = setupCatalog.Farms.First(f => f.Id.ReferenceId == field.FarmId.Value); if (farm.GrowerId != null) pfd.E = keyToIsoId[farm.GrowerId.Value]; } if (cropZone.BoundingRegion != null) { pfd.Items = new IWriter[] { _boundaryMapper.Map(cropZone.BoundingRegion, BoundaryType.CropZone, cropZone.Description) }; } keyToIsoId.Add(cropZone.Id.ReferenceId, pfd.A); return pfd; }
private void LoadCropZone(XmlNode inputNode, Field field, string fieldId) { var cropId = inputNode.GetXmlNodeValue("@G"); if (string.IsNullOrEmpty(cropId)) return; Crop crop; if (!_taskDocument.Crops.TryGetValue(cropId, out crop)) return; var cropZone = new CropZone(); cropZone.CropId = crop.Id.ReferenceId; cropZone.FieldId = field.Id.ReferenceId; cropZone.Description = field.Description; cropZone.Area = field.Area.Copy(); cropZone.GuidanceGroupIds = field.GuidanceGroupIds != null ? field.GuidanceGroupIds.ToList() : null; _taskDocument.CropZones[fieldId] = cropZone; }