aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/RolesViewVM.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/RolesViewVM.cs')
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/RolesViewVM.cs77
1 files changed, 77 insertions, 0 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/RolesViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/RolesViewVM.cs
new file mode 100644
index 000000000..d09722ec9
--- /dev/null
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/RolesViewVM.cs
@@ -0,0 +1,77 @@
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Tango.DAL.Observables;
+using Tango.MachineStudio.Common.Notifications;
+using Tango.MachineStudio.DB.ViewModels;
+
+namespace Tango.MachineStudio.DB.ViewModels
+{
+ public class RolesViewVM : DbTableViewModel<Role>
+ {
+ public RolesViewVM(INotificationProvider notification) : base(notification)
+ {
+ SelectedPermissions = new ObservableCollection<MultiComboVM<Permission>>();
+ }
+
+ private ObservableCollection<MultiComboVM<Permission>> _selectedPermissions;
+ public ObservableCollection<MultiComboVM<Permission>> SelectedPermissions
+ {
+ get { return _selectedPermissions; }
+ set { _selectedPermissions = value; RaisePropertyChangedAuto(); }
+ }
+
+ protected override void OnEdit()
+ {
+ SelectedPermissions = Adapter.Permissions.Select(x => new MultiComboVM<Permission>(x, () => RaisePropertyChanged(nameof(SelectedPermissions)))).ToObservableCollection();
+
+ foreach (var permission in SelectedPermissions)
+ {
+ if (SelectedEntity.RolesPermissions.ToList().Exists(x => x.Permission == permission.Entity && !x.Deleted))
+ {
+ permission.IsSelected = true;
+ }
+ }
+
+ base.OnEdit();
+ }
+
+ protected override void OnAdd()
+ {
+ SelectedPermissions = Adapter.Permissions.Select(x => new MultiComboVM<Permission>(x, () => RaisePropertyChanged(nameof(SelectedPermissions)))).ToObservableCollection();
+
+ base.OnAdd();
+ }
+
+ protected override void OnBeforeEntitySave(DialogOpenMode mode, Role role)
+ {
+ base.OnBeforeEntitySave(mode, role);
+
+ foreach (var permission in SelectedPermissions)
+ {
+ var rolePermission = role.RolesPermissions.SingleOrDefault(x => x.Permission == permission.Entity);
+
+ if (rolePermission != null)
+ {
+ rolePermission.Deleted = !permission.IsSelected;
+ }
+ else
+ {
+ if (permission.IsSelected)
+ {
+ role.RolesPermissions.Add(new RolesPermission()
+ {
+ Permission = permission.Entity,
+ Role = role,
+ PermissionGuid = permission.Entity.Guid,
+ RoleGuid = role.Guid
+ });
+ }
+ }
+ }
+ }
+ }
+}