Beispiel #1
0
        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;
                }
            });
        }
Beispiel #2
0
        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;
                }
            });
        }
Beispiel #3
0
        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;
                }
            });
        }