From 7887ca0ad2433c4adbb65d96bf926561405ab290 Mon Sep 17 00:00:00 2001 From: Roy Ben-Shabat Date: Thu, 14 Dec 2017 16:28:42 +0200 Subject: Implemented Roles in DB Module. Added Permission enum generation. --- .../ViewModels/RolesViewVM.cs | 77 ++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/RolesViewVM.cs (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/RolesViewVM.cs') 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 + { + public RolesViewVM(INotificationProvider notification) : base(notification) + { + SelectedPermissions = new ObservableCollection>(); + } + + private ObservableCollection> _selectedPermissions; + public ObservableCollection> SelectedPermissions + { + get { return _selectedPermissions; } + set { _selectedPermissions = value; RaisePropertyChangedAuto(); } + } + + protected override void OnEdit() + { + SelectedPermissions = Adapter.Permissions.Select(x => new MultiComboVM(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(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 + }); + } + } + } + } + } +} -- cgit v1.3.1