Skip to content

Commit 1b4c63c

Browse files
committed
Fixing progress reporting and some displaynames
1 parent ab9615a commit 1b4c63c

File tree

5 files changed

+100
-59
lines changed

5 files changed

+100
-59
lines changed

Rappen.XTB.EntityPermissionVisualizer/EPVControl.cs

Lines changed: 45 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,16 @@
11
using McTools.Xrm.Connection;
22
using Microsoft.Xrm.Sdk;
3+
using Microsoft.Xrm.Sdk.Metadata;
34
using Microsoft.Xrm.Sdk.Query;
4-
using Rappen.XTB.Helpers;
55
using Rappen.XTB.Helpers.ControlItems;
66
using Rappen.XTB.Helpers.Controls;
7-
using Rappen.XTB.Helpers.Interfaces;
87
using System;
98
using System.Collections.Generic;
109
using System.Collections.Specialized;
1110
using System.ComponentModel;
1211
using System.Data;
1312
using System.Diagnostics;
1413
using System.Linq;
15-
using System.Net.Http.Headers;
1614
using System.Web;
1715
using System.Windows.Forms;
1816
using xrmtb.XrmToolBox.Controls;
@@ -189,12 +187,27 @@ private void PermissionSelected(EntityItem permissionitem)
189187
panItem.Controls.OfType<XRMDataTextBox>().ToList().ForEach(c => c.Entity = permissionitem?.Entity);
190188
btnItemOpen.Enabled = permissionitem != null;
191189
btnItemNewChild.Enabled = permissionitem != null;
192-
txtItemEntityName.Text = permissionitem != null && permissionitem.Entity.TryGetAttributeValue("adx_entitylogicalname", out string itementity)
193-
? GetEntityMetadataItem(itementity).DisplayName
194-
: string.Empty;
190+
txtItemEntityName.Text = GetPermissionEntityName(permissionitem);
195191
LoadWebroles();
196192
}
197193

194+
private string GetPermissionEntityName(EntityItem permissionitem)
195+
{
196+
if (permissionitem == null)
197+
{
198+
return string.Empty;
199+
}
200+
if (permissionitem.Entity.TryGetAttributeValue("adx_entitylogicalname", out string itementity))
201+
{
202+
if (GetEntityMetadataItem(itementity) is EntityMetadataItem emdi)
203+
{
204+
return emdi.DisplayName;
205+
}
206+
return itementity;
207+
}
208+
return string.Empty;
209+
}
210+
198211
private void LoadWebroles()
199212
{
200213
var permission = txtItemName.Entity;
@@ -328,9 +341,11 @@ private void btnItemNewChild_Click(object sender, EventArgs e)
328341
}
329342
var url = GetDeepLink(GetFullWebApplicationUrl(ConnectionDetail), "adx_entitypermission", Guid.Empty, Guid.Empty,
330343
new NameValueCollection {
331-
{ "adx_scope", "756150003" },
332-
{ "adx_parententitypermission", permission.Id.ToString() },
333-
{ "adx_parententitypermissionname", txtItemName.Text }
344+
{ EntitypeRmission.Scope, ((int)EntitypeRmission.Scope_OptionSet.Overordnad).ToString() },
345+
{ EntitypeRmission.WebsiteId, cmbWebsite.SelectedEntity.Id.ToString() },
346+
{ EntitypeRmission.WebsiteId + "name", cmbWebsite.Text },
347+
{ EntitypeRmission.ParentEntitypeRmission, permission.Id.ToString() },
348+
{ EntitypeRmission.ParentEntitypeRmission + "name", txtItemName.Text }
334349
});
335350
if (!string.IsNullOrEmpty(url))
336351
{
@@ -348,9 +363,13 @@ internal EntityMetadataItem GetEntityMetadataItem(string entityname)
348363
{
349364
return meta;
350365
}
351-
meta = new EntityMetadataItem(Service.GetEntity(entityname), true);
352-
entities.Add(entityname, meta);
353-
return meta;
366+
if (Service.GetEntity(entityname) is EntityMetadata entitymeta)
367+
{
368+
meta = new EntityMetadataItem(entitymeta, true);
369+
entities.Add(entityname, meta);
370+
return meta;
371+
}
372+
return null;
354373
}
355374

356375
private void rbTreeNames_CheckedChanged(object sender, EventArgs e)
@@ -372,12 +391,23 @@ private void GetChildNodeDetails(TreeNodeCollection nodes)
372391
Message = "Loading details",
373392
Work = (w, args) =>
374393
{
375-
nodes.OfType<TreeNode>()
394+
var items = nodes.OfType<TreeNode>()
376395
.Where(n => n.Tag is PermissionItem item && !item.DetailsLoaded)
377-
.Select(n => n.Tag as PermissionItem)
378-
.ToList().ForEach(i => i.LoadDetails());
396+
.Select(n => n.Tag as PermissionItem);
397+
var total = items.Count();
398+
var current = 0;
399+
foreach (var item in items)
400+
{
401+
current++;
402+
w.ReportProgress(current * 100 / total, $"Loading details\n{current} / {total}");
403+
item.LoadDetails();
404+
}
379405
args.Result = nodes.OfType<TreeNode>();
380406
},
407+
ProgressChanged = (args) =>
408+
{
409+
SetWorkingMessage(args.UserState.ToString());
410+
},
381411
PostWorkCallBack = (args) => HandleWorkAsync<IEnumerable<TreeNode>>(args, (childnodes) =>
382412
{
383413
childnodes.ToList().ForEach(c => c.Text = (c.Tag is PermissionItem item) ? item.TreeNodeText : "?");

Rappen.XTB.EntityPermissionVisualizer/EPVControl.designer.cs

Lines changed: 52 additions & 40 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Rappen.XTB.EntityPermissionVisualizer/EPVControl.resx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@
128128
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
129129
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
130130
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAU
131-
DgAAAk1TRnQBSQFMAgEBBQEAAXABAAFwAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
131+
DgAAAk1TRnQBSQFMAgEBBQEAAbgBAAG4AQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
132132
AwABQAMAASADAAEBAQABCAYAAQgYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
133133
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
134134
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA

0 commit comments

Comments
 (0)