}        //

        public static EM.Import_EntityResolution Import_EntityResolution_GetByCtid(string ctid)
        {
            EM.Import_EntityResolution entity = new EM.Import_EntityResolution();
            if (string.IsNullOrWhiteSpace(ctid))
            {
                return(entity);
            }
            try
            {
                using (var context = new EntityContext())
                {
                    entity = context.Import_EntityResolution
                             .FirstOrDefault(s => s.ReferencedCtid.ToLower() == ctid.ToLower());

                    if (entity != null && entity.Id > 0)
                    {
                    }
                }
            }
            catch (Exception ex)
            {
                LoggingHelper.LogError(ex, thisClassName + ".Import_EntityResolution_GetByCtid");
            }
            return(entity);
        }        //
Ejemplo n.º 2
0
        /// <summary>
        /// Get record by provided URI
        /// TODO - we should force all to be /resources
        /// </summary>
        /// <param name="referencedAtId"></param>
        /// <returns></returns>
        public static EM.Import_EntityResolution Import_EntityResolution_GetById(string referencedAtId)
        {
            EM.Import_EntityResolution entity = new EM.Import_EntityResolution();
            if (string.IsNullOrWhiteSpace(referencedAtId))
            {
                return(entity);
            }
            //consider, although we already have a ctid lookp fall back
            string altId = "";

            if (referencedAtId.ToLower().IndexOf("/graph/ce") > -1)
            {
                altId = referencedAtId.Replace("/graph/", "/resources/");
            }
            else
            {
                altId = referencedAtId.Trim();
                //altId = referencedAtId.Replace( "/resources", "/graph" );
            }
            try
            {
                using (var context = new EntityContext())
                {
                    entity = context.Import_EntityResolution
                             .FirstOrDefault(s => s.ReferencedId.ToLower() == referencedAtId.ToLower() ||
                                             s.ReferencedCtid.ToLower() == referencedAtId.ToLower());

                    if (entity != null && entity.Id > 0)
                    {
                        if (!(entity.IsResolved ?? false))
                        {
                        }
                        //check - if entity exists. If not, then probably deleted, and so should remove this record
                        var e = EntityManager.GetEntity((Guid)entity.EntityUid, false);
                        if (e == null || e.Id == 0)
                        {
                            //21-04-30 - not sure we should be deleting these????
                            //			- this thought occurred after importing Ivy Tech from prod - resulting in all of the owns (credentials etc) being added to pending
                            string statusMessage = "";
                            Delete_Import_EntityResolution(entity.Id, ref statusMessage);

                            return(new EM.Import_EntityResolution());
                        }
                        else
                        {
                            //check if entityId is accurate
                            if (entity.ReferencedEntityTypeId != e.EntityTypeId)
                            {
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                LoggingHelper.LogError(ex, thisClassName + ".Import_EntityResolution_GetById");
            }
            return(entity);
        }        //
        /// <summary>
        /// Get record by provided URI
        /// TODO - we should force all to be /resources
        /// </summary>
        /// <param name="referencedAtId"></param>
        /// <returns></returns>
        public static EM.Import_EntityResolution Import_EntityResolution_GetById(string referencedAtId)
        {
            EM.Import_EntityResolution entity = new EM.Import_EntityResolution();
            if (string.IsNullOrWhiteSpace(referencedAtId))
            {
                return(entity);
            }
            //consider, although we already have a ctid lookp fall back
            string altId = "";

            if (referencedAtId.ToLower().IndexOf("/graph/ce") > -1)
            {
                altId = referencedAtId.Replace("/graph/", "/resources/");
            }
            else
            {
                altId = referencedAtId.Trim();
                //altId = referencedAtId.Replace( "/resources", "/graph" );
            }
            try
            {
                using (var context = new EntityContext())
                {
                    entity = context.Import_EntityResolution
                             .FirstOrDefault(s => s.ReferencedId.ToLower() == referencedAtId.ToLower() ||
                                             s.ReferencedCtid.ToLower() == referencedAtId.ToLower());

                    if (entity != null && entity.Id > 0)
                    {
                        if (!(entity.IsResolved ?? false))
                        {
                            //check
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                LoggingHelper.LogError(ex, thisClassName + ".Import_EntityResolution_GetById");
            }
            return(entity);
        }        //
Ejemplo n.º 4
0
        }        //

        public static EM.Import_EntityResolution Import_EntityResolution_GetByCtid(string ctid)
        {
            EM.Import_EntityResolution entity = new EM.Import_EntityResolution();
            if (string.IsNullOrWhiteSpace(ctid))
            {
                return(entity);
            }
            try
            {
                using (var context = new EntityContext())
                {
                    entity = context.Import_EntityResolution
                             .FirstOrDefault(s => s.ReferencedCtid.ToLower() == ctid.ToLower());

                    if (entity != null && entity.Id > 0)
                    {
                        //check - if entity exists. If not, then probably deleted, and so should remove this record
                        var e = EntityManager.GetEntity(( Guid )entity.EntityUid, false);
                        if (e == null || e.Id == 0)
                        {
                            string statusMessage = "";
                            Delete_Import_EntityResolution(entity.Id, ref statusMessage);

                            return(new EM.Import_EntityResolution());
                        }
                        else
                        {
                            //check if entityId is accurate
                            if (entity.ReferencedEntityTypeId != e.EntityTypeId)
                            {
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                LoggingHelper.LogError(ex, thisClassName + ".Import_EntityResolution_GetByCtid");
            }
            return(entity);
        }        //
Ejemplo n.º 5
0
 public static void HandleResolvedEntity(EM.Import_EntityResolution entity)
 {
 }
Ejemplo n.º 6
0
        //Import_EntityResolution
        public int Import_EntityResolutionAdd(string referencedAtId,
                                              string referencedCtid,
                                              int referencedEntityTypeId,
                                              Guid entityUid,
                                              int newEntityId,
                                              bool isResolved,
                                              ref List <string> messages,
                                              bool setAsResolved = false)
        {
            EM.Import_EntityResolution efEntity = new EM.Import_EntityResolution();
            using (var context = new EntityContext())
            {
                try
                {
                    //first determine if referencedAtId exists
                    EM.Import_EntityResolution entity = Import_EntityResolution_GetById(referencedAtId);
                    if (entity == null || entity.Id == 0)
                    {
                        //try by ctid
                        entity = Import_EntityResolution_GetByCtid(referencedCtid);
                    }
                    if (entity != null && entity.Id > 0)
                    {
                        //indicates can ignore add, but need a way to show has been resolved
                        //and on being resolved, need to call methods to activate entities like roles
                        //18-03-24 mp - no action should be necessary as roles exist
                        if (setAsResolved &&
                            (entity.IsResolved ?? false) == false)
                        {
                            entity.IsResolved = true;
                            if (newEntityId > 0)
                            {
                                entity.EntityBaseId = newEntityId;
                            }
                            if (referencedEntityTypeId > 0)
                            {
                                entity.ReferencedEntityTypeId = referencedEntityTypeId;
                            }
                            int count2 = context.SaveChanges();

                            return(entity.Id);
                        }
                        //was returning zero?
                        //return 0;
                        return(entity.Id);
                    }
                    else
                    {
                        if ((referencedAtId ?? "").Length == 39)
                        {
                            LoggingHelper.DoTrace(3, thisClassName + string.Format(".Import_EntityResolutionAdd. Unexpected ctid in referencedAtId: {0}, referencedEntityTypeId: {1}, entityUid: {2} ", referencedAtId, referencedEntityTypeId, entityUid));
                        }
                        efEntity.Created                = System.DateTime.Now;
                        efEntity.ReferencedId           = referencedAtId.Replace("/graph/", "/resources").ToLower();
                        efEntity.ReferencedCtid         = (referencedCtid ?? "").ToLower();
                        efEntity.ReferencedEntityTypeId = referencedEntityTypeId;
                        efEntity.EntityBaseId           = newEntityId;
                        efEntity.EntityUid              = entityUid;
                        efEntity.IsResolved             = setAsResolved;

                        context.Import_EntityResolution.Add(efEntity);
                        int count = context.SaveChanges();
                        if (count > 0)
                        {
                            return(efEntity.Id);
                        }
                        else
                        {
                            //?no info on error
                            messages.Add("Import_EntityResolutionAdd - Error - the add was not successful. ");
                            string message = string.Format(thisClassName + ".Import_EntityResolutionAdd() Failed. The process appeared to not work, but was not an exception, so we have no message, or no clue. referencedAtId: {0}; referencedEntityTypeId: {1}", referencedAtId, referencedEntityTypeId);
                            EmailManager.NotifyAdmin(thisClassName + ".Import_EntityResolutionAdd() Failed", message);
                        }
                    }
                }
                catch (System.Data.Entity.Validation.DbEntityValidationException dbex)
                {
                    string message = HandleDBValidationError(dbex, thisClassName + ".Import_EntityResolutionAdd() ", "Import");
                    messages.Add("Error - the save was not successful. " + message);
                }
                catch (Exception ex)
                {
                    LoggingHelper.LogError(ex, thisClassName + string.Format(".Import_EntityResolutionAdd(), referencedAtId: {0}; referencedEntityTypeId: {1}", referencedAtId, referencedEntityTypeId));
                    messages.Add("Unexpected system error. The site administration has been notified.");
                }
            }

            return(0);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Attempt to resolve an organization reference by either a registry URI or CTID
        /// </summary>
        /// <param name="referencedAtId">Registry URI or CTID</param>
        /// <param name="status"></param>
        /// <param name="isResolved"></param>
        /// <returns></returns>
        public static Guid ResolveOrgByRegistryAtId(string referencedAtId, ref SaveStatus status, ref bool isResolved)
        {
            Guid          entityUid = new Guid();
            string        ctid      = "";
            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 = "";
            int    orgId     = new OrganizationManager().AddPendingRecord(entityUid, ctid, referencedAtId, ref statusMsg);

            if (orgId == 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
            {
                int id = importManager.Import_EntityResolutionAdd(referencedAtId,
                                                                  ctid,
                                                                  CodesManager.ENTITY_TYPE_ORGANIZATION,
                                                                  entityUid,
                                                                  orgId,
                                                                  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(new Guid());
                }
            }

            return(entityUid);
        }
Ejemplo n.º 8
0
        public static int ResolveEntityByRegistryAtId(string referencedAtId, int entityTypeId, ref SaveStatus status, ref bool isResolved)
        {
            Guid          entityUid   = Guid.NewGuid();
            int           newEntityId = 0;
            string        ctid        = "";
            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());
                LoggingHelper.DoTrace(7, string.Format("ResolutionServices.ResolveEntityByRegistryAtId: EntityTypeId: {0}, referencedAtId: {1} ", entityTypeId, referencedAtId));

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

                if (item != null && item.Id > 0 && (item.EntityBaseId ?? 0) > 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((int)item.EntityBaseId);
                }
                else
                {
                    LoggingHelper.DoTrace(6, string.Format("ResolutionServices. **FAILED** ResolveEntityByRegistryAtId: EntityTypeId: {0}, target.CtdlId: {1}. Trying with CTID: {2}", entityTypeId, referencedAtId, ctid));
                    if (IsCtidValid(ctid, ref messages))
                    {
                        item = ImportManager.Import_EntityResolution_GetByCtid(ctid);
                        if (item != null && item.Id > 0 && (item.EntityBaseId ?? 0) > 0)
                        {
                            isResolved = item.IsResolved != null ? ( bool )item.IsResolved : false;
                            return(( int )item.EntityBaseId);
                        }
                    }
                }
            }
            else
            {
                ctid = ExtractCtid(referencedAtId.Trim());
                LoggingHelper.DoTrace(7, string.Format("ResolutionServices.ResolveEntityByRegistryAtId. referencedAtId appears to be a ctid EntityTypeId: {0}, referencedAtId: {1}, ctid: {2} ", entityTypeId, referencedAtId, ctid));
                if (IsCtidValid(ctid, ref messages))
                {
                    EM.Import_EntityResolution item2 = ImportManager.Import_EntityResolution_GetByCtid(ctid);
                    if (item2 != null && item2.Id > 0 && (item2.EntityBaseId ?? 0) > 0)
                    {
                        isResolved = item2.IsResolved != null ? ( bool )item2.IsResolved : false;
                        return(( int )item2.EntityBaseId);
                    }
                    else
                    {
                        LoggingHelper.DoTrace(5, string.Format("ResolutionServices.ResolveEntityByRegistryAtId. DID NOT RESOLVE VIA CTID referencedAtId appears to be a ctid EntityTypeId: {0}, ctid: {2} ", entityTypeId, referencedAtId, ctid));
                    }
                }
            }
            //add an import entry - need to do the base first
            ImportManager importManager = new ImportManager();

            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)
            {
                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 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(statusMsg);
                    //need to know what property would need to be fixed - really shouldn't happen
                    entityUid = new Guid();
                }
            }
            else if (entityTypeId == CodesManager.ENTITY_TYPE_PATHWAY_COMPONENT)
            {
                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 if (entityTypeId == CodesManager.ENTITY_TYPE_COMPETENCY_FRAMEWORK)
            {
                //actually should not happen - confirm the cf must exist or will be rejected by API
                newEntityId = new CompetencyFrameworkManager().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_TRANSFER_VALUE_PROFILE)
            {
                //actually should not happen - confirm the tvp must exist or will be rejected by API
                newEntityId = new TransferValueProfileManager().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();
                }
            }
            //
            if (newEntityId > 0)
            {
                int id = importManager.Import_EntityResolutionAdd(referencedAtId,
                                                                  ctid,
                                                                  entityTypeId,
                                                                  entityUid,
                                                                  newEntityId,
                                                                  false,
                                                                  ref messages, true);
                //need to create a placeholder
                if (id == 0)
                {
                    status.AddError("Error - failed to add Import_EntityResolution for " + referencedAtId);
                    status.AddWarningRange(messages);
                    //this may be wiping out newEntityId
                    //return 0;
                }
            }

            return(newEntityId);
        }
Ejemplo n.º 9
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);
        }