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); }