} // public static void MapFromDB(DBEntity input, ThisEntity output, bool gettingAll = true) { output.Id = input.Id; output.RowId = input.RowId; output.EntityStateId = input.EntityStateId; output.Name = input.Name; output.Description = input.Description; output.CTID = input.CTID; if (input.Created != null) { output.Created = ( DateTime )input.Created; } if (input.LastUpdated != null) { output.LastUpdated = ( DateTime )input.LastUpdated; } if (IsGuidValid(input.OwningAgentUid)) { output.OwningAgentUid = ( Guid )input.OwningAgentUid; output.OwningOrganization = OrganizationManager.GetForSummary(output.OwningAgentUid); //get roles OrganizationRoleProfile orp = Entity_AgentRelationshipManager.AgentEntityRole_GetAsEnumerationFromCSV(output.RowId, output.OwningAgentUid); output.OwnerRoles = orp.AgentRole; } // output.OrganizationRole = Entity_AgentRelationshipManager.AgentEntityRole_GetAll_ToEnumeration(output.RowId, true); // //get related .... var relatedEntity = EntityManager.GetEntity(output.RowId, false); if (relatedEntity != null && relatedEntity.Id > 0) { output.EntityLastUpdated = relatedEntity.LastUpdated; } // output.SubjectWebpage = input.SubjectWebpage; output.CredentialRegistryId = input.CredentialRegistryId ?? ""; output.LifecycleStatusType = string.IsNullOrWhiteSpace(input.LifecycleStatusType) ? "lifecycle:Active" : input.LifecycleStatusType; //output.CodedNotation = input.CodedNotation; //20-12-16 changed to a string as partial dates are possible if (!string.IsNullOrWhiteSpace(input.StartDate)) { output.StartDate = input.StartDate; } else { output.StartDate = ""; } // if (!string.IsNullOrWhiteSpace(input.EndDate)) { output.EndDate = input.EndDate; } else { output.EndDate = ""; } //derived from .... //get json and expand output.IdentifierJson = input.IdentifierJson; output.TransferValueJson = input.TransferValueJson; output.TransferValueFromJson = input.TransferValueFromJson; output.TransferValueForJson = input.TransferValueForJson; // if (!string.IsNullOrWhiteSpace(output.IdentifierJson)) { output.Identifier = JsonConvert.DeserializeObject <List <Entity_IdentifierValue> >(output.IdentifierJson); } if (!string.IsNullOrWhiteSpace(output.TransferValueJson)) { output.TransferValue = JsonConvert.DeserializeObject <List <ValueProfile> >(output.TransferValueJson); } if (!gettingAll) { return; } //the top level object may not be enough. First need to confirm if reference lopps and asmts can have detail pages. if (!string.IsNullOrWhiteSpace(output.TransferValueFromJson)) { output.TransferValueFrom = JsonConvert.DeserializeObject <List <TopLevelObject> >(output.TransferValueFromJson); var lopps = output.TransferValueFrom.Where(s => s.EntityTypeId == 7).ToList(); foreach (var item in lopps) { output.TransferValueFromLopp.Add(LearningOpportunityManager.GetForDetail(item.Id)); } var assmts = output.TransferValueFrom.Where(s => s.EntityTypeId == 3).ToList(); foreach (var item in assmts) { output.TransferValueFromAsmt.Add(AssessmentManager.GetForDetail(item.Id)); } var creds = output.TransferValueFrom.Where(s => s.EntityTypeId == 1).ToList(); foreach (var item in creds) { output.TransferValueFromCredential.Add(CredentialManager.GetForDetail(item.Id)); } } // if (!string.IsNullOrWhiteSpace(output.TransferValueForJson)) { output.TransferValueFor = JsonConvert.DeserializeObject <List <TopLevelObject> >(output.TransferValueForJson); var lopps = output.TransferValueFor.Where(s => s.EntityTypeId == 7).ToList(); foreach (var item in lopps) { output.TransferValueForLopp.Add(LearningOpportunityManager.GetForDetail(item.Id)); } var assmts = output.TransferValueFor.Where(s => s.EntityTypeId == 3).ToList(); foreach (var item in assmts) { output.TransferValueForAsmt.Add(AssessmentManager.GetForDetail(item.Id)); } var creds = output.TransferValueFor.Where(s => s.EntityTypeId == 1).ToList(); foreach (var item in creds) { output.TransferValueForCredential.Add(CredentialManager.GetForDetail(item.Id)); } } //this should be a summary level, not the full TVP output.DerivedFrom = Entity_TransferValueProfileManager.GetAll(output.RowId); // List <ProcessProfile> processes = Entity_ProcessProfileManager.GetAll(output.RowId); foreach (ProcessProfile item in processes) { if (item.ProcessTypeId == Entity_ProcessProfileManager.DEV_PROCESS_TYPE) { output.DevelopmentProcess.Add(item); } else { //unexpected } } }
public bool UpdateParts(ThisEntity entity, ref SaveStatus status) { bool isAllValid = true; Entity_AgentRelationshipManager mgr = new Entity_AgentRelationshipManager(); Entity relatedEntity = EntityManager.GetEntity(entity.RowId); if (relatedEntity == null || relatedEntity.Id == 0) { status.AddError("Error - the related Entity was not found."); return(false); } mgr.DeleteAll(relatedEntity, ref status); mgr.SaveList(relatedEntity.Id, Entity_AgentRelationshipManager.ROLE_TYPE_OWNER, entity.OwnedBy, ref status); //consider storing the class properties as Json! //derived from //where to store this? It commonly require Entity.TransferValueProfile var etvlMgr = new Entity_TransferValueProfileManager(); etvlMgr.SaveList(entity.DerivedFromForImport, entity.RowId, ref status); //delete all Entity.Lopp, .Cred, and .Assessment relationships, and then add? //would be convenient if a delete wasn't necessary //NOTE: this will leave orphan reference objects. Will need to clean up. //could check if target is a reference. If so delete, or check if there are other references //NOTE: this should have been done in TransferValueServices.HandlingExistingEntity - is done corrently, remove this Entity_CredentialManager ecm = new Entity_CredentialManager(); ecm.DeleteAll(relatedEntity, ref status); // var eam = new Entity_AssessmentManager(); eam.DeleteAll(relatedEntity, ref status); // var elom = new Entity_LearningOpportunityManager(); elom.DeleteAll(relatedEntity, ref status); // var etvp = new Entity_TransferValueProfileManager(); etvp.DeleteAll(relatedEntity, ref status); // foreach (var item in entity.TransferValueFromImport) { int newId = 0; var from = EntityManager.GetEntity(item, false); if (from == null || from.Id == 0) { status.AddError(string.Format("{0}.UpdateParts - TransferValueFromImport. TVP: {1}. An entity was not found for GUID: {2}", thisClassName, entity.Id, item)); continue; } if (from.EntityTypeId == 1) { ecm.Add(entity.RowId, from.EntityBaseId, BaseFactory.RELATIONSHIP_TYPE_IS_PART_OF, ref newId, ref status); } else if (from.EntityTypeId == 3) { eam.Add(entity.RowId, from.EntityBaseId, BaseFactory.RELATIONSHIP_TYPE_IS_PART_OF, false, ref status); } else if (from.EntityTypeId == 7) { elom.Add(entity.RowId, from.EntityBaseId, BaseFactory.RELATIONSHIP_TYPE_IS_PART_OF, false, ref status); } } foreach (var item in entity.TransferValueForImport) { int newId = 0; var from = EntityManager.GetEntity(item, false); if (from == null || from.Id == 0) { //?? status.AddError(string.Format("{0}.UpdateParts - TransferValueForImport. TVP: {1}. An entity was not found for GUID: {2}", thisClassName, entity.Id, item)); continue; } if (from.EntityTypeId == 1) { ecm.Add(entity.RowId, from.EntityBaseId, BaseFactory.RELATIONSHIP_TYPE_HAS_PART, ref newId, ref status); } else if (from.EntityTypeId == 3) { eam.Add(entity.RowId, from.EntityBaseId, BaseFactory.RELATIONSHIP_TYPE_HAS_PART, false, ref status); } else if (from.EntityTypeId == 7) { elom.Add(entity.RowId, from.EntityBaseId, BaseFactory.RELATIONSHIP_TYPE_HAS_PART, false, ref status); } } foreach (var item in entity.DerivedFromForImport) { var from = Get(item); if (from == null || from.Id == 0) { //?? status.AddError(string.Format("{0}.UpdateParts - DerivedFromForImport. TVP: {1}. A TVP was not found for ID: {2}", thisClassName, entity.Id, item)); continue; } //check that not the same as current TVP if (from.Id == entity.Id) { status.AddError(string.Format("{0}.UpdateParts - DerivedFromForImport. TVP: {1}. The DerivedFrom TVP Id ({2}) is the same as the current TVP ID", thisClassName, entity.Id, item)); continue; } etvp.Add(entity.RowId, item, ref status); } //ProcessProfile Entity_ProcessProfileManager ppm = new Factories.Entity_ProcessProfileManager(); ppm.DeleteAll(relatedEntity, ref status); try { ppm.SaveList(entity.DevelopmentProcess, Entity_ProcessProfileManager.DEV_PROCESS_TYPE, entity.RowId, ref status); } catch (Exception ex) { string message = FormatExceptions(ex); LoggingHelper.LogError(ex, thisClassName + string.Format(".AddProfiles() - ProcessProfiles. id: {0}", entity.Id)); status.AddWarning(thisClassName + ".AddProfiles(). Exceptions encountered handling ProcessProfiles. " + message); } return(isAllValid); }