public IEnumerable <ISOCropType> ExportCropTypes(IEnumerable <Crop> adaptCropTypes) { ISOProductGroup productGroup = _productGroupMapper.ExportProductGroup("CropType", true); List <ISOCropType> cropTypes = new List <ISOCropType>(); foreach (Crop crop in adaptCropTypes) { ISOCropType isoGroup = ExportCropType(crop, productGroup); cropTypes.Add(isoGroup); } return(cropTypes); }
public ISOProduct ExportProduct(Product adaptProduct) { ISOProduct isoProduct = new ISOProduct(); //ID string productID = adaptProduct.Id.FindIsoId(XmlPrefix) ?? GenerateId(); isoProduct.ProductId = productID; if (!ExportIDs(adaptProduct.Id, productID)) { string preExistingID = TaskDataMapper.InstanceIDMap.GetISOID(adaptProduct.Id.ReferenceId); if (preExistingID.StartsWith("CVT")) { ISOCropVariety cvt = ISOTaskData.ChildElements.OfType <ISOCropType>().SelectMany(c => c.CropVarieties).FirstOrDefault(v => v.CropVarietyId == preExistingID); if (cvt != null) { //Fill the product ID on the variety now that we have one cvt.ProductIdRef = productID; } } //CVT becomes PDT in the mapping TaskDataMapper.InstanceIDMap.ReplaceISOID(adaptProduct.Id.ReferenceId, productID); } //Designator isoProduct.ProductDesignator = adaptProduct.Description; //Product Group string groupName = Enum.GetName(typeof(ProductTypeEnum), adaptProduct.ProductType); ISOProductGroup group = _productGroupMapper.ExportProductGroup(groupName, false); isoProduct.ProductGroupRef = group.ProductGroupId; //Type switch (adaptProduct.ProductType) { case ProductTypeEnum.Mix: isoProduct.ProductType = ISOProductType.Mixture; break; default: isoProduct.ProductType = ISOProductType.Single; break; } //Density if (adaptProduct.Density != null) { UnitOfMeasure uom = adaptProduct.Density.Value.UnitOfMeasure; int value = (int)adaptProduct.Density.Value.Value; //Assumes values are in appropriate units already if (uom.Code == "mg1l-1") { isoProduct.DensityMassPerVolume = value; } else if (uom.Code == "g1count-1") { isoProduct.DensityMassPerCount = value; } else if (uom.Code == "ml1count-1") { isoProduct.DensityVolumePerCount = value; } } return(isoProduct); }
public ISOProduct ExportProduct(Product adaptProduct) { ISOProduct isoProduct = new ISOProduct(); //ID string productID = adaptProduct.Id.FindIsoId(XmlPrefix) ?? GenerateId(); isoProduct.ProductId = productID; if (!ExportIDs(adaptProduct.Id, productID)) { string preExistingID = TaskDataMapper.InstanceIDMap.GetISOID(adaptProduct.Id.ReferenceId); if (preExistingID.StartsWith("CVT")) { ISOCropVariety cvt = ISOTaskData.ChildElements.OfType <ISOCropType>().SelectMany(c => c.CropVarieties).FirstOrDefault(v => v.CropVarietyId == preExistingID); if (cvt != null) { //Fill the product ID on the variety now that we have one cvt.ProductIdRef = productID; } } //CVT becomes PDT in the mapping TaskDataMapper.InstanceIDMap.ReplaceISOID(adaptProduct.Id.ReferenceId, productID); } //Context Items //The 1.1, etc. convention below for PackagedProduct and PackagedProductInstance is internal to this plugin. //As LinkList.xml items classified in ManufacturerGLN LGP's, the data carries a proprietary definition that, //in this case, is internal to the Import/Export methods in this class and serves //no purpose other than ensuring exported data is reimported in its same form. If in future there is a need to expose //other product data in this way, we need simply alter these to methods to allow for the same. ExportContextItems(adaptProduct.ContextItems, productID, "ADAPT_Context_Items:Product"); int packagedProductIndex = 0; foreach (var packagedProduct in DataModel.Catalog.PackagedProducts.Where(pp => pp.ProductId == adaptProduct.Id.ReferenceId)) { ExportContextItems(packagedProduct.ContextItems, productID, "ADAPT_Context_Items:PackagedProduct", $"{(++packagedProductIndex).ToString()}."); int packagedProductInstanceIndex = 0; foreach (var packagedProductInstance in DataModel.Catalog.PackagedProductInstances.Where(ppi => ppi.PackagedProductId == packagedProduct.Id.ReferenceId)) { ExportContextItems(packagedProductInstance.ContextItems, productID, "ADAPT_Context_Items:PackagedProductInstance", $"{packagedProductIndex.ToString()}.{(++packagedProductInstanceIndex).ToString()}."); } } //Designator isoProduct.ProductDesignator = adaptProduct.Description; //Product Group string groupName = Enum.GetName(typeof(ProductTypeEnum), adaptProduct.ProductType); ISOProductGroup group = _productGroupMapper.ExportProductGroup(groupName, false); isoProduct.ProductGroupRef = group.ProductGroupId; //Type switch (adaptProduct.ProductType) { case ProductTypeEnum.Mix: isoProduct.ProductType = ISOProductType.Mixture; break; default: isoProduct.ProductType = ISOProductType.Single; break; } //Density if (adaptProduct.Density != null) { UnitOfMeasure uom = adaptProduct.Density.Value.UnitOfMeasure; int value = (int)adaptProduct.Density.Value.Value; //Assumes values are in appropriate units already if (uom.Code == "mg1l-1") { isoProduct.DensityMassPerVolume = value; } else if (uom.Code == "g1count-1") { isoProduct.DensityMassPerCount = value; } else if (uom.Code == "ml1count-1") { isoProduct.DensityVolumePerCount = value; } } return(isoProduct); }