示例#1
0
        public static Guid ResolveEntityByRegistryAtIdToGuid(string property, string referencedAtId, int entityTypeId, ref SaveStatus status, ref bool isResolved)
        {
            Guid   entityUid   = new Guid();
            string ctid        = "";
            int    newEntityId = 0;

            if (string.IsNullOrWhiteSpace(referencedAtId))
            {
                return(entityUid);
            }

            List <string> messages = new List <string>();

            //test direct, and fall back to by ctid??
            //should only handle Uri's for now
            if (referencedAtId.Trim().ToLower().IndexOf("http") == 0)
            {
                //should probably ensure a registry url
                ctid = ExtractCtid(referencedAtId.Trim());
                if (ctid == "ce-fa6c139f-0615-401f-9920-6ec8c445baca")
                {
                }
                EM.Import_EntityResolution item = ImportManager.Import_EntityResolution_GetById(referencedAtId);

                if (item != null && item.Id > 0)
                {
                    isResolved = item.IsResolved != null ? ( bool )item.IsResolved : false;
                    //need to make sure valid
                    //actually should always be valid
                    //if ( BaseFactory.IsGuidValid( item.EntityUid ) )
                    //20-07-30 mparsons - why is EntityUid returned here?
                    //check this
                    return(( Guid )item.EntityUid);
                }
                else
                {
                    if (IsCtidValid(ctid, ref messages))
                    {
                        item = ImportManager.Import_EntityResolution_GetByCtid(ctid);
                        if (item != null && item.Id > 0)
                        {
                            isResolved = item.IsResolved != null ? ( bool )item.IsResolved : false;
                            return(( Guid )item.EntityUid);
                        }
                    }
                }
            }
            else
            {
                ctid = ExtractCtid(referencedAtId.Trim());
                if (IsCtidValid(ctid, ref messages))
                {
                    EM.Import_EntityResolution item2 = ImportManager.Import_EntityResolution_GetByCtid(ctid);
                    if (item2 != null && item2.Id > 0)
                    {
                        isResolved = item2.IsResolved != null ? ( bool )item2.IsResolved : false;
                        return(( Guid )item2.EntityUid);
                    }
                }
            }
            //add an import entry
            ImportManager importManager = new ImportManager();

            entityUid = Guid.NewGuid();
            string statusMsg = "";

            if (entityTypeId == CodesManager.ENTITY_TYPE_CREDENTIAL)
            {
                newEntityId = new CredentialManager().AddPendingRecord(entityUid, ctid, referencedAtId, ref statusMsg);
                if (newEntityId == 0)
                {
                    //need to log, and reset
                    status.AddError("Credential Add Pending failed for: " + property + ". " + statusMsg);
                    entityUid = new Guid();
                }
            }
            else if (entityTypeId == CodesManager.ENTITY_TYPE_ASSESSMENT_PROFILE)
            {
                newEntityId = new AssessmentManager().AddPendingRecord(entityUid, ctid, referencedAtId, ref statusMsg);
                if (newEntityId == 0)
                {
                    //need to log, and reset
                    status.AddError("Assessment Add Pending failed for: " + property + ". " + statusMsg);
                    entityUid = new Guid();
                }
            }
            else if (entityTypeId == CodesManager.ENTITY_TYPE_LEARNING_OPP_PROFILE)
            {
                newEntityId = new LearningOpportunityManager().AddPendingRecord(entityUid, ctid, referencedAtId, ref statusMsg);
                if (newEntityId == 0)
                {
                    //need to log, and reset
                    status.AddError("Learning Opportunity Add Pending failed for: " + property + ". " + statusMsg);
                    entityUid = new Guid();
                }
            }
            else if (entityTypeId == CodesManager.ENTITY_TYPE_COST_MANIFEST)
            {
                //should know the parent org, add to this method
                newEntityId = new CostManifestManager().AddPendingRecord(entityUid, ctid, referencedAtId, ref statusMsg);
                if (newEntityId == 0)
                {
                    //need to log, and reset
                    status.AddError("CostManifest Add Pending failed for: " + property + ". " + statusMsg);
                    entityUid = new Guid();
                }
            }
            else if (entityTypeId == CodesManager.ENTITY_TYPE_CONDITION_MANIFEST)
            {
                newEntityId = new ConditionManifestManager().AddPendingRecord(entityUid, ctid, referencedAtId, ref statusMsg);
                if (newEntityId == 0)
                {
                    //need to log, and reset
                    status.AddError("ConditionManifest Add Pending failed for: " + property + ". " + statusMsg);
                    entityUid = new Guid();
                }
            }
            else if (entityTypeId == CodesManager.ENTITY_TYPE_TRANSFER_VALUE_PROFILE)
            {
                //not sure we will ever have a reference to a TVP?
                newEntityId = new TransferValueProfileManager().AddPendingRecord(entityUid, ctid, referencedAtId, ref statusMsg);
                if (newEntityId == 0)
                {
                    //need to log, and reset
                    status.AddError("TransferValue Add Pending failed for: " + property + ". " + statusMsg);
                    entityUid = new Guid();
                }
            }
            else if (entityTypeId == CodesManager.ENTITY_TYPE_PATHWAY)
            {
                newEntityId = new PathwayManager().AddPendingRecord(entityUid, ctid, referencedAtId, ref statusMsg);
                if (newEntityId == 0)
                {
                    //need to log, and reset
                    status.AddError("Pathway Add Pending failed for: " + property + ". " + statusMsg);
                    entityUid = new Guid();
                }
            }
            else if (entityTypeId == CodesManager.ENTITY_TYPE_PATHWAY_COMPONENT)
            {
                if (ctid == "ce-fa6c139f-0615-401f-9920-6ec8c445baca")
                {
                }
                //need pathwayCTID for this ce-abcb5fe0-8fde-4f06-9d70-860cd5bdc763
                newEntityId = new PathwayComponentManager().AddPendingRecord(entityUid, ctid, referencedAtId, ref statusMsg);
                if (newEntityId == 0)
                {
                    //need to log, and reset
                    status.AddError(statusMsg);
                    //need to know what property would need to be fixed - really shouldn't happen
                    entityUid = new Guid();
                }
            }
            else
            {
                //for properties like organization.Offers, we don't know what the entity type is.
                //SO.....
            }

            if (BaseFactory.IsGuidValid(entityUid))
            {
                int id = importManager.Import_EntityResolutionAdd(referencedAtId,
                                                                  ctid,
                                                                  entityTypeId,
                                                                  entityUid,
                                                                  newEntityId,
                                                                  false,
                                                                  ref messages);
                //need to create a placeholder
                if (id == 0)
                {
                    status.AddError("Error - failed to add Import_EntityResolution for " + referencedAtId);
                    status.AddWarningRange(messages);
                    //return 0;
                }
            }


            return(entityUid);
        }
        public static Guid ResolveEntityByRegistryAtIdToGuid(string referencedAtId, int entityTypeId, ref SaveStatus status, ref bool isResolved)
        {
            Guid   entityUid   = new Guid();
            string ctid        = "";
            int    newEntityId = 0;

            if (string.IsNullOrWhiteSpace(referencedAtId))
            {
                return(entityUid);
            }

            List <string> messages = new List <string>();

            //test direct, and fall back to by ctid??
            //should only handle Uri's for now
            if (referencedAtId.Trim().ToLower().IndexOf("http") == 0)
            {
                //should probably ensure a registry url
                ctid = ExtractCtid(referencedAtId.Trim());

                EM.Import_EntityResolution item = ImportManager.Import_EntityResolution_GetById(referencedAtId);

                if (item != null && item.Id > 0)
                {
                    isResolved = item.IsResolved != null ? ( bool )item.IsResolved : false;
                    //need to make sure valid
                    //actually should always be valid
                    //if ( BaseFactory.IsGuidValid( item.EntityUid ) )
                    return(( Guid )item.EntityUid);

                    //add activity or error
                    //return entityUid;
                }
                else
                {
                    if (IsCtidValid(ctid, ref messages))
                    {
                        item = ImportManager.Import_EntityResolution_GetByCtid(ctid);
                        if (item != null && item.Id > 0)
                        {
                            isResolved = item.IsResolved != null ? ( bool )item.IsResolved : false;
                            return(( Guid )item.EntityUid);
                        }
                    }
                }
            }
            else
            {
                ctid = ExtractCtid(referencedAtId.Trim());
                if (IsCtidValid(ctid, ref messages))
                {
                    EM.Import_EntityResolution item2 = ImportManager.Import_EntityResolution_GetByCtid(ctid);
                    if (item2 != null && item2.Id > 0)
                    {
                        isResolved = item2.IsResolved != null ? ( bool )item2.IsResolved : false;
                        return(( Guid )item2.EntityUid);
                    }
                }
            }
            //add an import entry
            ImportManager importManager = new ImportManager();

            entityUid = Guid.NewGuid();
            string statusMsg = "";

            if (entityTypeId == CodesManager.ENTITY_TYPE_CREDENTIAL)
            {
                newEntityId = new CredentialManager().AddPendingRecord(entityUid, ctid, referencedAtId, ref statusMsg);
                if (newEntityId == 0)
                {
                    //need to log, and reset
                    status.AddError(statusMsg);
                    //need to know what property would need to be fixed - really shouldn't happen
                    entityUid = new Guid();
                }
            }
            else if (entityTypeId == CodesManager.ENTITY_TYPE_ASSESSMENT_PROFILE)
            {
                newEntityId = new AssessmentManager().AddPendingRecord(entityUid, ctid, referencedAtId, ref statusMsg);
                if (newEntityId == 0)
                {
                    //need to log, and reset
                    status.AddError(statusMsg);
                    //need to know what property would need to be fixed - really shouldn't happen
                    entityUid = new Guid();
                }
            }
            else if (entityTypeId == CodesManager.ENTITY_TYPE_LEARNING_OPP_PROFILE)
            {
                newEntityId = new LearningOpportunityManager().AddPendingRecord(entityUid, ctid, referencedAtId, ref statusMsg);
                if (newEntityId == 0)
                {
                    //need to log, and reset
                    status.AddError(statusMsg);
                    //need to know what property would need to be fixed - really shouldn't happen
                    entityUid = new Guid();
                }
            }
            else if (entityTypeId == CodesManager.ENTITY_TYPE_COST_MANIFEST)
            {
                //should know the parent org, add to this method
                newEntityId = new CostManifestManager().AddPendingRecord(entityUid, ctid, referencedAtId, ref statusMsg);
                if (newEntityId == 0)
                {
                    //need to log, and reset
                    status.AddError(statusMsg);
                    //need to know what property would need to be fixed - really shouldn't happen
                    entityUid = new Guid();
                }
            }
            else if (entityTypeId == CodesManager.ENTITY_TYPE_CONDITION_MANIFEST)
            {
                newEntityId = new ConditionManifestManager().AddPendingRecord(entityUid, ctid, referencedAtId, ref statusMsg);
                if (newEntityId == 0)
                {
                    //need to log, and reset
                    status.AddError(statusMsg);
                    //need to know what property would need to be fixed - really shouldn't happen
                    entityUid = new Guid();
                }
            }
            else
            {
                //for properties like organization.Offers, we don't know what the entity type is.
                //SO.....
            }
            if (BaseFactory.IsGuidValid(entityUid))
            {
                int id = importManager.Import_EntityResolutionAdd(referencedAtId,
                                                                  ctid,
                                                                  entityTypeId,
                                                                  entityUid,
                                                                  newEntityId,
                                                                  false,
                                                                  ref messages);
                //need to create a placeholder
                if (id == 0)
                {
                    status.AddError("Error - failed to add Import_EntityResolution for " + referencedAtId);
                    status.AddWarningRange(messages);
                    //return 0;
                }
            }


            return(entityUid);
        }