public ISOCropType ExportCropType(Crop adaptCropType, ISOProductGroup cropTypeProductGroup) { ISOCropType isoCrop = new ISOCropType(TaskDataMapper.Version); //ID string id = adaptCropType.Id.FindIsoId() ?? GenerateId(); isoCrop.CropTypeId = id; ExportIDs(adaptCropType.Id, id); ExportContextItems(adaptCropType.ContextItems, id, "ADAPT_Context_Items:Crop"); //Designator isoCrop.CropTypeDesignator = adaptCropType.Name; //Product Group isoCrop.ProductGroupIdRef = cropTypeProductGroup.ProductGroupId; //Varieties if (DataModel.Catalog.Products != null) { IEnumerable <Product> varietyProducts = DataModel.Catalog.Products.Where(p => p.ProductType == ProductTypeEnum.Variety); if (varietyProducts.Any()) { IEnumerable <CropVarietyProduct> cropVarieties = varietyProducts.Cast <CropVarietyProduct>().Where(v => v.CropId == adaptCropType.Id.ReferenceId); if (cropVarieties.Any()) { CropVarietyMapper varietyMapper = new CropVarietyMapper(TaskDataMapper); isoCrop.CropVarieties = varietyMapper.ExportCropVarieties(cropVarieties).ToList(); } } } return(isoCrop); }
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 ISOProductGroup ExportProductGroup(string productGroupName, bool isCropType) { if (productGroupName == "Variety") { return(this.ExportProductGroup("CropType", true)); } else if (ISOTaskData.ChildElements.OfType <ISOProductGroup>().Any(g => g.ProductGroupDesignator == productGroupName)) { //return the prexisting value return(ISOTaskData.ChildElements.OfType <ISOProductGroup>().Single(g => g.ProductGroupDesignator == productGroupName)); } else { ISOProductGroup pgp = new ISOProductGroup(); //ID pgp.ProductGroupId = GenerateId(); //Designator pgp.ProductGroupDesignator = productGroupName; //Type if (isCropType) { pgp.ProductGroupType = ISOEnumerations.ISOProductGroupType.CropType; } else { pgp.ProductGroupType = ISOEnumerations.ISOProductGroupType.ProductGroup; } //Add to the TaskData ISOTaskData.ChildElements.Add(pgp); return(pgp); } }
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); }