public static bool DoesAssessmentHaveCredentialConnection(string assessmentCTID, ref string status) { string filter = string.Format("(base.Id in (SELECT f.[Id] FROM [dbo].[Assessment] a " + " inner join [Entity.Assessment] b on a.id = b.AssessmentId" + " inner join Entity c on b.EntityId = c.Id" + " Inner Join [Entity.ConditionProfile] d on c.EntityUid = d.rowId " + " Inner Join Entity e on d.EntityId = e.Id " + " inner join Credential f on e.EntityUid = f.RowId" + " where a.EntityStateId >= 0 and f.EntityStateId > 1 " + " and a.CTID = '{0}' ))", assessmentCTID); int ptotalRows = 0; CredentialManager.ExistanceSearch(filter, ref ptotalRows); if (ptotalRows > 0) { return(true); } else { //fallback. If the pending entry exists, it to be put there for a valid reason - but could have been a non-credential connection. var lopp = AssessmentManager.GetSummaryByCtid(assessmentCTID); if (lopp != null && lopp.Id > 0) { return(true); } //probably no message needed return(false); } }
// /// <summary> /// Handle component import /// TODO - should a save be done for each component or wait until the end /// </summary> /// <param name="input"></param> /// <param name="pathway"></param> /// <param name="bnodes"></param> /// <param name="status">TODO - do we want to continue using the pathway SaveStatus?</param> /// <returns></returns> public OutputComponent ImportComponent(InputComponent input, ThisEntity pathway, List <BNode> bnodes, SaveStatus status) { MappingHelperV3 helper = new MappingHelperV3(CodesManager.ENTITY_TYPE_PATHWAY_COMPONENT); //do we need to reference blank nodes here? - if so pass to this method helper.entityBlankNodes = bnodes; helper.CurrentEntityCTID = input.CTID; helper.CurrentEntityName = input.Name.ToString(); OutputComponent output = new OutputComponent(); // LoggingHelper.DoTrace(5, "======== Component ======== "); LoggingHelper.DoTrace(5, " type: "+ input.PathwayComponentType.ToString()); LoggingHelper.DoTrace(5, " name: "+ (input.Name ?? new JInput.LanguageMap("componentNameMissing")).ToString()); LoggingHelper.DoTrace(5, " ctid: "+ input.CTID); LoggingHelper.DoTrace(6, " @Id: "+ input.CtdlId); try { //add/updating Pathway if (!DoesComponentExist(input.CTID, ref output)) { //set the rowid now, so that can be referenced as needed //no, the guid comes from the resolving of entity references //actually OK, as earlier references would result in a pending record output.RowId = Guid.NewGuid(); } helper.currentBaseObject = output; if (input.CTID == "ce-fa6c139f-0615-401f-9920-6ec8c445baca") { } //initialize json properties output.JsonProperties = new PathwayComponentProperties(); // output.PathwayComponentType = input.PathwayComponentType; output.Name = helper.HandleLanguageMap(input.Name, output, "Name"); output.Description = helper.HandleLanguageMap(input.Description, output, "Description"); output.SubjectWebpage = input.SubjectWebpage; output.SourceData = input.SourceData; if (!string.IsNullOrWhiteSpace(output.SourceData) && output.SourceData.IndexOf("/resources/") > 0) { var ctid = ResolutionServices.ExtractCtid(output.SourceData); if (!string.IsNullOrWhiteSpace(ctid)) { if (output.PathwayComponentType.ToLower().IndexOf("credential") > -1) { var target = CredentialManager.GetMinimumByCtid(ctid); if (target != null && target.Id > 0) { //this approach 'buries' the cred from external references like credential in pathway output.SourceCredential = new TopLevelEntityReference() { Id = target.Id, Name = target.Name, Description = target.Description, CTID = target.CTID, SubjectWebpage = target.SubjectWebpage, //RowId = target.RowId }; output.JsonProperties.SourceCredential = output.SourceCredential; } } else if (output.PathwayComponentType.ToLower().IndexOf("assessmentcomp") > -1) { var target = AssessmentManager.GetSummaryByCtid(ctid); if (target != null && target.Id > 0) { //may not really need this, just the json output.SourceAssessment = new TopLevelEntityReference() { Id = target.Id, Name = target.Name, Description = target.Description, CTID = target.CTID, SubjectWebpage = target.SubjectWebpage, //RowId = target.RowId }; output.JsonProperties.SourceAssessment = output.SourceAssessment; } } else if (output.PathwayComponentType.ToLower().IndexOf("coursecomp") > -1) { var target = LearningOpportunityManager.GetByCtid(ctid); if (target != null && target.Id > 0) { //may not really need this, just the json output.SourceLearningOpportunity = new TopLevelEntityReference() { Id = target.Id, Name = target.Name, Description = target.Description, CTID = target.CTID, SubjectWebpage = target.SubjectWebpage, //RowId = target.RowId }; output.JsonProperties.SourceLearningOpportunity = output.SourceLearningOpportunity; } } } } output.CTID = input.CTID; output.PathwayCTID = pathway.CTID; //output.CodedNotation = input.CodedNotation; output.Identifier = helper.MapIdentifierValueListInternal(input.Identifier); if (output.Identifier != null && output.Identifier.Count() > 0) { output.IdentifierJson = JsonConvert.SerializeObject(output.Identifier, MappingHelperV3.GetJsonSettings()); } // output.ComponentDesignationList = helper.MapCAOListToList(input.ComponentDesignation); // output.CredentialType = input.CredentialType; output.CreditValue = helper.HandleValueProfileList(input.CreditValue, output.PathwayComponentType + ".CreditValue"); //TBD - how to handle. Will need to have imported the concept scheme/concept if (input.HasProgressionLevel != null && input.HasProgressionLevel.Any()) { foreach (var item in input.HasProgressionLevel) { output.HasProgressionLevels.Add(ResolutionServices.ExtractCtid(item)); } } output.PointValue = helper.HandleQuantitiveValue(input.PointValue, output.PathwayComponentType + ".PointValue"); // output.ProgramTerm = helper.HandleLanguageMap(input.ProgramTerm, output, "ProgramTerm"); //need to get relationshiptype to store-> this can be done by manager //3 output.HasChildList = helper.MapEntityReferenceGuids("PathwayComponent.HasChild", input.HasChild, CodesManager.ENTITY_TYPE_PATHWAY_COMPONENT, ref status); //2 output.HasIsChildOfList = helper.MapEntityReferenceGuids("PathwayComponent.IsChildOf", input.IsChildOf, CodesManager.ENTITY_TYPE_PATHWAY_COMPONENT, ref status); output.HasPrerequisiteList = helper.MapEntityReferenceGuids("PathwayComponent.Prerequisite", input.Prerequisite, CodesManager.ENTITY_TYPE_PATHWAY_COMPONENT, ref status); output.HasPreceedsList = helper.MapEntityReferenceGuids("PathwayComponent.Preceeds", input.Preceeds, CodesManager.ENTITY_TYPE_PATHWAY_COMPONENT, ref status); //populate JSON properties output.JsonProperties.ComponentDesignationList = output.ComponentDesignationList; output.JsonProperties.CreditValue = output.CreditValue; output.JsonProperties.Identifier = output.Identifier; output.JsonProperties.PointValue = output.PointValue; // if (input.HasCondition != null && input.HasCondition.Count() > 0) { output.HasCondition = new List <PathwayComponentCondition>(); foreach (var item in input.HasCondition) { //var jcc = JsonConvert.DeserializeObject<JInput.ComponentCondition>( item.ToString() ); var cc = new PathwayComponentCondition(); cc.Name = helper.HandleLanguageMap(item.Name, cc, "ComponentCondition.Name"); cc.Description = helper.HandleLanguageMap(item.Description, cc, "ComponentCondition.Description"); cc.RequiredNumber = item.RequiredNumber; cc.PathwayCTID = pathway.CTID; cc.HasTargetComponentList = helper.MapEntityReferenceGuids("ComponentCondition.TargetComponent", item.TargetComponent, CodesManager.ENTITY_TYPE_PATHWAY_COMPONENT, ref status); output.HasCondition.Add(cc); } } } catch (Exception ex) { LoggingHelper.LogError(ex, "ImportPathways.ImportComponent"); //status.AddError( string.Format( "ImportPathways.ImportComponent. ComponentType: {0}, Name: {1}, Message: {2}", output.ComponentTypeId, output.Name, ex.Message ) ); } //then save return(output); }