public static ThisEntity GetBySubjectWebpage(string swp) { ThisEntity entity = new ThisEntity(); if (string.IsNullOrWhiteSpace(swp)) { return(entity); } return(EntityMgr.GetBySubjectWebpage(swp)); }
/// <summary> /// Get by CTID - will return pending records /// </summary> /// <param name="ctid"></param> /// <returns></returns> public static ThisEntity GetSummaryByCtid(string ctid) { ThisEntity entity = new ThisEntity(); if (string.IsNullOrWhiteSpace(ctid)) { return(entity); } return(EntityMgr.GetSummaryByCtid(ctid)); }
public bool Import(ThisEntity entity, ref SaveStatus status) { //do a get, and add to cache before updating if (entity.Id > 0) { if (UtilityManager.GetAppKeyValue("organizationCacheMinutes", 0) > 0) { if (System.DateTime.Now.Hour > 7 && System.DateTime.Now.Hour < 18) { GetDetail(entity.Id); } } } bool isValid = new EntityMgr().Save(entity, ref status); List <string> messages = new List <string>(); if (entity.Id > 0) { if (UtilityManager.GetAppKeyValue("organizationCacheMinutes", 0) > 0) { CacheManager.RemoveItemFromCache("organization", entity.Id); } if (UtilityManager.GetAppKeyValue("delayingAllCacheUpdates", false) == false) { //update cache ThreadPool.QueueUserWorkItem(UpdateCaches, entity); } else { new SearchPendingReindexManager().Add(CodesManager.ENTITY_TYPE_ORGANIZATION, entity.Id, 1, ref messages); //add all credential in a verification profile if (entity.VerificationServiceProfiles != null && entity.VerificationServiceProfiles.Count > 0) { foreach (var profile in entity.VerificationServiceProfiles) { if (profile.TargetCredential != null && profile.TargetCredential.Count > 0) { new CredentialServices().AddCredentialsToPendingReindex(profile.TargetCredential); } } } //20-11-20 mp re: QA performed // - may have to reindex all orgs etc that have QA performed by a QA org!!! if (messages.Count > 0) { status.AddWarningRange(messages); } } } return(isValid); }
public static ThisEntity GetDetailByCtid(string ctid, bool skippingCache = false) { ThisEntity entity = new ThisEntity(); if (string.IsNullOrWhiteSpace(ctid)) { return(entity); } var organization = EntityMgr.GetByCtid(ctid); return(GetDetail(organization.Id, skippingCache)); }
public bool DoesEntityExist(string ctid, ref ThisEntity entity) { bool exists = false; entity = EntityServices.GetSummaryByCtid(ctid); if (entity != null && entity.Id > 0) { return(true); } return(exists); }
public static ThisEntity GetDetailByCtid(string ctid, bool skippingCache = false) { ThisEntity entity = new ThisEntity(); if (string.IsNullOrWhiteSpace(ctid)) { return(entity); } //21-03-06 mp - there is too much extra work doing this (would be OK if just the entity) var organization = EntityMgr.GetSummaryByCtid(ctid); return(GetDetail(organization.Id, skippingCache)); }
public static CM.Organization GetDetail(int id, bool skippingCache = false) { int cacheMinutes = UtilityManager.GetAppKeyValue("organizationCacheMinutes", 0); DateTime maxTime = DateTime.Now.AddMinutes(cacheMinutes * -1); string key = "organization_" + id.ToString(); if (skippingCache == false && HttpRuntime.Cache[key] != null && cacheMinutes > 0) { var cache = new CachedOrganization(); try { cache = ( CachedOrganization )HttpRuntime.Cache[key]; if (cache.lastUpdated > maxTime) { LoggingHelper.DoTrace(6, string.Format("===OrganizationServices.GetDetail === Using cached version of Organization, Id: {0}, {1}", cache.Item.Id, cache.Item.Name)); return(cache.Item); } } catch (Exception ex) { LoggingHelper.DoTrace(6, thisClassName + ".GetDetail. Get OrganizationCache === exception " + ex.Message); } } else { LoggingHelper.DoTrace(8, thisClassName + string.Format(".GetDetail === Retrieving full version of Organization, Id: {0}", id)); } DateTime start = DateTime.Now; CM.Organization entity = Mgr.GetDetail(id); DateTime end = DateTime.Now; int elasped = (end - start).Seconds; //Cache the output if more than specific seconds, //NOTE need to be able to force it for imports //&& elasped > 2 if (key.Length > 0 && cacheMinutes > 0) { try { var newCache = new CachedOrganization() { Item = entity, lastUpdated = DateTime.Now }; if (HttpContext.Current != null) { if (HttpContext.Current.Cache[key] != null) { HttpRuntime.Cache.Remove(key); HttpRuntime.Cache.Insert(key, newCache); LoggingHelper.DoTrace(5, string.Format("===OrganizationServices.GetDetail $$$ Updating cached version of Organization, Id: {0}, {1}", entity.Id, entity.Name)); } else { LoggingHelper.DoTrace(5, string.Format("===OrganizationServices.GetDetail ****** Inserting new cached version of Organization, Id: {0}, {1}", entity.Id, entity.Name)); System.Web.HttpRuntime.Cache.Insert(key, newCache, null, DateTime.Now.AddMinutes(cacheMinutes), TimeSpan.Zero); } } } catch (Exception ex) { LoggingHelper.DoTrace(6, thisClassName + ".GetDetail. Updating OrganizationCache === exception " + ex.Message); } } else { LoggingHelper.DoTrace(7, string.Format("===OrganizationServices.GetDetail $$$$$$ skipping caching of Organization, Id: {0}, {1}, elasped:{2}", entity.Id, entity.Name, elasped)); } return(entity); }
public static CM.Organization GetBasic(int id) { CM.Organization entity = Mgr.GetForSummary(id); return(entity); }
public bool ImportV3(string payload, SaveStatus status) { DateTime started = DateTime.Now; var saveDuration = new TimeSpan(); InputEntityV3 input = new InputEntityV3(); var bnodes = new List <BNodeV3>(); var mainEntity = new Dictionary <string, object>(); Dictionary <string, object> dictionary = RegistryServices.JsonToDictionary(payload); object graph = dictionary["@graph"]; //serialize the graph object var glist = JsonConvert.SerializeObject(graph); //parse graph in to list of objects JArray graphList = JArray.Parse(glist); int cntr = 0; foreach (var item in graphList) { cntr++; if (cntr == 1) { var main = item.ToString(); //may not use this. Could add a trace method mainEntity = RegistryServices.JsonToDictionary(main); input = JsonConvert.DeserializeObject <InputEntityV3>(main); } else //is this too much of an assumption? { var bn = item.ToString(); bnodes.Add(JsonConvert.DeserializeObject <BNodeV3>(bn)); } } List <string> messages = new List <string>(); bool importSuccessfull = false; EntityServices mgr = new EntityServices(); MappingHelperV3 helper = new MappingHelperV3(2) { entityBlankNodes = bnodes }; helper.entityBlankNodes = bnodes; helper.CurrentEntityCTID = input.CTID; helper.CurrentEntityName = input.Name.ToString(); try { string ctid = input.CTID; string referencedAtId = input.CtdlId; LoggingHelper.DoTrace(5, " name: "+ input.Name.ToString()); LoggingHelper.DoTrace(6, " url: "+ input.SubjectWebpage); LoggingHelper.DoTrace(5, " ctid: "+ input.CTID); LoggingHelper.DoTrace(5, " @Id: "+ input.CtdlId); status.Ctid = ctid; if (status.DoingDownloadOnly) { return(true); } if (!DoesEntityExist(input.CTID, ref output)) { //set the rowid now, so that can be referenced as needed output.RowId = Guid.NewGuid(); LoggingHelper.DoTrace(1, string.Format(thisClassName + ".ImportV3(). Record was NOT found using CTID: '{0}'", input.CTID)); } else { LoggingHelper.DoTrace(1, string.Format(thisClassName + ".ImportV3(). Found record: '{0}' using CTID: '{1}'", input.Name, input.CTID)); } helper.currentBaseObject = output; helper.CurrentOwningAgentUid = output.RowId; output.AgentDomainType = input.Type; output.Name = helper.HandleLanguageMap(input.Name, output, "Name"); output.Description = helper.HandleLanguageMap(input.Description, output, "Description"); //map from idProperty to url output.SubjectWebpage = input.SubjectWebpage; output.CTID = input.CTID; //TBD handling if (!string.IsNullOrWhiteSpace(status.DocumentPublishedBy)) { //output.PublishedByOrganizationCTID = status.DocumentPublishedBy; var porg = OrganizationManager.GetSummaryByCtid(status.DocumentPublishedBy); if (porg != null && porg.Id > 0) { //TODO - store this in a json blob?????????? //output.PublishedByOrganizationId = porg.Id; //output.PublishedByOrganizationName = porg.Name; //this will result in being added to Entity.AgentRelationship output.PublishedBy = new List <Guid>() { porg.RowId }; } else { //if publisher not imported yet, all publishee stuff will be orphaned var entityUid = Guid.NewGuid(); var statusMsg = ""; var resPos = referencedAtId.IndexOf("/resources/"); var swp = referencedAtId.Substring(0, (resPos + "/resources/".Length)) + status.DocumentPublishedBy; int orgId = new OrganizationManager().AddPendingRecord(entityUid, status.DocumentPublishedBy, swp, ref statusMsg); } } else { //may need a check for existing published by to ensure not lost if (output.Id > 0) { if (output.OrganizationRole_Recipient != null && output.OrganizationRole_Recipient.Any()) { var publishedByList = output.OrganizationRole_Recipient.Where(s => s.RoleTypeId == 30).ToList(); if (publishedByList != null && publishedByList.Any()) { var pby = publishedByList[0].ActingAgentUid; output.PublishedBy = new List <Guid>() { publishedByList[0].ActingAgentUid }; } } } } output.CredentialRegistryId = status.EnvelopeId;; output.AlternateNames = helper.MapToTextValueProfile(input.AlternateName, output, "AlternateName"); output.Image = input.Image; output.AgentPurpose = input.AgentPurpose; output.AgentPurposeDescription = helper.HandleLanguageMap(input.AgentPurposeDescription, output, "AgentPurposeDescription"); output.FoundingDate = input.FoundingDate; //output.AvailabilityListing = helper.MapListToString( input.AvailabilityListing ); //future prep output.AvailabilityListings = input.AvailabilityListing; output.MissionAndGoalsStatement = input.MissionAndGoalsStatement; output.MissionAndGoalsStatementDescription = helper.HandleLanguageMap(input.MissionAndGoalsStatementDescription, output, "MissionAndGoalsStatementDescription"); output.Addresses = helper.FormatAvailableAtAddresses(input.Address, ref status); if (output.Addresses != null && output.Addresses.Any()) { output.AddressesJson = JsonConvert.SerializeObject(output.Addresses, MappingHelperV3.GetJsonSettings()); } // if (UtilityManager.GetAppKeyValue("skipOppImportIfNoShortRegions", false)) { if (output.Addresses.Count == 0) { //skip LoggingHelper.DoTrace(2, string.Format(" ***Skipping org# {0}, {1} as it has no addresses and this is a special run.", output.Id, output.Name)); return(true); } else if (output.HasAnyShortRegions == false) { //skip LoggingHelper.DoTrace(2, string.Format(" ***Skipping org# {0}, {1} as it has no addresses with short regions and this is a special run.", output.Id, output.Name)); return(true); } } //agent type, map to enumeration output.AgentType = helper.MapCAOListToEnumermation(input.AgentType); output.TransferValueStatement = input.TransferValueStatement; output.TransferValueStatementDescription = helper.HandleLanguageMap(input.TransferValueStatementDescription, output, "TransferValueStatementDescription"); //Manifests output.ConditionManifestIds = helper.MapEntityReferences(input.HasConditionManifest, CodesManager.ENTITY_TYPE_CONDITION_MANIFEST, CodesManager.ENTITY_TYPE_ORGANIZATION, ref status); output.CostManifestIds = helper.MapEntityReferences(input.HasCostManifest, CodesManager.ENTITY_TYPE_COST_MANIFEST, CodesManager.ENTITY_TYPE_ORGANIZATION, ref status); //hasVerificationService output.VerificationServiceProfiles = helper.MapVerificationServiceProfiles(input.VerificationServiceProfiles, ref status); // output.targetc //other enumerations // serviceType, AgentSectorType output.ServiceType = helper.MapCAOListToEnumermation(input.ServiceType); output.AgentSectorType = helper.MapCAOListToEnumermation(input.AgentSectorType); //Industries //output.Industry = helper.MapCAOListToEnumermation( input.IndustryType ); output.Industries = helper.MapCAOListToCAOProfileList(input.IndustryType); //naics output.Naics = input.Naics; //keywords output.Keyword = helper.MapToTextValueProfile(input.Keyword, output, "Keyword"); //duns, Fein. IpedsID, opeID if (!string.IsNullOrWhiteSpace(input.DUNS)) { output.IdentificationCodes.Add(new workIT.Models.ProfileModels.TextValueProfile { CodeSchema = "ceterms:duns", TextValue = input.DUNS }); } if (!string.IsNullOrWhiteSpace(input.FEIN)) { output.IdentificationCodes.Add(new workIT.Models.ProfileModels.TextValueProfile { CodeSchema = "ceterms:fein", TextValue = input.FEIN }); } if (!string.IsNullOrWhiteSpace(input.IpedsID)) { output.IdentificationCodes.Add(new workIT.Models.ProfileModels.TextValueProfile { CodeSchema = "ceterms:ipedsID", TextValue = input.IpedsID }); } if (!string.IsNullOrWhiteSpace(input.OPEID)) { output.IdentificationCodes.Add(new workIT.Models.ProfileModels.TextValueProfile { CodeSchema = "ceterms:opeID", TextValue = input.OPEID }); } if (!string.IsNullOrWhiteSpace(input.LEICode)) { output.IdentificationCodes.Add(new workIT.Models.ProfileModels.TextValueProfile { CodeSchema = "ceterms:leiCode", TextValue = input.LEICode }); } // if (!string.IsNullOrWhiteSpace(input.NcesID)) { output.IdentificationCodes.Add(new workIT.Models.ProfileModels.TextValueProfile { CodeSchema = "ceterms:ncesID", TextValue = input.NcesID }); } // if (!string.IsNullOrWhiteSpace(input.ISICV4)) { output.IdentificationCodes.Add(new workIT.Models.ProfileModels.TextValueProfile { CodeSchema = "ceterms:isicV4", TextValue = input.ISICV4 }); } //alternativeidentifier - should just be added to IdentificationCodes //output.AlternativeIdentifier = helper.MapIdentifierValueListToString( input.AlternativeIdentifier ); //output.AlternativeIdentifierList = helper.MapIdentifierValueList( input.AlternativeIdentifier ); //20-10-31 - replacing AlternativeIdentifier with Identifier output.Identifier = helper.MapIdentifierValueList(input.Identifier); if (output.Identifier != null && output.Identifier.Count() > 0) { output.IdentifierJson = JsonConvert.SerializeObject(output.Identifier, MappingHelperV3.GetJsonSettings()); } //email output.Emails = helper.MapToTextValueProfile(input.Email); //contact point //output.ContactPoint = helper.FormatContactPoints( input.ContactPoint, ref status ); //Jurisdiction output.Jurisdiction = helper.MapToJurisdiction(input.Jurisdiction, ref status); //SameAs URI output.SameAs = helper.MapToTextValueProfile(input.SameAs); //Social media output.SocialMediaPages = helper.MapToTextValueProfile(input.SocialMedia); //departments //not sure - MP - want to change how depts, and subs are handled output.ParentOrganization = helper.MapOrganizationReferenceGuids("Organization.ParentOrganization", input.ParentOrganization, ref status); output.Departments = helper.MapOrganizationReferenceGuids("Organization.Department", input.Department, ref status); output.SubOrganizations = helper.MapOrganizationReferenceGuids("Organization.SubOrganization", input.SubOrganization, ref status); //output.OrganizationRole_Subsidiary = helper.FormatOrganizationReferences( input.SubOrganization ); //Process profiles output.AdministrationProcess = helper.FormatProcessProfile(input.AdministrationProcess, ref status); output.MaintenanceProcess = helper.FormatProcessProfile(input.MaintenanceProcess, ref status); output.ComplaintProcess = helper.FormatProcessProfile(input.ComplaintProcess, ref status); output.DevelopmentProcess = helper.FormatProcessProfile(input.DevelopmentProcess, ref status); output.RevocationProcess = helper.FormatProcessProfile(input.RevocationProcess, ref status); output.ReviewProcess = helper.FormatProcessProfile(input.ReviewProcess, ref status); output.AppealProcess = helper.FormatProcessProfile(input.AppealProcess, ref status); //BYs output.AccreditedBy = helper.MapOrganizationReferenceGuids("Organization.AccreditedBy", input.AccreditedBy, ref status); output.ApprovedBy = helper.MapOrganizationReferenceGuids("Organization.ApprovedBy", input.ApprovedBy, ref status); output.RecognizedBy = helper.MapOrganizationReferenceGuids("Organization.RecognizedBy", input.RecognizedBy, ref status); output.RegulatedBy = helper.MapOrganizationReferenceGuids("Organization.RegulatedBy", input.RegulatedBy, ref status); //INs output.AccreditedIn = helper.MapToJurisdiction("Organization.AccreditedIn", input.AccreditedIn, ref status); output.ApprovedIn = helper.MapToJurisdiction("Organization.ApprovedIn", input.ApprovedIn, ref status); output.RecognizedIn = helper.MapToJurisdiction("Organization.RecognizedIn", input.RecognizedIn, ref status); output.RegulatedIn = helper.MapToJurisdiction("Organization.RegulatedIn", input.RegulatedIn, ref status); //Asserts //the entity type is not known output.Accredits = helper.MapEntityReferenceGuids("Organization.Accredits", input.Accredits, 0, ref status); output.Approves = helper.MapEntityReferenceGuids("Organization.Approves", input.Approves, 0, ref status); if (output.Approves.Count > 0) { } output.Offers = helper.MapEntityReferenceGuids("Organization.Offers", input.Offers, 0, ref status); output.Owns = helper.MapEntityReferenceGuids("Organization.Owns", input.Owns, 0, ref status); output.Renews = helper.MapEntityReferenceGuids("Organization.Renews", input.Renews, 0, ref status); output.Revokes = helper.MapEntityReferenceGuids("Organization.Revokes", input.Revokes, 0, ref status); output.Recognizes = helper.MapEntityReferenceGuids("Organization.Recognizes", input.Recognizes, 0, ref status); output.Regulates = helper.MapEntityReferenceGuids("Organization.Regulates", input.Regulates, 0, ref status); // TimeSpan duration = DateTime.Now.Subtract(started); if (duration.TotalSeconds > 5) { LoggingHelper.DoTrace(6, string.Format(" WARNING Mapping Duration: {0:N2} seconds ", duration.TotalSeconds)); } DateTime saveStarted = DateTime.Now; //=== if any messages were encountered treat as warnings for now if (messages.Count > 0) { status.SetMessages(messages, true); } //just in case check if entity added since start if (output.Id == 0) { ThisEntity entity = EntityServices.GetSummaryByCtid(ctid); if (entity != null && entity.Id > 0) { output.Id = entity.Id; output.RowId = entity.RowId; } } importSuccessfull = mgr.Import(output, ref status); saveDuration = DateTime.Now.Subtract(saveStarted); if (saveDuration.TotalSeconds > 5) { LoggingHelper.DoTrace(6, string.Format(" WARNING SAVE Duration: {0:N2} seconds ", saveDuration.TotalSeconds)); } // status.DocumentId = output.Id; status.DetailPageUrl = string.Format("~/organization/{0}", output.Id); status.DocumentRowId = output.RowId; //just in case if (status.HasErrors) { importSuccessfull = false; } //if record was added to db, add to/or set EntityResolution as resolved int ierId = new ImportManager().Import_EntityResolutionAdd(referencedAtId, ctid, CodesManager.ENTITY_TYPE_ORGANIZATION, output.RowId, output.Id, false, ref messages, output.Id > 0); } catch (Exception ex) { LoggingHelper.LogError(ex, string.Format("OrganizationImportV3. Exception encountered in CTID: {0}", input.CTID), false, "Organization Import exception"); } finally { var totalDuration = DateTime.Now.Subtract(started); if (totalDuration.TotalSeconds > 9 && (totalDuration.TotalSeconds - saveDuration.TotalSeconds > 3)) { LoggingHelper.DoTrace(5, string.Format(" WARNING Total Duration: {0:N2} seconds ", totalDuration.TotalSeconds)); } } return(importSuccessfull); }
} // public bool Import(string payload, string envelopeIdentifier, SaveStatus status) { LoggingHelper.DoTrace(7, "ImportCompetencyFramesworks - entered."); List <string> messages = new List <string>(); MappingHelperV3 helper = new MappingHelperV3(10); bool importSuccessfull = true; InputEntity input = new InputEntity(); InputCompetency comp = new InputCompetency(); var mainEntity = new Dictionary <string, object>(); List <InputCompetency> competencies = new List <InputCompetency>(); Dictionary <string, object> dictionary = RegistryServices.JsonToDictionary(payload); object graph = dictionary["@graph"]; //serialize the graph object var glist = JsonConvert.SerializeObject(graph); //parse graph in to list of objects JArray graphList = JArray.Parse(glist); var bnodes = new List <BNode>(); int cntr = 0; foreach (var item in graphList) { cntr++; //note older frameworks will not be in the priority order var main = item.ToString(); if (cntr == 1 || main.IndexOf("ceasn:CompetencyFramework") > -1) { //HACK if (main.IndexOf("ceasn:CompetencyFramework") > -1) { input = JsonConvert.DeserializeObject <InputEntity>(main); } } else { //Error converting value "https://credentialengineregistry.org/resources/ce-949fcaba-45ed-44d9-88bf-43677277eb84" to type 'System.Collections.Generic.List`1[System.String]'. Path 'ceasn:isPartOf', line 11, position 108. //not set up to handle issues //comp = JsonConvert.DeserializeObject<InputCompetency>( item.ToString() ); //competencies.Add( comp ); //should just have competencies, but should check for bnodes var child = item.ToString(); if (child.IndexOf("_:") > -1) { bnodes.Add(JsonConvert.DeserializeObject <BNode>(child)); //ceasn:Competency } else if (child.IndexOf("ceasn:Competency") > -1) { competencies.Add(JsonConvert.DeserializeObject <InputCompetency>(child)); } else { //unexpected } } } //try //{ //input = JsonConvert.DeserializeObject<InputGraph>( item.DecodedResource.ToString() ); string ctid = input.CTID; status.Ctid = ctid; string referencedAtId = input.CtdlId; LoggingHelper.DoTrace(5, " ctid: "+ ctid); LoggingHelper.DoTrace(5, " @Id: "+ input.CtdlId); LoggingHelper.DoTrace(5, " name: "+ input.name.ToString()); string framework = input.name.ToString(); var org = new MC.Organization(); string orgCTID = ""; string orgName = ""; List <string> publisher = input.publisher; //20-06-11 - need to get creator, publisher, owner where possible // include an org reference with name, swp, and?? //should check creator first? Or will publisher be more likely to have an account Ctid? if (publisher != null && publisher.Count() > 0) { orgCTID = ResolutionServices.ExtractCtid(publisher[0]); //look up org name org = OrganizationManager.GetSummaryByCtid(orgCTID); } else { //try creator List <string> creator = input.creator; if (creator != null && creator.Count() > 0) { orgCTID = ResolutionServices.ExtractCtid(creator[0]); //look up org name org = OrganizationManager.GetSummaryByCtid(orgCTID); } } if (status.DoingDownloadOnly) { return(true); } //add/updating CompetencyFramework //21-02-22 HUH - WHY ARE WE USING ef here instead of output Framework ef = new Framework(); if (!DoesEntityExist(input.CTID, ref ef)) { //set the rowid now, so that can be referenced as needed //output.RowId = Guid.NewGuid(); ef.RowId = Guid.NewGuid(); LoggingHelper.DoTrace(1, string.Format(thisClassName + ".Import(). Record was NOT found using CTID: '{0}'", input.CTID)); } else { LoggingHelper.DoTrace(1, string.Format(thisClassName + ".Import(). Found record: '{0}' using CTID: '{1}'", input.name, input.CTID)); } helper.currentBaseObject = ef; ef.ExistsInRegistry = true; //store graph ef.CompetencyFrameworkGraph = glist; ef.TotalCompetencies = competencies.Count(); ef.Name = helper.HandleLanguageMap(input.name, ef, "Name"); ef.Description = helper.HandleLanguageMap(input.description, ef, "description"); ef.CTID = input.CTID; ef.OrganizationCTID = orgCTID; if (org != null && org.Id > 0) { orgName = org.Name; ef.OrganizationId = org.Id; helper.CurrentOwningAgentUid = org.RowId; } helper.MapInLanguageToTextValueProfile(input.inLanguage, "CompetencyFramework.InLanguage.CTID: " + ctid); //foreach ( var l in input.InLanguage ) //{ // if ( !string.IsNullOrWhiteSpace( l ) ) // { // var language = CodesManager.GetLanguage( l ); // output.InLanguageCodeList.Add( new TextValueProfile() // { // CodeId = language.CodeId, // TextTitle = language.Name, // TextValue = language.Value // } ); // } //} //TBD handling of referencing third party publisher if (!string.IsNullOrWhiteSpace(status.DocumentPublishedBy)) { //output.PublishedByOrganizationCTID = status.DocumentPublishedBy; var porg = OrganizationManager.GetSummaryByCtid(status.DocumentPublishedBy); if (porg != null && porg.Id > 0) { //TODO - store this in a json blob?????????? //this will result in being added to Entity.AgentRelationship ef.PublishedBy = new List <Guid>() { porg.RowId }; } else { //if publisher not imported yet, all publishee stuff will be orphaned var entityUid = Guid.NewGuid(); var statusMsg = ""; var resPos = referencedAtId.IndexOf("/resources/"); var swp = referencedAtId.Substring(0, (resPos + "/resources/".Length)) + status.DocumentPublishedBy; int orgId = new OrganizationManager().AddPendingRecord(entityUid, status.DocumentPublishedBy, swp, ref statusMsg); } } else { //may need a check for existing published by to ensure not lost if (ef.Id > 0) { //if ( ef.OrganizationRole != null && ef.OrganizationRole.Any() ) //{ // var publishedByList = ef.OrganizationRole.Where( s => s.RoleTypeId == 30 ).ToList(); // if ( publishedByList != null && publishedByList.Any() ) // { // var pby = publishedByList[ 0 ].ActingAgentUid; // ef.PublishedBy = new List<Guid>() { publishedByList[ 0 ].ActingAgentUid }; // } //} } } ef.CredentialRegistryId = envelopeIdentifier; //additions //ef.ind //can only handle one source int pcnt = 0; if (input.source != null) { foreach (var url in input.source) { pcnt++; ef.SourceUrl = url; break; } } ef.FrameworkUri = input.CtdlId; ef.hasTopChild = input.hasTopChild; // ApiEntity apiFramework = new ApiEntity() { Name = ef.Name, CTID = ef.CTID, Source = ef.SourceUrl, HasTopChild = ef.hasTopChild, Meta_LastUpdated = status.LocalUpdatedDate }; //?store competencies in string? if (competencies != null && competencies.Count > 0) { ef.TotalCompetencies = competencies.Count(); //TODO - should we limit this if 1000+ //do we use competencies in elastic? if not pause this usage cntr = 0; foreach (var c in competencies) { cntr++; var comments = helper.HandleLanguageMapList(c.comment, ef); ef.Competencies.Add( new workIT.Models.Elastic.IndexCompetency() { Name = c.competencyText.ToString(), //CTID = c.CTID, //Description = comments != null && comments.Count() > 0 ? comments[0].ToString() : "" } ); if (cntr >= 1000) { break; } } } //20-07-02 just storing the index ready competencies //ef.CompentenciesJson = JsonConvert.SerializeObject( competencies, MappingHelperV3.GetJsonSettings() ); ef.CompentenciesStore = JsonConvert.SerializeObject(ef.Competencies, MappingHelperV3.GetJsonSettings()); //test //ElasticManager.LoadCompetencies( ef.Name, ef.CompentenciesStore ); FormatCompetenciesHierarchy(apiFramework, competencies, helper); //TODO store whole framework or just the competencies? apiFramework.HasTopChild = null; ef.APIFramework = JsonConvert.SerializeObject(apiFramework, MappingHelperV3.GetJsonSettings()); // if (ef.TotalCompetencies == input.hasTopChild.Count()) { //flat list - use for simple display } else { foreach (var item in input.hasTopChild) { } } //adding using common import pattern new CompetencyFrameworkServices().Import(ef, ref status); status.DocumentId = ef.Id; status.DetailPageUrl = string.Format("~/competencyframework/{0}", ef.Id); status.DocumentRowId = ef.RowId; // //just in case if (status.HasErrors) { importSuccessfull = false; } //if record was added to db, add to/or set EntityResolution as resolved int ierId = new ImportManager().Import_EntityResolutionAdd(referencedAtId, ctid, CodesManager.ENTITY_TYPE_COMPETENCY_FRAMEWORK, output.RowId, output.Id, (output.Id > 0), ref messages, output.Id > 0); // //framework checks if (input.inLanguage == null || input.inLanguage.Count() == 0) { //document for followup //LoggingHelper.DoTrace( 5, " Framework missing inLanguage: " + input.name.ToString() ); } //output.Name = helper.HandleLanguageMap( input.name, output, "Name" ); //output.description = helper.HandleLanguageMap( input.description, output, "Description" ); //output.CTID = input.CTID; return(importSuccessfull); }
} // public bool Import(string payload, string envelopeIdentifier, SaveStatus status) { LoggingHelper.DoTrace(7, "ImportConceptSchemes - entered."); List <string> messages = new List <string>(); MappingHelperV3 helper = new MappingHelperV3(10); bool importSuccessfull = true; var input = new InputEntity(); var concept = new InputConcept(); var mainEntity = new Dictionary <string, object>(); List <InputConcept> concepts = new List <InputConcept>(); Dictionary <string, object> dictionary = RegistryServices.JsonToDictionary(payload); object graph = dictionary["@graph"]; //serialize the graph object var glist = JsonConvert.SerializeObject(graph); //parse graph in to list of objects JArray graphList = JArray.Parse(glist); var bnodes = new List <BNode>(); int cntr = 0; foreach (var item in graphList) { cntr++; //note older frameworks will not be in the priority order var main = item.ToString(); if (cntr == 1 || main.IndexOf("skos:ConceptScheme") > -1) { //HACK if (main.IndexOf("skos:ConceptScheme") > -1) { input = JsonConvert.DeserializeObject <InputEntity>(main); } } else { //should just have concepts, but should check for bnodes var child = item.ToString(); if (child.IndexOf("_:") > -1) { bnodes.Add(JsonConvert.DeserializeObject <BNode>(child)); } else if (child.IndexOf("skos:Concept") > -1) { concepts.Add(JsonConvert.DeserializeObject <InputConcept>(child)); } else { //unexpected } } } //try //{ //input = JsonConvert.DeserializeObject<InputGraph>( item.DecodedResource.ToString() ); string ctid = input.CTID; status.Ctid = ctid; string referencedAtId = input.CtdlId; LoggingHelper.DoTrace(5, " ctid: "+ ctid); LoggingHelper.DoTrace(5, " @Id: "+ input.CtdlId); LoggingHelper.DoTrace(5, " name: "+ input.Name.ToString()); string framework = input.Name.ToString(); var org = new MC.Organization(); string orgCTID = ""; string orgName = ""; if (status.DoingDownloadOnly) { return(true); } //add/updating ConceptScheme //var output = new ConceptScheme(); if (!DoesEntityExist(input.CTID, ref output)) { //set the rowid now, so that can be referenced as needed output.RowId = Guid.NewGuid(); //output.RowId = Guid.NewGuid(); } helper.currentBaseObject = output; // output.Name = helper.HandleLanguageMap(input.Name, output, "Name"); output.Description = helper.HandleLanguageMap(input.Description, output, "description"); output.CTID = input.CTID; output.PrimaryOrganizationCTID = orgCTID; // var publisher = input.Publisher; output.PublisherUid = helper.MapOrganizationReferenceGuid("ConceptScheme.Publisher", input.Publisher, ref status); output.Creator = helper.MapOrganizationReferenceGuids("ConceptScheme.Creator", input.Creator, ref status); //20-06-11 - need to get creator, publisher, owner where possible // include an org reference with name, swp, and?? //should check creator first? Or will publisher be more likely to have an account Ctid? if (output.Creator != null && output.Creator.Count() > 0) { //get org or pending stub //look up org name org = OrganizationManager.Exists(output.Creator[0]); output.OwnedBy.Add(output.Creator[0]); } else { if (output.PublisherUid != Guid.Empty) { //get org or pending stub //look up org name org = OrganizationManager.Exists(output.PublisherUid); output.OwnedBy.Add(output.PublisherUid); } } // if (org != null && org.Id > 0) { orgName = org.Name; output.OrganizationId = org.Id; helper.CurrentOwningAgentUid = org.RowId; } output.CredentialRegistryId = envelopeIdentifier; output.HasConcepts = new List <MC.Concept>(); //?store concepts in string? if (concepts != null && concepts.Count > 0) { output.TotalConcepts = concepts.Count(); foreach (var item in concepts) { var c = new MC.Concept() { PrefLabel = helper.HandleLanguageMap(item.PrefLabel, output, "PrefLabel"), Definition = helper.HandleLanguageMap(item.Definition, output, "Definition"), Notes = helper.HandleLanguageMapList(item.Note, output), CTID = item.CTID }; if (c.Notes != null && c.Notes.Any()) { c.Note = c.Notes[0]; } output.HasConcepts.Add(c); } } //20-07-02 just storing the index ready concepts output.ConceptsStore = JsonConvert.SerializeObject(output.HasConcepts, MappingHelperV3.GetJsonSettings()); //adding common import pattern new ConceptSchemeServices().Import(output, ref status); // return(importSuccessfull); }
public bool ImportV3(string payload, string envelopeIdentifier, SaveStatus status) { InputEntityV3 input = new InputEntityV3(); var bnodes = new List <BNodeV3>(); var mainEntity = new Dictionary <string, object>(); Dictionary <string, object> dictionary = RegistryServices.JsonToDictionary(payload); object graph = dictionary["@graph"]; //serialize the graph object var glist = JsonConvert.SerializeObject(graph); //parse graph in to list of objects JArray graphList = JArray.Parse(glist); int cntr = 0; foreach (var item in graphList) { cntr++; if (cntr == 1) { var main = item.ToString(); //may not use this. Could add a trace method mainEntity = RegistryServices.JsonToDictionary(main); input = JsonConvert.DeserializeObject <InputEntityV3>(main); } else //is this too much of an assumption? { var bn = item.ToString(); bnodes.Add(JsonConvert.DeserializeObject <BNodeV3>(bn)); } } List <string> messages = new List <string>(); bool importSuccessfull = false; EntityServices mgr = new EntityServices(); MappingHelperV3 helper = new MappingHelperV3 { entityBlankNodes = bnodes }; string ctid = input.Ctid; string referencedAtId = input.CtdlId; LoggingHelper.DoTrace(5, " name: "+ input.Name.ToString()); LoggingHelper.DoTrace(6, " url: "+ input.SubjectWebpage); LoggingHelper.DoTrace(5, " ctid: "+ input.Ctid); LoggingHelper.DoTrace(5, " @Id: "+ input.CtdlId); status.Ctid = ctid; if (status.DoingDownloadOnly) { return(true); } if (!DoesEntityExist(input.Ctid, ref output)) { //set the rowid now, so that can be referenced as needed output.RowId = Guid.NewGuid(); } helper.currentBaseObject = output; output.AgentDomainType = input.Type; output.Name = helper.HandleLanguageMap(input.Name, output, "Name"); output.Description = helper.HandleLanguageMap(input.Description, output, "Description"); //map from idProperty to url output.SubjectWebpage = input.SubjectWebpage; output.CTID = input.Ctid; output.CredentialRegistryId = envelopeIdentifier; output.AlternateNames = helper.MapToTextValueProfile(input.AlternateName, output, "AlternateName"); output.ImageUrl = input.Image; output.AgentPurpose = input.AgentPurpose; output.AgentPurposeDescription = helper.HandleLanguageMap(input.AgentPurposeDescription, output, "AgentPurposeDescription"); output.FoundingDate = input.FoundingDate; output.AvailabilityListing = helper.MapListToString(input.AvailabilityListing); //future prep output.AvailabilityListings = input.AvailabilityListing; output.MissionAndGoalsStatement = input.MissionAndGoalsStatement; //output.MissionAndGoalsStatementDescription = input.MissionAndGoalsStatementDescription; output.MissionAndGoalsStatementDescription = helper.HandleLanguageMap(input.MissionAndGoalsStatementDescription, output, "MissionAndGoalsStatementDescription"); output.Addresses = helper.FormatAvailableAtAddresses(input.Address, ref status); if (UtilityManager.GetAppKeyValue("skipOppImportIfNoShortRegions", false)) { if (output.Addresses.Count == 0) { //skip LoggingHelper.DoTrace(2, string.Format(" ***Skipping org# {0}, {1} as it has no addresses and this is a special run.", output.Id, output.Name)); return(true); } else if (output.HasAnyShortRegions == false) { //skip LoggingHelper.DoTrace(2, string.Format(" ***Skipping org# {0}, {1} as it has no addresses with short regions and this is a special run.", output.Id, output.Name)); return(true); } } //agent type, map to enumeration output.AgentType = helper.MapCAOListToEnumermation(input.AgentType); //Manifests output.ConditionManifestIds = helper.MapEntityReferences(input.HasConditionManifest, CodesManager.ENTITY_TYPE_CONDITION_MANIFEST, CodesManager.ENTITY_TYPE_ORGANIZATION, ref status); output.CostManifestIds = helper.MapEntityReferences(input.HasCostManifest, CodesManager.ENTITY_TYPE_COST_MANIFEST, CodesManager.ENTITY_TYPE_ORGANIZATION, ref status); //hasVerificationService output.VerificationServiceProfiles = helper.MapVerificationServiceProfiles(input.VerificationServiceProfiles, ref status); // output.targetc //other enumerations // serviceType, AgentSectorType output.ServiceType = helper.MapCAOListToEnumermation(input.ServiceType); output.AgentSectorType = helper.MapCAOListToEnumermation(input.AgentSectorType); //Industries //output.Industry = helper.MapCAOListToEnumermation( input.IndustryType ); output.Industries = helper.MapCAOListToCAOProfileList(input.IndustryType); //naics output.Naics = input.Naics; //keywords output.Keyword = helper.MapToTextValueProfile(input.Keyword, output, "Keyword"); //duns, Fein. IpedsID, opeID if (!string.IsNullOrWhiteSpace(input.DUNS)) { output.IdentificationCodes.Add(new workIT.Models.ProfileModels.TextValueProfile { CodeSchema = "ceterms:duns", TextValue = input.DUNS }); } if (!string.IsNullOrWhiteSpace(input.FEIN)) { output.IdentificationCodes.Add(new workIT.Models.ProfileModels.TextValueProfile { CodeSchema = "ceterms:fein", TextValue = input.FEIN }); } if (!string.IsNullOrWhiteSpace(input.IpedsID)) { output.IdentificationCodes.Add(new workIT.Models.ProfileModels.TextValueProfile { CodeSchema = "ceterms:ipedsID", TextValue = input.IpedsID }); } if (!string.IsNullOrWhiteSpace(input.OPEID)) { output.IdentificationCodes.Add(new workIT.Models.ProfileModels.TextValueProfile { CodeSchema = "ceterms:opeID", TextValue = input.OPEID }); } if (!string.IsNullOrWhiteSpace(input.LEICode)) { output.IdentificationCodes.Add(new workIT.Models.ProfileModels.TextValueProfile { CodeSchema = "ceterms:leiCode", TextValue = input.LEICode }); } // if (!string.IsNullOrWhiteSpace(input.NcesID)) { output.IdentificationCodes.Add(new workIT.Models.ProfileModels.TextValueProfile { CodeSchema = "ceterms:ncesID", TextValue = input.NcesID }); } // if (!string.IsNullOrWhiteSpace(input.ISICV4)) { output.IdentificationCodes.Add(new workIT.Models.ProfileModels.TextValueProfile { CodeSchema = "ceterms:isicV4", TextValue = input.ISICV4 }); } //alternativeidentifier - should just be added to IdentificationCodes output.AlternativeIdentifier = helper.MapIdentifierValueListToString(input.AlternativeIdentifier); output.AlternativeIdentifierList = helper.MapIdentifierValueList(input.AlternativeIdentifier); //email output.Emails = helper.MapToTextValueProfile(input.Email); //contact point //output.ContactPoint = helper.FormatContactPoints( input.ContactPoint, ref status ); //Jurisdiction output.Jurisdiction = helper.MapToJurisdiction(input.Jurisdiction, ref status); //SameAs output.SameAs = helper.MapToTextValueProfile(input.SameAs); //Social media output.SocialMediaPages = helper.MapToTextValueProfile(input.SocialMedia); //departments //not sure - MP - want to change how depts, and subs are handled output.ParentOrganization = helper.MapOrganizationReferenceGuids(input.ParentOrganization, ref status); output.Departments = helper.MapOrganizationReferenceGuids(input.Department, ref status); output.SubOrganizations = helper.MapOrganizationReferenceGuids(input.SubOrganization, ref status); //output.OrganizationRole_Subsidiary = helper.FormatOrganizationReferences( input.SubOrganization ); //Process profiles output.AdministrationProcess = helper.FormatProcessProfile(input.AdministrationProcess, ref status); output.MaintenanceProcess = helper.FormatProcessProfile(input.MaintenanceProcess, ref status); output.ComplaintProcess = helper.FormatProcessProfile(input.ComplaintProcess, ref status); output.DevelopmentProcess = helper.FormatProcessProfile(input.DevelopmentProcess, ref status); output.RevocationProcess = helper.FormatProcessProfile(input.RevocationProcess, ref status); output.ReviewProcess = helper.FormatProcessProfile(input.ReviewProcess, ref status); output.AppealProcess = helper.FormatProcessProfile(input.AppealProcess, ref status); //BYs output.AccreditedBy = helper.MapOrganizationReferenceGuids("Organization.AccreditedBy", input.AccreditedBy, ref status); output.ApprovedBy = helper.MapOrganizationReferenceGuids("Organization.ApprovedBy", input.ApprovedBy, ref status); output.RecognizedBy = helper.MapOrganizationReferenceGuids("Organization.RecognizedBy", input.RecognizedBy, ref status); output.RegulatedBy = helper.MapOrganizationReferenceGuids("Organization.RegulatedBy", input.RegulatedBy, ref status); //INs output.AccreditedIn = helper.MapToJurisdiction(input.AccreditedIn, ref status); output.ApprovedIn = helper.MapToJurisdiction(input.ApprovedIn, ref status); output.RecognizedIn = helper.MapToJurisdiction(input.RecognizedIn, ref status); output.RegulatedIn = helper.MapToJurisdiction(input.RegulatedIn, ref status); //Asserts //the entity type is not known output.Accredits = helper.MapEntityReferenceGuids(input.Accredits, 0, ref status); output.Approves = helper.MapEntityReferenceGuids(input.Approves, 0, ref status); if (output.Approves.Count > 0) { } output.Offers = helper.MapEntityReferenceGuids(input.Offers, 0, ref status); output.Owns = helper.MapEntityReferenceGuids(input.Owns, 0, ref status); output.Renews = helper.MapEntityReferenceGuids(input.Renews, 0, ref status); output.Revokes = helper.MapEntityReferenceGuids(input.Revokes, 0, ref status); output.Recognizes = helper.MapEntityReferenceGuids(input.Recognizes, 0, ref status); output.Regulates = helper.MapEntityReferenceGuids(input.Regulates, 0, ref status); //Ins - defer to later //=== if any messages were encountered treat as warnings for now if (messages.Count > 0) { status.SetMessages(messages, true); } //just in case check if entity added since start if (output.Id == 0) { ThisEntity entity = EntityServices.GetByCtid(ctid); if (entity != null && entity.Id > 0) { output.Id = entity.Id; output.RowId = entity.RowId; } } importSuccessfull = mgr.Import(output, ref status); status.DocumentId = output.Id; status.DetailPageUrl = string.Format("~/organization/{0}", output.Id); status.DocumentRowId = output.RowId; //just in case if (status.HasErrors) { importSuccessfull = false; } //if record was added to db, add to/or set EntityResolution as resolved int ierId = new ImportManager().Import_EntityResolutionAdd(referencedAtId, ctid, CodesManager.ENTITY_TYPE_ORGANIZATION, output.RowId, output.Id, false, ref messages, output.Id > 0); return(importSuccessfull); }
public bool Import(InputEntity input, string envelopeIdentifier, SaveStatus status) { List <string> messages = new List <string>(); bool importSuccessfull = false; EntityServices mgr = new EntityServices(); string ctid = input.Ctid; string referencedAtId = input.CtdlId; LoggingHelper.DoTrace(5, " name: "+ input.Name); LoggingHelper.DoTrace(6, " url: "+ input.SubjectWebpage); LoggingHelper.DoTrace(5, " ctid: "+ input.Ctid); LoggingHelper.DoTrace(5, " @Id: "+ input.CtdlId); status.Ctid = ctid; if (status.DoingDownloadOnly) { return(true); } if (!DoesEntityExist(input.Ctid, ref output)) { //set the rowid now, so that can be referenced as needed output.RowId = Guid.NewGuid(); } //re:messages - currently passed to mapping but no errors are trapped?? // - should use SaveStatus and skip import if errors encountered (vs warnings) output.AgentDomainType = input.Type; output.Name = input.Name; output.Description = input.Description; //map from idProperty to url output.SubjectWebpage = input.SubjectWebpage; output.CTID = input.Ctid; output.CredentialRegistryId = envelopeIdentifier; //output.AlternateNames = input.AlternateName; output.AlternateNames = MappingHelper.MapToTextValueProfile(input.AlternateName); output.ImageUrl = input.Image; output.AgentPurpose = input.AgentPurpose; output.AgentPurposeDescription = input.AgentPurposeDescription; output.FoundingDate = input.FoundingDate; if ((output.FoundingDate ?? "").Length > 20) { status.AddError("Organization Founding Date error - exceeds 20 characters: " + output.FoundingDate); output.FoundingDate = output.FoundingDate.Substring(0, 10); } output.AvailabilityListing = MappingHelper.MapListToString(input.AvailabilityListing); //future prep output.AvailabilityListings = input.AvailabilityListing; output.MissionAndGoalsStatement = input.MissionAndGoalsStatement; output.MissionAndGoalsStatementDescription = input.MissionAndGoalsStatementDescription; output.Addresses = MappingHelper.FormatAddresses(input.Address, ref status); //agent type, map to enumeration output.AgentType = MappingHelper.MapCAOListToEnumermation(input.AgentType); //Manifests output.ConditionManifestIds = MappingHelper.MapEntityReferences(input.HasConditionManifest, CodesManager.ENTITY_TYPE_CONDITION_MANIFEST, CodesManager.ENTITY_TYPE_ORGANIZATION, ref status); output.CostManifestIds = MappingHelper.MapEntityReferences(input.HasCostManifest, CodesManager.ENTITY_TYPE_COST_MANIFEST, CodesManager.ENTITY_TYPE_ORGANIZATION, ref status); //hasVerificationService output.VerificationServiceProfiles = MappingHelper.MapVerificationServiceProfiles(input.VerificationServiceProfiles, ref status); // output.targetc //other enumerations // serviceType, AgentSectorType output.ServiceType = MappingHelper.MapCAOListToEnumermation(input.ServiceType); output.AgentSectorType = MappingHelper.MapCAOListToEnumermation(input.AgentSectorType); //Industries output.Industry = MappingHelper.MapCAOListToEnumermation(input.IndustryType); output.Industries = MappingHelper.MapCAOListToFramework(input.IndustryType); //naics output.Naics = input.Naics; //keywords output.Keyword = MappingHelper.MapToTextValueProfile(input.Keyword); //duns, Fein. IpedsID, opeID if (!string.IsNullOrWhiteSpace(input.DUNS)) { output.IdentificationCodes.Add(new workIT.Models.ProfileModels.TextValueProfile { CodeSchema = "ceterms:duns", TextValue = input.DUNS }); } if (!string.IsNullOrWhiteSpace(input.FEIN)) { output.IdentificationCodes.Add(new workIT.Models.ProfileModels.TextValueProfile { CodeSchema = "ceterms:fein", TextValue = input.FEIN }); } if (!string.IsNullOrWhiteSpace(input.IpedsID)) { output.IdentificationCodes.Add(new workIT.Models.ProfileModels.TextValueProfile { CodeSchema = "ceterms:ipedsID", TextValue = input.IpedsID }); } if (!string.IsNullOrWhiteSpace(input.OPEID)) { output.IdentificationCodes.Add(new workIT.Models.ProfileModels.TextValueProfile { CodeSchema = "ceterms:opeID", TextValue = input.OPEID }); } if (!string.IsNullOrWhiteSpace(input.LEICode)) { output.IdentificationCodes.Add(new workIT.Models.ProfileModels.TextValueProfile { CodeSchema = "ceterms:leiCode", TextValue = input.LEICode }); } //alternativeidentifier - should just be added to IdentificationCodes output.AlternativeIdentifier = MappingHelper.MapIdentifierValueListToString(input.AlternativeIdentifier); output.AlternativeIdentifierList = MappingHelper.MapIdentifierValueList(input.AlternativeIdentifier); //email output.Emails = MappingHelper.MapToTextValueProfile(input.Email); //contact point - now in address //output.ContactPoint = MappingHelper.FormatContactPoints( input.ContactPoint, ref status ); //Jurisdiction output.Jurisdiction = MappingHelper.MapToJurisdiction(input.Jurisdiction, ref status); //SameAs output.SameAs = MappingHelper.MapToTextValueProfile(input.SameAs); //Social media output.SocialMediaPages = MappingHelper.MapToTextValueProfile(input.SocialMedia); //departments //not sure - MP - want to change how depts, and subs are handled //output.ParentOrganization = MappingHelper.MapOrganizationReferenceGuids( input.ParentOrganization, ref status ); output.Departments = MappingHelper.MapOrganizationReferenceGuids(input.Department, ref status); output.SubOrganizations = MappingHelper.MapOrganizationReferenceGuids(input.SubOrganization, ref status); //output.OrganizationRole_Subsidiary = MappingHelper.FormatOrganizationReferences( input.SubOrganization ); //Process profiles output.AdministrationProcess = MappingHelper.FormatProcessProfile(input.AdministrationProcess, ref status); output.MaintenanceProcess = MappingHelper.FormatProcessProfile(input.MaintenanceProcess, ref status); output.ComplaintProcess = MappingHelper.FormatProcessProfile(input.ComplaintProcess, ref status); output.DevelopmentProcess = MappingHelper.FormatProcessProfile(input.DevelopmentProcess, ref status); output.RevocationProcess = MappingHelper.FormatProcessProfile(input.RevocationProcess, ref status); output.ReviewProcess = MappingHelper.FormatProcessProfile(input.ReviewProcess, ref status); output.AppealProcess = MappingHelper.FormatProcessProfile(input.AppealProcess, ref status); //BYs output.AccreditedBy = MappingHelper.MapOrganizationReferenceGuids(input.AccreditedBy, ref status); output.ApprovedBy = MappingHelper.MapOrganizationReferenceGuids(input.ApprovedBy, ref status); output.RecognizedBy = MappingHelper.MapOrganizationReferenceGuids(input.RecognizedBy, ref status); output.RegulatedBy = MappingHelper.MapOrganizationReferenceGuids(input.RegulatedBy, ref status); //INs output.AccreditedIn = MappingHelper.MapToJurisdiction(input.AccreditedIn, ref status); output.ApprovedIn = MappingHelper.MapToJurisdiction(input.ApprovedIn, ref status); output.RecognizedIn = MappingHelper.MapToJurisdiction(input.RecognizedIn, ref status); output.RegulatedIn = MappingHelper.MapToJurisdiction(input.RegulatedIn, ref status); //Asserts //the entity type is not known output.Accredits = MappingHelper.MapEntityReferenceGuids(input.Accredits, 0, ref status); output.Approves = MappingHelper.MapEntityReferenceGuids(input.Approves, 0, ref status); output.Offers = MappingHelper.MapEntityReferenceGuids(input.Offers, 0, ref status); output.Owns = MappingHelper.MapEntityReferenceGuids(input.Owns, 0, ref status); output.Renews = MappingHelper.MapEntityReferenceGuids(input.Renews, 0, ref status); output.Revokes = MappingHelper.MapEntityReferenceGuids(input.Revokes, 0, ref status); output.Recognizes = MappingHelper.MapEntityReferenceGuids(input.Recognizes, 0, ref status); output.Regulates = MappingHelper.MapEntityReferenceGuids(input.Regulates, 0, ref status); //Ins - defer to later //=== if any messages were encountered treat as warnings for now if (messages.Count > 0) { status.SetMessages(messages, true); } //just in case check if entity added since start if (output.Id == 0) { ThisEntity entity = EntityServices.GetByCtid(ctid); if (entity != null && entity.Id > 0) { output.Id = entity.Id; output.RowId = entity.RowId; } } importSuccessfull = mgr.Import(output, ref status); status.DocumentId = output.Id; status.DetailPageUrl = string.Format("~/organization/{0}", output.Id); status.DocumentRowId = output.RowId; //just in case if (status.HasErrors) { importSuccessfull = false; } //if record was added to db, add to/or set EntityResolution as resolved int ierId = new ImportManager().Import_EntityResolutionAdd(referencedAtId, ctid, CodesManager.ENTITY_TYPE_ORGANIZATION, output.RowId, output.Id, (output.Id > 0), ref messages, output.Id > 0); return(importSuccessfull); }