public void LoadEntities() { lvEntities.Items.Clear(); tsbCreateRecords.Enabled = false; tsbDeleteEntity.Enabled = false; tsbLoadEntities.Enabled = false; WorkAsync(new WorkAsyncInfo { Message = "Loading Entities...", Work = (bw, evt) => { var mm = new MetadataManager(Service); evt.Result = mm.GetEntitiesMetadata(); }, PostWorkCallBack = evt => { emc = (EntityMetadataCollection)evt.Result; var list = new List<ListViewItem>(); foreach (var em in emc.Where(e => e.Attributes.Any( a => a.AttributeType.Value == AttributeTypeCode.Picklist || a.AttributeType.Value == AttributeTypeCode.State || a.AttributeType.Value == AttributeTypeCode.Status))) { var item = new ListViewItem(em.DisplayName == null || em.DisplayName.UserLocalizedLabel == null ? "N/A" : em.DisplayName.UserLocalizedLabel.Label); item.SubItems.Add(em.LogicalName); item.Tag = em; list.Add(item); } lvEntities.Items.AddRange(list.ToArray()); tsbCreateRecords.Enabled = true; tsbDeleteEntity.Enabled = true; tsbLoadEntities.Enabled = true; } }); }
public void DeleteEntity() { string message = "Deleting this entity will also delete records of this entity! Are you sure you want to proceed?"; if (MessageBox.Show(this, message, "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.No) { return; } tsbCreateRecords.Enabled = false; tsbDeleteEntity.Enabled = false; tsbLoadEntities.Enabled = false; WorkAsync(new WorkAsyncInfo { Message = "Deleting entity...", Work = (bw, evt) => { var mm = new MetadataManager(Service); var entityExists = mm.EntityExists("gap_powerbioptionsetref"); if (!entityExists) { throw new Exception( "There is no 'Power BI Option-Set Xref' entity on the connected organization"); } mm.DeleteEntity("gap_powerbioptionsetref"); }, PostWorkCallBack = evt => { if (evt.Error != null) { MessageBox.Show(this, evt.Error.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } tsbCreateRecords.Enabled = true; tsbDeleteEntity.Enabled = true; tsbLoadEntities.Enabled = true; } }); }
private void tsbCreateRecords_Click(object sender, EventArgs e) { if (lvOptionSets.CheckedItems.Count == 0) return; var mm = new MetadataManager(Service); var entityExists = mm.EntityExists("gap_powerbioptionsetref"); if (!entityExists) { var message = "'Power BI Option-Set Xref' entity does not exist on your organization. Would you like to create it? If you answer 'no', the process will be aborted"; if (MessageBox.Show(this, message, "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.No) { return; } } var settings = new Settings { CreateEntity = !entityExists, OptionSets = lvOptionSets.CheckedItems.Cast<ListViewItem>().Select(o => (AttributeMetadata)o.Tag).ToList(), AllMetadata = emc }; tsbCreateRecords.Enabled = false; tsbDeleteEntity.Enabled = false; tsbLoadEntities.Enabled = false; WorkAsync(new WorkAsyncInfo { Message = "Initializing...", AsyncArgument = settings, Work = (bw, evt) => { if (((Settings)evt.Argument).CreateEntity) { var organization = Service.RetrieveMultiple(new QueryExpression("organization") { ColumnSet = new ColumnSet("languagecode") }).Entities.First(); bw.ReportProgress(0, "Creating entity..."); mm.CreatePowerBiOptionSetRefEntity(organization.GetAttributeValue<int>("languagecode"), bw); } bw.ReportProgress(0, "Processing Option Sets ..."); CreateRecords(settings); }, ProgressChanged = evt => { SetWorkingMessage(evt.UserState.ToString()); }, PostWorkCallBack = evt => { tsbCreateRecords.Enabled = true; tsbDeleteEntity.Enabled = true; tsbLoadEntities.Enabled = true; } }); }