public Affiliation Draft(ESDATModel esdatModel)
        {
            var entity = new Affiliation();

            entity.AffiliationStartDate = DateTime.Today;
            entity.PrimaryEmail         = string.Empty;

            ODM2EntityLinker.Link(entity, Person);

            Validate(entity);

            return(entity);
        }
        public Core.Action Map(ESDATModel esdatModel)
        {
            var entity = Draft(esdatModel);

            // Feature Actions
            var featureAction = _sampleCollectionFactory.FeatureActionMapper.Map(esdatModel);

            ODM2EntityLinker.Link(entity, featureAction);

            // Sampling Feature
            var samplingFeature = _sampleCollectionFactory.SamplingFeatureMapper.Map(esdatModel);

            ODM2EntityLinker.Link(featureAction, samplingFeature);

            // Dataset Guid
            // Generate and set guid for this import batch
            var guid = Guid.NewGuid();

            _sampleCollectionFactory.DatasetMapper.Guid = guid;
            _chemistryFactory.DatasetMapper.Guid        = guid;

            _chemistryFactory.DatasetMapper.BackingStore = _sampleCollectionFactory.DatasetMapper.BackingStore;

            // Results
            // Each Feature Action can contain many results (Samples)
            foreach (SampleFileData sample_ in esdatModel.SampleFileData)
            {
                _sampleCollectionFactory.ResultMapper.Sample = sample_;
                Result result = _sampleCollectionFactory.ResultMapper.Map(esdatModel);
                ODM2EntityLinker.Link(featureAction, result);

                // Unit
                var unit = _sampleCollectionFactory.UnitMapper.Map(esdatModel);
                ODM2EntityLinker.Link(result, unit);

                // Variable
                var variable = _sampleCollectionFactory.VariableMapper.Map(esdatModel);
                ODM2EntityLinker.Link(result, variable);

                // Datasets Result
                {
                    var datasetsResult = _sampleCollectionFactory.DatasetsResultMapper.Map(esdatModel);
                    ODM2EntityLinker.Link(result, datasetsResult);

                    var dataset = _sampleCollectionFactory.DatasetMapper.Map(esdatModel);
                    ODM2EntityLinker.Link(datasetsResult, dataset);
                }

                // Processing Level
                var processingLevel = _sampleCollectionFactory.ProcessingLevelMapper.Map(esdatModel);
                ODM2EntityLinker.Link(result, processingLevel);

                // Result Extension Property Values
                {
                    var properties = new Dictionary <string, string>();

                    properties[ESDATSampleCollectionConstants.ResultExtensionPropertyValueKeySampleCode]      = sample_.SampleCode;
                    properties[ESDATSampleCollectionConstants.ResultExtensionPropertyValueKeyFieldID]         = sample_.FieldID;
                    properties[ESDATSampleCollectionConstants.ResultExtensionPropertyValueKeySampleDepth]     = sample_.SampleDepth.ToString();
                    properties[ESDATSampleCollectionConstants.ResultExtensionPropertyValueKeyMatrixType]      = sample_.MatrixType;
                    properties[ESDATSampleCollectionConstants.ResultExtensionPropertyValueKeySampleType]      = sample_.SampleType;
                    properties[ESDATSampleCollectionConstants.ResultExtensionPropertyValueKeyParentSample]    = sample_.ParentSample;
                    properties[ESDATSampleCollectionConstants.ResultExtensionPropertyValueKeySDG]             = sample_.SDG;
                    properties[ESDATSampleCollectionConstants.ResultExtensionPropertyValueKeyLabSampleID]     = sample_.LabSampleID;
                    properties[ESDATSampleCollectionConstants.ResultExtensionPropertyValueKeyComments]        = sample_.Comments;
                    properties[ESDATSampleCollectionConstants.ResultExtensionPropertyValueKeyLabReportNumber] = sample_.LabReportNumber;

                    foreach (var property in properties)
                    {
                        var extensionProperty = _sampleCollectionFactory.ExtensionPropertyMapper.Map(property.Key);

                        var propertyID    = extensionProperty.PropertyID;
                        var propertyValue = property.Value;
                        var resultExtensionPropertyValue = _sampleCollectionFactory.ResultExtensionPropertyValueMapper.Map(propertyID, propertyValue);

                        ODM2EntityLinker.Link(resultExtensionPropertyValue, extensionProperty);
                        ODM2EntityLinker.Link(result, resultExtensionPropertyValue);
                    }
                }

                // Related Actions
                // Create a new related Action for each chemistry file
                // Assume that 1 unique sample maps to one or more chemistry files
                var chemistryData = esdatModel.ChemistryData.Where(x => x.SampleCode.Equals(sample_.SampleCode));

                foreach (ChemistryFileData chemistry_ in chemistryData)
                {
                    _chemistryFactory.ActionMapper.ParentAction   = entity;
                    _chemistryFactory.ActionMapper.SampleFileData = sample_;
                    var chemistryAction = _chemistryFactory.ActionMapper.Map(esdatModel, chemistry_);

                    _chemistryFactory.RelatedActionMapper.SetRelationship(entity, _WQDefaultValueProvider.ActionRelationshipTypeCVSampleCollection, chemistryAction);
                    var relatedAction = _chemistryFactory.RelatedActionMapper.Map(esdatModel);

                    ODM2EntityLinker.Link(entity, relatedAction);
                }
            }

            // Action Bies
            {
                ActionBy actionBy = _sampleCollectionFactory.ActionByMapper.Map(esdatModel);
                ODM2EntityLinker.Link(entity, actionBy);

                var person = _chemistryFactory.PersonMapper.Map(esdatModel);
                _chemistryFactory.AffiliationMapper.Person = person;

                var affiliation = _chemistryFactory.AffiliationMapper.Map(esdatModel);

                ODM2EntityLinker.Link(actionBy, affiliation);
            }


            // Method
            {
                var method = _sampleCollectionFactory.MethodMapper.Map(esdatModel);
                ODM2EntityLinker.Link(entity, method);

                var organization = _sampleCollectionFactory.OrganizationMapper.Map(esdatModel);
                ODM2EntityLinker.Link(method, organization);
            }

            return(entity);
        }
Esempio n. 3
0
        public Core.Action Map(ESDATModel esdatModel, ChemistryFileData chemistry)
        {
            var entity = Draft(esdatModel, chemistry);

            // Feature Actions
            var featureAction = _chemistryFactory.FeatureActionMapper.Map(esdatModel, chemistry);

            ODM2EntityLinker.Link(entity, featureAction);

            // Sampling Feature
            var samplingFeature = _chemistryFactory.SamplingFeatureMapper.Map(esdatModel, chemistry);

            ODM2EntityLinker.Link(featureAction, samplingFeature);

            // Result
            // Each Feature Action contains 1 Result (Chemistry)
            {
                var result = _chemistryFactory.ResultMapper.Map(esdatModel, chemistry);
                ODM2EntityLinker.Link(featureAction, result);

                // Unit
                var unit = _chemistryFactory.UnitMapper.Map(esdatModel, chemistry);
                ODM2EntityLinker.Link(result, unit);

                // Variable
                var variable = _chemistryFactory.VariableMapper.Map(esdatModel, chemistry);
                ODM2EntityLinker.Link(result, variable);

                // Datasets Result
                {
                    var datasetsResult = _chemistryFactory.DatasetsResultMapper.Map(esdatModel);
                    ODM2EntityLinker.Link(result, datasetsResult);

                    var dataset = _chemistryFactory.DatasetMapper.Map(esdatModel);
                    ODM2EntityLinker.Link(datasetsResult, dataset);
                }

                // Processing Level
                var processingLevel = _chemistryFactory.ProcessingLevelMapper.Map(esdatModel);
                ODM2EntityLinker.Link(result, processingLevel);

                // Measurement Result
                {
                    var measurementResult = _chemistryFactory.MeasurementResultMapper.Map(esdatModel, chemistry);
                    ODM2EntityLinker.Link(result, measurementResult);

                    ODM2EntityLinker.Link(measurementResult, unit);

                    var measurementResultValue = _chemistryFactory.MeasurementResultValueMapper.Map(esdatModel, chemistry);
                    ODM2EntityLinker.Link(measurementResult, measurementResultValue);
                }

                // Result Extension Property Values
                {
                    var properties = new Dictionary <string, string>();

                    properties[ESDATChemistryConstants.ResultExtensionPropertyValueKeySampleCode]      = chemistry.SampleCode;
                    properties[ESDATChemistryConstants.ResultExtensionPropertyValueKeyPrefix]          = chemistry.Prefix;
                    properties[ESDATChemistryConstants.ResultExtensionPropertyValueKeyTotalOrFiltered] = chemistry.TotalOrFiltered;
                    properties[ESDATChemistryConstants.ResultExtensionPropertyValueKeyResultType]      = chemistry.ResultType;
                    properties[ESDATChemistryConstants.ResultExtensionPropertyValueKeyEQL]             = chemistry.EQL.ToString();
                    properties[ESDATChemistryConstants.ResultExtensionPropertyValueKeyEQLUnits]        = chemistry.EQLUnits;
                    properties[ESDATChemistryConstants.ResultExtensionPropertyValueKeyComments]        = chemistry.Comments;
                    properties[ESDATChemistryConstants.ResultExtensionPropertyValueKeyUCL]             = chemistry.UCL.ToString();
                    properties[ESDATChemistryConstants.ResultExtensionPropertyValueKeyLCL]             = chemistry.LCL.ToString();

                    foreach (var property in properties)
                    {
                        var extensionProperty = _chemistryFactory.ExtensionPropertyMapper.Map(property.Key);

                        var propertyID    = extensionProperty.PropertyID;
                        var propertyValue = property.Value;
                        var resultExtensionPropertyValue = _chemistryFactory.ResultExtensionPropertyValueMapper.Map(propertyID, propertyValue);

                        ODM2EntityLinker.Link(result, resultExtensionPropertyValue);
                    }
                }
            }

            // Action Bies
            {
                ActionBy actionBy = _chemistryFactory.ActionByMapper.Map(esdatModel);
                ODM2EntityLinker.Link(entity, actionBy);

                var person = _chemistryFactory.PersonMapper.Map(esdatModel);
                _chemistryFactory.AffiliationMapper.Person = person;

                var affiliation = _chemistryFactory.AffiliationMapper.Map(esdatModel);

                ODM2EntityLinker.Link(actionBy, affiliation);
            }

            // Method
            {
                var method = _chemistryFactory.MethodMapper.Map(esdatModel, chemistry);
                ODM2EntityLinker.Link(entity, method);

                _chemistryFactory.OrganizationMapper.SampleFileData = SampleFileData;
                var organization = _chemistryFactory.OrganizationMapper.Map(esdatModel, chemistry);
                ODM2EntityLinker.Link(method, organization);
            }

            // Related Actions
            _chemistryFactory.RelatedActionMapper.SetRelationship(entity, _WQDefaultValueProvider.ActionRelationshipTypeCVChemistry, ParentAction);
            RelatedAction relatedAction = _chemistryFactory.RelatedActionMapper.Map(esdatModel);

            ODM2EntityLinker.Link(entity, relatedAction);

            return(entity);
        }