diff options
| author | Roy Ben-Shabat <Roy@Twine-s.com> | 2017-12-14 16:28:42 +0200 |
|---|---|---|
| committer | Roy Ben-Shabat <Roy@Twine-s.com> | 2017-12-14 16:28:42 +0200 |
| commit | 7887ca0ad2433c4adbb65d96bf926561405ab290 (patch) | |
| tree | d02f2b60ee855b3f7c2b1cfe687a0135b8528f87 /Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels | |
| parent | ac34ffe211bfa0d811f33a9e6141c0da97c55abe (diff) | |
| download | Tango-7887ca0ad2433c4adbb65d96bf926561405ab290.tar.gz Tango-7887ca0ad2433c4adbb65d96bf926561405ab290.zip | |
Implemented Roles in DB Module.
Added Permission enum generation.
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels')
8 files changed, 90 insertions, 13 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/AddressesViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/AddressesViewVM.cs index c5f95c803..41eab1c37 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/AddressesViewVM.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/AddressesViewVM.cs @@ -6,7 +6,7 @@ using System.Threading.Tasks; using Tango.DAL.Observables; using Tango.MachineStudio.Common.Notifications; -namespace Tango.MachineStudio.DB.ViewModels.DBViewModels +namespace Tango.MachineStudio.DB.ViewModels { public class AddressesViewVM : DbTableViewModel<Address> { diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/DbTableViewModel.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/DbTableViewModel.cs index db72055df..7f6dd8d5f 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/DbTableViewModel.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/DbTableViewModel.cs @@ -10,9 +10,9 @@ using Tango.MachineStudio.DB.Managers; using Tango.SharedUI; using Tango.MachineStudio.DB.ExtensionMethods; -namespace Tango.MachineStudio.DB.ViewModels.DBViewModels +namespace Tango.MachineStudio.DB.ViewModels { - public abstract class DbTableViewModel<T> : ViewModel where T : IObservableEntity + public abstract class DbTableViewModel<T> : ViewModel where T : class, IObservableEntity { private INotificationProvider _notification; @@ -25,8 +25,8 @@ namespace Tango.MachineStudio.DB.ViewModels.DBViewModels Adapter = ObservablesEntitiesAdapter.Instance; AddCommand = new RelayCommand(OnAdd); - EditCommand = new RelayCommand(OnEdit); - DeleteCommand = new RelayCommand(OnDelete); + EditCommand = new RelayCommand(OnEdit,(x) => SelectedEntity != null); + DeleteCommand = new RelayCommand(OnDelete, (x) => SelectedEntity != null); DialogOKCommand = new RelayCommand(() => OnDialogOKPressed(DialogOpenMode, EditEntity)); DialogCancelCommand = new RelayCommand(() => OnDialogCancelPressed(DialogOpenMode, EditEntity)); @@ -80,7 +80,7 @@ namespace Tango.MachineStudio.DB.ViewModels.DBViewModels public T SelectedEntity { get { return _selectedEntity; } - set { _selectedEntity = value; RaisePropertyChangedAuto(); } + set { _selectedEntity = value; RaisePropertyChangedAuto(); InvalidateRelayCommands(); } } private String _filter; @@ -166,6 +166,7 @@ namespace Tango.MachineStudio.DB.ViewModels.DBViewModels entity.Save(); IsDialogOpen = false; SelectedEntity = EditEntity; + SelectedEntity = null; } /// <summary> diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/DialogOpenMode.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/DialogOpenMode.cs index 7a7e9bd41..0d46a9734 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/DialogOpenMode.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/DialogOpenMode.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace Tango.MachineStudio.DB.ViewModels.DBViewModels +namespace Tango.MachineStudio.DB.ViewModels { public enum DialogOpenMode { diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/MachinesViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/MachinesViewVM.cs index fd2f88c2f..fbec464bd 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/MachinesViewVM.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/MachinesViewVM.cs @@ -9,7 +9,7 @@ using Tango.DAL.Observables; using Tango.MachineStudio.Common.Notifications; using Tango.SharedUI; -namespace Tango.MachineStudio.DB.ViewModels.DBViewModels +namespace Tango.MachineStudio.DB.ViewModels { public class MachinesViewVM : DbTableViewModel<Machine> { diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/MultiComboVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/MultiComboVM.cs index 4a3709050..d15ac6e11 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/MultiComboVM.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/MultiComboVM.cs @@ -5,7 +5,7 @@ using System.Text; using System.Threading.Tasks; using Tango.SharedUI; -namespace Tango.MachineStudio.DB.ViewModels.DBViewModels +namespace Tango.MachineStudio.DB.ViewModels { public class MultiComboVM<T> : EntityViewModel<T> { diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/OrganizationsViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/OrganizationsViewVM.cs index ff0ec3b77..a394f9faa 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/OrganizationsViewVM.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/OrganizationsViewVM.cs @@ -6,7 +6,7 @@ using System.Threading.Tasks; using Tango.DAL.Observables; using Tango.MachineStudio.Common.Notifications; -namespace Tango.MachineStudio.DB.ViewModels.DBViewModels +namespace Tango.MachineStudio.DB.ViewModels { public class OrganizationsViewVM : DbTableViewModel<Organization> { 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 + }); + } + } + } + } + } +} diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/UsersViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/UsersViewVM.cs index 1dde969d6..0b65d48ab 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/UsersViewVM.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/UsersViewVM.cs @@ -7,17 +7,16 @@ using System.Threading.Tasks; using Tango.DAL.Observables; using Tango.MachineStudio.Common.Notifications; -namespace Tango.MachineStudio.DB.ViewModels.DBViewModels +namespace Tango.MachineStudio.DB.ViewModels { public class UsersViewVM : DbTableViewModel<User> { - private ObservableCollection<MultiComboVM<Role>> _selectedRoles; - public UsersViewVM(INotificationProvider notification) : base(notification) { SelectedRoles = new ObservableCollection<MultiComboVM<Role>>(); } + private ObservableCollection<MultiComboVM<Role>> _selectedRoles; public ObservableCollection<MultiComboVM<Role>> SelectedRoles { get { return _selectedRoles; } |
