Beispiel #1
0
        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);
        }
Beispiel #2
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);
        }
        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);
            }
        }
Beispiel #4
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);
        }
Beispiel #5
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);
        }