aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels
diff options
context:
space:
mode:
authorRoy Ben-Shabat <Roy@Twine-s.com>2017-12-14 16:28:42 +0200
committerRoy Ben-Shabat <Roy@Twine-s.com>2017-12-14 16:28:42 +0200
commit7887ca0ad2433c4adbb65d96bf926561405ab290 (patch)
treed02f2b60ee855b3f7c2b1cfe687a0135b8528f87 /Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels
parentac34ffe211bfa0d811f33a9e6141c0da97c55abe (diff)
downloadTango-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')
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/AddressesViewVM.cs2
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/DbTableViewModel.cs11
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/DialogOpenMode.cs2
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/MachinesViewVM.cs2
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/MultiComboVM.cs2
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/OrganizationsViewVM.cs2
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/RolesViewVM.cs77
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/ViewModels/UsersViewVM.cs5
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; }