Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }