aboutsummaryrefslogtreecommitdiffstats
path: root/Software
diff options
context:
space:
mode:
authorVictoria Plitt <Victoria.Plitt@twine-s.com>2021-01-19 13:08:27 +0200
committerVictoria Plitt <Victoria.Plitt@twine-s.com>2021-01-19 13:08:27 +0200
commitc536bc430907a15bb5bd4d8c0c1fec0934d5a9c8 (patch)
treefed2aa28af290a877ea53891bc5e59c68fa60ca2 /Software
parent18e79aebd6cb8269b31520ddbc93aaf0aa4b4591 (diff)
downloadTango-c536bc430907a15bb5bd4d8c0c1fec0934d5a9c8.tar.gz
Tango-c536bc430907a15bb5bd4d8c0c1fec0934d5a9c8.zip
MS. Check organization's connections to users, machines, sites before deleting. Simple query to db.
Diffstat (limited to 'Software')
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/ViewModels/MainViewVM.cs45
-rw-r--r--Software/Visual_Studio/Tango.BL/Builders/OrganizationBuilder.cs14
2 files changed, 26 insertions, 33 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/ViewModels/MainViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/ViewModels/MainViewVM.cs
index 75e4af225..9143f50a8 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/ViewModels/MainViewVM.cs
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/ViewModels/MainViewVM.cs
@@ -205,28 +205,35 @@ namespace Tango.MachineStudio.UsersAndRoles.ViewModels
{
if (_notification.ShowQuestion("Are you sure you want to remove " + SelectedOrganization.Name + " organization?"))
{
- Organization selectedToRemoveOrganization = null;
- await Task.Factory.StartNew(() =>
- {
- _manageContext = ObservablesContext.CreateDefault();
- selectedToRemoveOrganization = new OrganizationBuilder(_manageContext).Set(SelectedOrganization.Guid).WithUsers(true).WithMachines().WithSites().Build();
- });
- if (selectedToRemoveOrganization != null && selectedToRemoveOrganization.Machines.Count > 0)
- {
- _notification.ShowError("The organization cannot be removed as it contains Machines.");
- return;
- }
- if (selectedToRemoveOrganization != null && selectedToRemoveOrganization.Sites.Count > 0)
- {
- _notification.ShowError("The organization cannot be removed as it contains Sites.");
- return;
- }
- if (selectedToRemoveOrganization != null && selectedToRemoveOrganization.Users.Count(x => x.OrganizationGuid == SelectedOrganization.Guid && x.Deleted == false) > 0)
+
+ using (ObservablesContext db = ObservablesContext.CreateDefault())
{
- _notification.ShowError("The organization cannot be removed as it contains active users.");
- return;
+ var usersCount = db.Users.Count(x => x.OrganizationGuid == SelectedOrganization.Guid);
+
+ if (usersCount > 0)
+ {
+ _notification.ShowError($"The organization cannot be removed as it contains {usersCount} users.");
+ return;
+ }
+
+ var machinesCount = db.Machines.Count(x => x.OrganizationGuid == SelectedOrganization.Guid);
+
+ if (machinesCount > 0)
+ {
+ _notification.ShowError($"The organization cannot be removed as it contains {machinesCount} machines.");
+ return;
+ }
+
+ var sitesCount = db.Sites.Count(x => x.OrganizationGuid == SelectedOrganization.Guid);
+
+ if (sitesCount > 0)
+ {
+ _notification.ShowError($"The organization cannot be removed as it contains {sitesCount} sites.");
+ return;
+ }
}
+
using (_notification.PushTaskItem("Removing organization..."))
{
await SelectedOrganization.DeleteCascadeAsync(_organizationsContext);
diff --git a/Software/Visual_Studio/Tango.BL/Builders/OrganizationBuilder.cs b/Software/Visual_Studio/Tango.BL/Builders/OrganizationBuilder.cs
index a4a207185..81712542f 100644
--- a/Software/Visual_Studio/Tango.BL/Builders/OrganizationBuilder.cs
+++ b/Software/Visual_Studio/Tango.BL/Builders/OrganizationBuilder.cs
@@ -35,19 +35,5 @@ namespace Tango.BL.Builders
});
}
- public virtual OrganizationBuilder WithMachines()
- {
- return AddQueryStep(2, (query) =>
- {
- return query.Include(x => x.Machines);
- });
- }
- public virtual OrganizationBuilder WithSites()
- {
- return AddQueryStep(3, (query) =>
- {
- return query.Include(x => x.Sites);
- });
- }
}
}