public void Import(ExcelWorksheet sheet, List <EntityMetadata> emds, IOrganizationService service) { var rmds = new List <OneToManyRelationshipMetadata>(); foreach (var row in sheet.Rows.Where(r => r.Index != 0).OrderBy(r => r.Index)) { var rmd = rmds.FirstOrDefault(r => r.MetadataId == new Guid(row.Cells[1].Value.ToString())); if (rmd == null) { var currentEntity = emds.FirstOrDefault(e => e.LogicalName == row.Cells[0].Value.ToString()); if (currentEntity == null) { var request = new RetrieveEntityRequest { LogicalName = row.Cells[0].Value.ToString(), EntityFilters = EntityFilters.Relationships }; var response = ((RetrieveEntityResponse)service.Execute(request)); currentEntity = response.EntityMetadata; emds.Add(currentEntity); } rmd = currentEntity.OneToManyRelationships.FirstOrDefault( r => r.SchemaName == row.Cells[2].Value.ToString()); if (rmd == null) { rmd = currentEntity.ManyToOneRelationships.FirstOrDefault( r => r.SchemaName == row.Cells[2].Value.ToString()); } rmds.Add(rmd); } int columnIndex = 4; rmd.AssociatedMenuConfiguration.Label = new Label(); while (row.Cells[columnIndex].Value != null) { rmd.AssociatedMenuConfiguration.Label.LocalizedLabels.Add( new LocalizedLabel(row.Cells[columnIndex].Value.ToString(), int.Parse(sheet.Cells[0, columnIndex].Value.ToString()))); columnIndex++; } } foreach (var rmd in rmds) { var request = new UpdateRelationshipRequest { Relationship = rmd, }; service.Execute(request); } }
public void Import(ExcelWorksheet sheet, List<EntityMetadata> emds, IOrganizationService service) { var rmds = new List<OneToManyRelationshipMetadata>(); foreach (var row in sheet.Rows.Where(r => r.Index != 0).OrderBy(r => r.Index)) { var rmd = rmds.FirstOrDefault(r => r.MetadataId == new Guid(row.Cells[1].Value.ToString())); if (rmd == null) { var currentEntity = emds.FirstOrDefault(e => e.LogicalName == row.Cells[0].Value.ToString()); if (currentEntity == null) { var request = new RetrieveEntityRequest { LogicalName = row.Cells[0].Value.ToString(), EntityFilters = EntityFilters.Relationships }; var response = ((RetrieveEntityResponse) service.Execute(request)); currentEntity = response.EntityMetadata; emds.Add(currentEntity); } rmd = currentEntity.OneToManyRelationships.FirstOrDefault( r => r.SchemaName == row.Cells[2].Value.ToString()); if (rmd == null) { rmd = currentEntity.ManyToOneRelationships.FirstOrDefault( r => r.SchemaName == row.Cells[2].Value.ToString()); } rmds.Add(rmd); } int columnIndex = 4; rmd.AssociatedMenuConfiguration.Label = new Label(); while (row.Cells[columnIndex].Value != null) { rmd.AssociatedMenuConfiguration.Label.LocalizedLabels.Add( new LocalizedLabel(row.Cells[columnIndex].Value.ToString(), int.Parse(sheet.Cells[0, columnIndex].Value.ToString()))); columnIndex++; } } foreach (var rmd in rmds) { var request = new UpdateRelationshipRequest { Relationship = rmd, }; service.Execute(request); } }
private void UpdateRelationshipMetadata(RelationshipMetadataBase relationshipMetadataBase) { var request = new UpdateRelationshipRequest() { Relationship = relationshipMetadataBase, MergeLabels = false, }; var response = (UpdateRelationshipResponse)_service.Execute(request); }
public override void UpdateAttribute(IOrganizationService service) { var relationshipRequest = new UpdateRelationshipRequest { Relationship = GetRelationshipMetadata() }; service.Execute(relationshipRequest); var lookupRequest = new UpdateAttributeRequest { EntityName = Entity, Attribute = GetAttributeMetadata() }; service.Execute(lookupRequest); }
public void Import(ExcelWorksheet sheet, List <EntityMetadata> emds, IOrganizationService service, BackgroundWorker worker) { var rmds = new List <OneToManyRelationshipMetadata>(); var rowsCount = sheet.Dimension.Rows; var cellsCount = sheet.Dimension.Columns; for (var rowI = 1; rowI < rowsCount; rowI++) { var rmd = rmds.FirstOrDefault(r => ZeroBasedSheet.Cell(sheet, rowI, 1).Value != null && r.MetadataId == new Guid(ZeroBasedSheet.Cell(sheet, rowI, 1).Value.ToString())); if (rmd == null) { var currentEntity = emds.FirstOrDefault(e => e.LogicalName == ZeroBasedSheet.Cell(sheet, rowI, 0).Value?.ToString()); if (currentEntity == null) { var request = new RetrieveEntityRequest { LogicalName = ZeroBasedSheet.Cell(sheet, rowI, 0).Value.ToString(), EntityFilters = EntityFilters.Entity | EntityFilters.Attributes | EntityFilters.Relationships }; var response = (RetrieveEntityResponse)service.Execute(request); currentEntity = response.EntityMetadata; emds.Add(currentEntity); } rmd = currentEntity.OneToManyRelationships.FirstOrDefault( r => r.SchemaName == ZeroBasedSheet.Cell(sheet, rowI, 2).Value?.ToString()); if (rmd == null) { rmd = currentEntity.ManyToOneRelationships.FirstOrDefault( r => r.SchemaName == ZeroBasedSheet.Cell(sheet, rowI, 2).Value?.ToString()); } rmds.Add(rmd); } int columnIndex = 4; rmd.AssociatedMenuConfiguration.Label = new Label(); while (columnIndex < cellsCount) { if (ZeroBasedSheet.Cell(sheet, rowI, columnIndex).Value != null) { var lcid = int.Parse(ZeroBasedSheet.Cell(sheet, 0, columnIndex).Value.ToString()); var label = ZeroBasedSheet.Cell(sheet, rowI, columnIndex).Value.ToString(); rmd.AssociatedMenuConfiguration.Label.LocalizedLabels.Add(new LocalizedLabel(label, lcid)); } columnIndex++; } } int i = 0; foreach (var rmd in rmds) { var request = new UpdateRelationshipRequest { Relationship = rmd, }; try { service.Execute(request); OnResult(new TranslationResultEventArgs { Success = true, SheetName = sheet.Name }); } catch (Exception error) { OnResult(new TranslationResultEventArgs { Success = false, SheetName = sheet.Name, Message = $"{request.Relationship.SchemaName}: {error.Message}" }); } i++; worker.ReportProgressIfPossible(0, new ProgressInfo { Item = i * 100 / rmds.Count }); } }
public void Import(ExcelWorksheet sheet, List<EntityMetadata> emds, IOrganizationService service) { var rmds = new List<ManyToManyRelationshipMetadata>(); var rowsCount = sheet.Dimension.Rows; var cellsCount = sheet.Dimension.Columns; for (var rowI = 1; rowI < rowsCount; rowI++) { var rmd = rmds.FirstOrDefault(r => r.MetadataId == new Guid(ZeroBasedSheet.Cell(sheet, rowI, 1).Value.ToString())); if (rmd == null) { var currentEntity = emds.FirstOrDefault(e => e.LogicalName == ZeroBasedSheet.Cell(sheet, rowI, 0).Value.ToString()); if (currentEntity == null) { var request = new RetrieveEntityRequest { LogicalName = ZeroBasedSheet.Cell(sheet, rowI, 0).Value.ToString(), EntityFilters = EntityFilters.Relationships }; var response = ((RetrieveEntityResponse)service.Execute(request)); currentEntity = response.EntityMetadata; emds.Add(currentEntity); } rmd = currentEntity.ManyToManyRelationships.FirstOrDefault(r => r.IntersectEntityName == ZeroBasedSheet.Cell(sheet, rowI, 2).Value.ToString()); rmds.Add(rmd); } int columnIndex = 5; if (ZeroBasedSheet.Cell(sheet, rowI, 4).Value.ToString() == "Entity1") { rmd.Entity1AssociatedMenuConfiguration.Label = new Label(); while (columnIndex < cellsCount) { if (ZeroBasedSheet.Cell(sheet, rowI, columnIndex).Value != null) { var lcid = int.Parse(ZeroBasedSheet.Cell(sheet, 0, columnIndex).Value.ToString()); var label = ZeroBasedSheet.Cell(sheet, rowI, columnIndex).Value.ToString(); rmd.Entity1AssociatedMenuConfiguration.Label.LocalizedLabels.Add(new LocalizedLabel(label, lcid)); } columnIndex++; } } else if (ZeroBasedSheet.Cell(sheet, rowI, columnIndex).ToString() == "Entity2") { rmd.Entity2AssociatedMenuConfiguration.Label = new Label(); while (columnIndex < cellsCount) { if (ZeroBasedSheet.Cell(sheet, rowI, columnIndex).Value != null) { var lcid = int.Parse(ZeroBasedSheet.Cell(sheet, 0, columnIndex).Value.ToString()); var label = ZeroBasedSheet.Cell(sheet, rowI, columnIndex).Value.ToString(); rmd.Entity2AssociatedMenuConfiguration.Label.LocalizedLabels.Add(new LocalizedLabel(label, lcid)); } columnIndex++; } } } foreach (var rmd in rmds) { var request = new UpdateRelationshipRequest { Relationship = rmd, }; service.Execute(request); } }
public void CreateOrUpdateRelationship(string schemaName, string entityType1, string entityType2, bool entityType1DisplayRelated, bool entityType2DisplayRelated) { var metadata = new ManyToManyRelationshipMetadata(); lock (LockObject) { var exists = RelationshipExists(schemaName); if (exists) metadata = GetRelationshipMetadata(schemaName); metadata.SchemaName = schemaName; metadata.IntersectEntityName = schemaName; metadata.Entity1LogicalName = entityType1; metadata.Entity2LogicalName = entityType2; metadata.Entity1AssociatedMenuConfiguration = new AssociatedMenuConfiguration() { Behavior = entityType1DisplayRelated ? AssociatedMenuBehavior.UseCollectionName : AssociatedMenuBehavior.DoNotDisplay }; metadata.Entity2AssociatedMenuConfiguration = new AssociatedMenuConfiguration() { Behavior = entityType2DisplayRelated ? AssociatedMenuBehavior.UseCollectionName : AssociatedMenuBehavior.DoNotDisplay }; if (exists) { var request = new UpdateRelationshipRequest { Relationship = metadata }; Execute(request); } else { var request = new CreateManyToManyRequest { IntersectEntitySchemaName = schemaName, ManyToManyRelationship = metadata }; Execute(request); } RefreshRelationshipMetadata(schemaName); } }
public void CreateOrUpdateLookupAttribute(string schemaName, string displayName, string description, bool isRequired, bool audit, bool searchable, string recordType, string referencedEntityType, bool displayInRelated) { lock (LockObject) { LookupAttributeMetadata metadata; if (FieldExists(schemaName, recordType)) metadata = (LookupAttributeMetadata) GetFieldMetadata(schemaName, recordType); else metadata = new LookupAttributeMetadata(); SetCommon(metadata, schemaName, displayName, description, isRequired, audit, searchable); if (FieldExists(schemaName, recordType)) { CreateOrUpdateAttribute(schemaName, recordType, metadata); var relationships = GetEntityOneToManyRelationships(referencedEntityType); var relationship = relationships.First(r => r.ReferencingAttribute.ToLower() == schemaName); var newBehvaiour = displayInRelated ? AssociatedMenuBehavior.UseCollectionName : AssociatedMenuBehavior.DoNotDisplay; if (newBehvaiour != relationship.AssociatedMenuConfiguration.Behavior) { relationship.AssociatedMenuConfiguration.Behavior = displayInRelated ? AssociatedMenuBehavior.UseCollectionName : AssociatedMenuBehavior.DoNotDisplay; var request = new UpdateRelationshipRequest() { Relationship = relationship }; Execute(request); RefreshEntityMetadata(recordType); RefreshEntityMetadata(referencedEntityType); } } else { var request = new CreateOneToManyRequest { OneToManyRelationship = new OneToManyRelationshipMetadata { SchemaName = string.Format("{0}_{1}_{2}", recordType, referencedEntityType, schemaName), AssociatedMenuConfiguration = new AssociatedMenuConfiguration { Behavior = displayInRelated ? AssociatedMenuBehavior.UseCollectionName : AssociatedMenuBehavior.DoNotDisplay }, ReferencingEntity = recordType, ReferencedEntity = referencedEntityType }, Lookup = metadata }; Execute(request); RefreshFieldMetadata(schemaName, recordType); CreateOrUpdateAttribute(schemaName, recordType, metadata); RefreshEntityMetadata(recordType); RefreshEntityMetadata(referencedEntityType); } } }
public void Import(ExcelWorksheet sheet, List <EntityMetadata> emds, IOrganizationService service, BackgroundWorker worker) { OnLog(new LogEventArgs($"Reading {sheet.Name}")); var rmds = new List <ManyToManyRelationshipMetadata>(); var rowsCount = sheet.Dimension.Rows; var cellsCount = sheet.Dimension.Columns; for (var rowI = 1; rowI < rowsCount; rowI++) { var rmd = rmds.FirstOrDefault(r => r.MetadataId == new Guid(ZeroBasedSheet.Cell(sheet, rowI, 1).Value.ToString())); if (rmd == null) { var currentEntity = emds.FirstOrDefault(e => e.LogicalName == ZeroBasedSheet.Cell(sheet, rowI, 0).Value.ToString()); if (currentEntity == null) { var request = new RetrieveEntityRequest { LogicalName = ZeroBasedSheet.Cell(sheet, rowI, 0).Value.ToString(), EntityFilters = EntityFilters.Entity | EntityFilters.Attributes | EntityFilters.Relationships }; var response = ((RetrieveEntityResponse)service.Execute(request)); currentEntity = response.EntityMetadata; emds.Add(currentEntity); } rmd = currentEntity.ManyToManyRelationships.FirstOrDefault(r => r.IntersectEntityName == ZeroBasedSheet.Cell(sheet, rowI, 2).Value.ToString()); rmds.Add(rmd); } if (rmd == null) { OnLog(new LogEventArgs { Type = LogType.Warning, Message = $"Unable to find relationship '{ZeroBasedSheet.Cell(sheet, rowI, 2).Value}' for entity '{ZeroBasedSheet.Cell(sheet, rowI, 0).Value}" }); continue; } int columnIndex = 3; if (rmd.Entity1LogicalName == ZeroBasedSheet.Cell(sheet, rowI, 0).Value.ToString()) { rmd.Entity1AssociatedMenuConfiguration.Label = new Label(); while (columnIndex < cellsCount) { if (ZeroBasedSheet.Cell(sheet, rowI, columnIndex).Value != null) { var lcid = int.Parse(ZeroBasedSheet.Cell(sheet, 0, columnIndex).Value.ToString()); var label = ZeroBasedSheet.Cell(sheet, rowI, columnIndex).Value.ToString(); rmd.Entity1AssociatedMenuConfiguration.Label.LocalizedLabels.Add(new LocalizedLabel(label, lcid)); } columnIndex++; } } else if (rmd.Entity2LogicalName == ZeroBasedSheet.Cell(sheet, rowI, 0).Value.ToString()) { rmd.Entity2AssociatedMenuConfiguration.Label = new Label(); while (columnIndex < cellsCount) { if (ZeroBasedSheet.Cell(sheet, rowI, columnIndex).Value != null) { var lcid = int.Parse(ZeroBasedSheet.Cell(sheet, 0, columnIndex).Value.ToString()); var label = ZeroBasedSheet.Cell(sheet, rowI, columnIndex).Value.ToString(); rmd.Entity2AssociatedMenuConfiguration.Label.LocalizedLabels.Add(new LocalizedLabel(label, lcid)); } columnIndex++; } } else { OnLog(new LogEventArgs { Type = LogType.Warning, Message = $"Unable to find entity '{ZeroBasedSheet.Cell(sheet, rowI, 0).Value}' in relationship '{ZeroBasedSheet.Cell(sheet, rowI, 2).Value}" }); } } OnLog(new LogEventArgs($"Importing {sheet.Name} translations")); var arg = new TranslationProgressEventArgs { SheetName = sheet.Name }; foreach (var rmd in rmds) { var request = new UpdateRelationshipRequest { Relationship = rmd, MergeLabels = true }; AddRequest(request); ExecuteMultiple(service, arg, rmds.Count); } ExecuteMultiple(service, arg, rmds.Count, true); }
public void Import(ExcelWorksheet sheet, List <EntityMetadata> emds, IOrganizationService service, BackgroundWorker worker) { var rmds = new List <OneToManyRelationshipMetadata>(); var rowsCount = sheet.Dimension.Rows; var cellsCount = sheet.Dimension.Columns; for (var rowI = 1; rowI < rowsCount; rowI++) { var rmd = rmds.FirstOrDefault(r => ZeroBasedSheet.Cell(sheet, rowI, 1).Value != null && r.MetadataId == new Guid(ZeroBasedSheet.Cell(sheet, rowI, 1).Value.ToString())); if (rmd == null) { var currentEntity = emds.FirstOrDefault(e => e.LogicalName == ZeroBasedSheet.Cell(sheet, rowI, 0).Value?.ToString()); if (currentEntity == null) { var request = new RetrieveEntityRequest { LogicalName = ZeroBasedSheet.Cell(sheet, rowI, 0).Value.ToString(), EntityFilters = EntityFilters.Entity | EntityFilters.Attributes | EntityFilters.Relationships }; var response = (RetrieveEntityResponse)service.Execute(request); currentEntity = response.EntityMetadata; emds.Add(currentEntity); } rmd = currentEntity.OneToManyRelationships.FirstOrDefault( r => r.SchemaName == ZeroBasedSheet.Cell(sheet, rowI, 2).Value?.ToString()); if (rmd == null) { rmd = currentEntity.ManyToOneRelationships.FirstOrDefault( r => r.SchemaName == ZeroBasedSheet.Cell(sheet, rowI, 2).Value?.ToString()); } rmds.Add(rmd); } int columnIndex = 4; if (rmd.AssociatedMenuConfiguration.Label == null) { rmd.AssociatedMenuConfiguration.Label = new Label(); } while (columnIndex < cellsCount) { if (ZeroBasedSheet.Cell(sheet, rowI, columnIndex).Value != null) { var lcid = int.Parse(ZeroBasedSheet.Cell(sheet, 0, columnIndex).Value.ToString()); var label = ZeroBasedSheet.Cell(sheet, rowI, columnIndex).Value.ToString(); var ll = rmd.AssociatedMenuConfiguration.Label.LocalizedLabels.FirstOrDefault(l => l.LanguageCode == lcid); if (ll != null) { ll.Label = label; } else { rmd.AssociatedMenuConfiguration.Label.LocalizedLabels.Add(new LocalizedLabel(label, lcid)); } } columnIndex++; } } var arg = new TranslationProgressEventArgs { SheetName = sheet.Name }; foreach (var rmd in rmds) { var request = new UpdateRelationshipRequest { Relationship = rmd, MergeLabels = true }; AddRequest(request); //ExecuteMultiple(service, arg); } ExecuteMultiple(service, arg, true); }
public void Import(ExcelWorksheet sheet, List<EntityMetadata> emds, IOrganizationService service) { var rmds = new List<ManyToManyRelationshipMetadata>(); var rowsCount = sheet.Dimension.Rows; for (var rowI = 1; rowI < rowsCount; rowI++) { var rmd = rmds.FirstOrDefault(r => r.MetadataId == new Guid(ZeroBasedSheet.Cell(sheet, rowI, 1).Value.ToString())); if (rmd == null) { var currentEntity = emds.FirstOrDefault(e => e.LogicalName == ZeroBasedSheet.Cell(sheet, rowI, 0).Value.ToString()); if (currentEntity == null) { var request = new RetrieveEntityRequest { LogicalName = ZeroBasedSheet.Cell(sheet, rowI, 0).Value.ToString(), EntityFilters = EntityFilters.Relationships }; var response = ((RetrieveEntityResponse)service.Execute(request)); currentEntity = response.EntityMetadata; emds.Add(currentEntity); } rmd = currentEntity.ManyToManyRelationships.FirstOrDefault(r => r.IntersectEntityName == ZeroBasedSheet.Cell(sheet, rowI, 2).Value.ToString()); rmds.Add(rmd); } int columnIndex = 5; if (ZeroBasedSheet.Cell(sheet, rowI, 4).Value.ToString() == "Entity1") { rmd.Entity1AssociatedMenuConfiguration.Label = new Label(); while (ZeroBasedSheet.Cell(sheet, rowI, columnIndex).Value != null) { rmd.Entity1AssociatedMenuConfiguration.Label.LocalizedLabels.Add(new LocalizedLabel(ZeroBasedSheet.Cell(sheet, rowI, columnIndex).Value.ToString(), int.Parse(sheet.Cells[0, columnIndex].Value.ToString()))); columnIndex++; } } else if (ZeroBasedSheet.Cell(sheet, rowI, columnIndex).ToString() == "Entity2") { rmd.Entity2AssociatedMenuConfiguration.Label = new Label(); while (ZeroBasedSheet.Cell(sheet, rowI, columnIndex).Value != null) { rmd.Entity2AssociatedMenuConfiguration.Label.LocalizedLabels.Add(new LocalizedLabel(ZeroBasedSheet.Cell(sheet, rowI, columnIndex).Value.ToString(), int.Parse(sheet.Cells[0, columnIndex].Value.ToString()))); columnIndex++; } } } foreach (var rmd in rmds) { var request = new UpdateRelationshipRequest { Relationship = rmd, }; service.Execute(request); } }