public void Import(ExcelWorksheet sheet, List <EntityMetadata> emds, IOrganizationService service) { var amds = new List <MasterAttribute>(); foreach (var row in sheet.Rows.Where(r => r.Index != 0).OrderBy(r => r.Index)) { var amd = amds.FirstOrDefault(a => a.Amd.MetadataId == new Guid(row.Cells[0].Value.ToString())); if (amd == null) { var currentEntity = emds.FirstOrDefault(e => e.LogicalName == row.Cells[1].Value.ToString()); if (currentEntity == null) { var request = new RetrieveEntityRequest { LogicalName = row.Cells[1].Value.ToString(), EntityFilters = EntityFilters.Entity | EntityFilters.Attributes }; var response = ((RetrieveEntityResponse)service.Execute(request)); currentEntity = response.EntityMetadata; emds.Add(currentEntity); } amd = new MasterAttribute(); amd.Amd = currentEntity.Attributes.FirstOrDefault(a => a.LogicalName == row.Cells[2].Value.ToString()); amds.Add(amd); } int columnIndex = 4; if (row.Cells[3].Value.ToString() == "DisplayName") { amd.Amd.DisplayName = new Label(); while (row.Cells[columnIndex].Value != null) { amd.Amd.DisplayName.LocalizedLabels.Add(new LocalizedLabel(row.Cells[columnIndex].Value.ToString(), int.Parse(sheet.Cells[0, columnIndex].Value.ToString()))); columnIndex++; } } else if (row.Cells[3].Value.ToString() == "Description") { amd.Amd.Description = new Label(); while (row.Cells[columnIndex].Value != null) { amd.Amd.Description.LocalizedLabels.Add(new LocalizedLabel(row.Cells[columnIndex].Value.ToString(), int.Parse(sheet.Cells[0, columnIndex].Value.ToString()))); columnIndex++; } } } var sbError = new StringBuilder(); foreach (var amd in amds) { if (amd.Amd.DisplayName.LocalizedLabels.All(l => string.IsNullOrEmpty(l.Label)) || amd.Amd.IsRenameable.Value == false) { continue; } try { var request = new UpdateAttributeRequest { Attribute = amd.Amd, EntityName = amd.Amd.EntityLogicalName }; service.Execute(request); } catch { sbError.AppendLine(string.Format("- {0} ({1})", amd.Amd.LogicalName, amd.Amd.EntityLogicalName)); } } if (sbError.Length > 0) { MessageBox.Show("Following attributes were not updated due to errors:\r\n" + sbError, "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning); } }
public void Import(ExcelWorksheet sheet, List <EntityMetadata> emds, IOrganizationService service) { var amds = new List <MasterAttribute>(); var rowsCount = sheet.Dimension.Rows; for (var rowI = 1; rowI < rowsCount; rowI++) { var amd = amds.FirstOrDefault(a => a.Amd.MetadataId == new Guid(ZeroBasedSheet.Cell(sheet, rowI, 0).Value.ToString())); if (amd == null) { var currentEntity = emds.FirstOrDefault(e => e.LogicalName == ZeroBasedSheet.Cell(sheet, rowI, 1).Value.ToString()); if (currentEntity == null) { var request = new RetrieveEntityRequest { LogicalName = ZeroBasedSheet.Cell(sheet, rowI, 1).Value.ToString(), EntityFilters = EntityFilters.Entity | EntityFilters.Attributes }; var response = ((RetrieveEntityResponse)service.Execute(request)); currentEntity = response.EntityMetadata; emds.Add(currentEntity); } amd = new MasterAttribute(); amd.Amd = currentEntity.Attributes.FirstOrDefault(a => a.LogicalName == ZeroBasedSheet.Cell(sheet, rowI, 2).Value.ToString()); amds.Add(amd); } int columnIndex = 4; if (ZeroBasedSheet.Cell(sheet, rowI, 3).Value.ToString() == "DisplayName") { amd.Amd.DisplayName = new Label(); while (ZeroBasedSheet.Cell(sheet, rowI, columnIndex).Value != null) { amd.Amd.DisplayName.LocalizedLabels.Add(new LocalizedLabel(ZeroBasedSheet.Cell(sheet, rowI, columnIndex).Value.ToString(), int.Parse(ZeroBasedSheet.Cell(sheet, 0, columnIndex).Value.ToString()))); columnIndex++; } } else if (ZeroBasedSheet.Cell(sheet, rowI, 3).Value.ToString() == "Description") { amd.Amd.Description = new Label(); while (ZeroBasedSheet.Cell(sheet, rowI, columnIndex).Value != null) { amd.Amd.Description.LocalizedLabels.Add(new LocalizedLabel(ZeroBasedSheet.Cell(sheet, rowI, columnIndex).Value.ToString(), int.Parse(ZeroBasedSheet.Cell(sheet, 0, columnIndex).Value.ToString()))); columnIndex++; } } } foreach (var amd in amds) { if (amd.Amd.DisplayName.LocalizedLabels.All(l => string.IsNullOrEmpty(l.Label)) || amd.Amd.IsRenameable.Value == false) { continue; } var request = new UpdateAttributeRequest { Attribute = amd.Amd, EntityName = amd.Amd.EntityLogicalName }; service.Execute(request); } }
public void Import(ExcelWorksheet sheet, List <EntityMetadata> emds, IOrganizationService service, BackgroundWorker worker) { var amds = new List <MasterAttribute>(); var rowsCount = sheet.Dimension.Rows; var cellsCount = sheet.Dimension.Columns; for (var rowI = 1; rowI < rowsCount; rowI++) { var amd = amds.FirstOrDefault(a => a.Amd.MetadataId == new Guid(ZeroBasedSheet.Cell(sheet, rowI, 0).Value.ToString())); if (amd == null) { var currentEntity = emds.FirstOrDefault(e => e.LogicalName == ZeroBasedSheet.Cell(sheet, rowI, 1).Value.ToString()); if (currentEntity == null) { var request = new RetrieveEntityRequest { LogicalName = ZeroBasedSheet.Cell(sheet, rowI, 1).Value.ToString(), EntityFilters = EntityFilters.Entity | EntityFilters.Attributes | EntityFilters.Relationships }; var response = ((RetrieveEntityResponse)service.Execute(request)); currentEntity = response.EntityMetadata; emds.Add(currentEntity); } amd = new MasterAttribute(); amd.Amd = currentEntity.Attributes.FirstOrDefault(a => string.Equals(a.LogicalName, ZeroBasedSheet.Cell(sheet, rowI, 2).Value.ToString(), StringComparison.OrdinalIgnoreCase)); //still null? someone deleted the attribute while we were busy translating. Let's skip it! if (amd.Amd == null) { OnLog(new LogEventArgs { Type = LogType.Warning, Message = $"Attribute {ZeroBasedSheet.Cell(sheet, rowI, 1).Value} - {ZeroBasedSheet.Cell(sheet, rowI, 2).Value} is missing in CRM!" }); continue; } amds.Add(amd); } int columnIndex = 4; if (ZeroBasedSheet.Cell(sheet, rowI, 3).Value.ToString() == "DisplayName") { amd.Amd.DisplayName = 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(); amd.Amd.DisplayName.LocalizedLabels.Add(new LocalizedLabel(label, lcid)); } columnIndex++; } } else if (ZeroBasedSheet.Cell(sheet, rowI, 3).Value.ToString() == "Description") { amd.Amd.Description = 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(); amd.Amd.Description.LocalizedLabels.Add(new LocalizedLabel(label, lcid)); } columnIndex++; } } } int i = 0; var arg = new TranslationProgressEventArgs(); foreach (var amd in amds) { if (amd.Amd.DisplayName.LocalizedLabels.All(l => string.IsNullOrEmpty(l.Label)) || amd.Amd.IsRenameable.Value == false) { continue; } AddRequest(new UpdateAttributeRequest { Attribute = amd.Amd, EntityName = amd.Amd.EntityLogicalName, MergeLabels = true }); ExecuteMultiple(service, arg); } ExecuteMultiple(service, arg, true); }
public void Import(ExcelWorksheet sheet, List<EntityMetadata> emds, IOrganizationService service) { var amds = new List<MasterAttribute>(); var rowsCount = sheet.Dimension.Rows; var cellsCount = sheet.Dimension.Columns; for (var rowI = 1; rowI < rowsCount; rowI++) { var amd = amds.FirstOrDefault(a => a.Amd.MetadataId == new Guid(ZeroBasedSheet.Cell(sheet, rowI, 0).Value.ToString())); if (amd == null) { var currentEntity = emds.FirstOrDefault(e => e.LogicalName == ZeroBasedSheet.Cell(sheet, rowI, 1).Value.ToString()); if (currentEntity == null) { var request = new RetrieveEntityRequest { LogicalName = ZeroBasedSheet.Cell(sheet, rowI, 1).Value.ToString(), EntityFilters = EntityFilters.Entity | EntityFilters.Attributes }; var response = ((RetrieveEntityResponse)service.Execute(request)); currentEntity = response.EntityMetadata; emds.Add(currentEntity); } amd = new MasterAttribute(); amd.Amd = currentEntity.Attributes.FirstOrDefault(a => a.LogicalName == ZeroBasedSheet.Cell(sheet, rowI, 2).Value.ToString()); amds.Add(amd); } int columnIndex = 4; if (ZeroBasedSheet.Cell(sheet, rowI, 3).Value.ToString() == "DisplayName") { amd.Amd.DisplayName = 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(); amd.Amd.DisplayName.LocalizedLabels.Add(new LocalizedLabel(label, lcid)); } columnIndex++; } } else if (ZeroBasedSheet.Cell(sheet, rowI, 3).Value.ToString() == "Description") { amd.Amd.Description = 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(); amd.Amd.Description.LocalizedLabels.Add(new LocalizedLabel(label, lcid)); } columnIndex++; } } } foreach (var amd in amds) { if (amd.Amd.DisplayName.LocalizedLabels.All(l => string.IsNullOrEmpty(l.Label)) || amd.Amd.IsRenameable.Value == false) continue; var request = new UpdateAttributeRequest { Attribute = amd.Amd, EntityName = amd.Amd.EntityLogicalName }; service.Execute(request); } }
public void Import(ExcelWorksheet sheet, List <EntityMetadata> emds, IOrganizationService service) { var amds = new List <MasterAttribute>(); foreach (var row in sheet.Rows.Where(r => r.Index != 0).OrderBy(r => r.Index)) { var amd = amds.FirstOrDefault(a => a.Amd.MetadataId == new Guid(row.Cells[0].Value.ToString())); if (amd == null) { var currentEntity = emds.FirstOrDefault(e => e.LogicalName == row.Cells[1].Value.ToString()); if (currentEntity == null) { var request = new RetrieveEntityRequest { LogicalName = row.Cells[1].Value.ToString(), EntityFilters = EntityFilters.Entity | EntityFilters.Attributes }; var response = ((RetrieveEntityResponse)service.Execute(request)); currentEntity = response.EntityMetadata; emds.Add(currentEntity); } amd = new MasterAttribute(); amd.Amd = currentEntity.Attributes.FirstOrDefault(a => a.LogicalName == row.Cells[2].Value.ToString()); amds.Add(amd); } int columnIndex = 4; if (row.Cells[3].Value.ToString() == "DisplayName") { amd.Amd.DisplayName = new Label(); while (row.Cells[columnIndex].Value != null) { amd.Amd.DisplayName.LocalizedLabels.Add(new LocalizedLabel(row.Cells[columnIndex].Value.ToString(), int.Parse(sheet.Cells[0, columnIndex].Value.ToString()))); columnIndex++; } } else if (row.Cells[3].Value.ToString() == "Description") { amd.Amd.Description = new Label(); while (row.Cells[columnIndex].Value != null) { amd.Amd.Description.LocalizedLabels.Add(new LocalizedLabel(row.Cells[columnIndex].Value.ToString(), int.Parse(sheet.Cells[0, columnIndex].Value.ToString()))); columnIndex++; } } } foreach (var amd in amds) { if (amd.Amd.DisplayName.LocalizedLabels.All(l => string.IsNullOrEmpty(l.Label)) || amd.Amd.IsRenameable.Value == false) { continue; } var request = new UpdateAttributeRequest { Attribute = amd.Amd, EntityName = amd.Amd.EntityLogicalName }; service.Execute(request); } }
public void Import(ExcelWorksheet sheet, List<EntityMetadata> emds, IOrganizationService service) { var amds = new List<MasterAttribute>(); foreach (var row in sheet.Rows.Where(r => r.Index != 0).OrderBy(r => r.Index)) { var amd = amds.FirstOrDefault(a => a.Amd.MetadataId == new Guid(row.Cells[0].Value.ToString())); if (amd == null) { var currentEntity = emds.FirstOrDefault(e => e.LogicalName == row.Cells[1].Value.ToString()); if (currentEntity == null) { var request = new RetrieveEntityRequest { LogicalName = row.Cells[1].Value.ToString(), EntityFilters = EntityFilters.Entity | EntityFilters.Attributes }; var response = ((RetrieveEntityResponse)service.Execute(request)); currentEntity = response.EntityMetadata; emds.Add(currentEntity); } amd = new MasterAttribute(); amd.Amd = currentEntity.Attributes.FirstOrDefault(a => a.LogicalName == row.Cells[2].Value.ToString()); amds.Add(amd); } int columnIndex = 4; if (row.Cells[3].Value.ToString() == "DisplayName") { amd.Amd.DisplayName = new Label(); while (row.Cells[columnIndex].Value != null) { amd.Amd.DisplayName.LocalizedLabels.Add(new LocalizedLabel(row.Cells[columnIndex].Value.ToString(), int.Parse(sheet.Cells[0, columnIndex].Value.ToString()))); columnIndex++; } } else if (row.Cells[3].Value.ToString() == "Description") { amd.Amd.Description = new Label(); while (row.Cells[columnIndex].Value != null) { amd.Amd.Description.LocalizedLabels.Add(new LocalizedLabel(row.Cells[columnIndex].Value.ToString(), int.Parse(sheet.Cells[0, columnIndex].Value.ToString()))); columnIndex++; } } } var sbError = new StringBuilder(); foreach (var amd in amds) { if (amd.Amd.DisplayName.LocalizedLabels.All(l => string.IsNullOrEmpty(l.Label)) || amd.Amd.IsRenameable.Value == false) continue; try { var request = new UpdateAttributeRequest { Attribute = amd.Amd, EntityName = amd.Amd.EntityLogicalName }; service.Execute(request); } catch { sbError.AppendLine(string.Format("- {0} ({1})", amd.Amd.LogicalName, amd.Amd.EntityLogicalName)); } } if (sbError.Length > 0) { MessageBox.Show("Following attributes were not updated due to errors:\r\n" + sbError, "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning); } }