aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/ViewModels/MainViewVM.cs
diff options
context:
space:
mode:
authorRoy Ben-Shabat <Roy@Twine-s.com>2018-03-11 14:03:02 +0200
committerRoy Ben-Shabat <Roy@Twine-s.com>2018-03-11 14:03:02 +0200
commitc923d6611ffa64605879779c490a979e03daa189 (patch)
tree8fedfe9963847146018c18ceee9cce7e0d0d579e /Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/ViewModels/MainViewVM.cs
parent4188ea39897f5aa3bc4be5a44358b79436baf0b4 (diff)
downloadTango-c923d6611ffa64605879779c490a979e03daa189.tar.gz
Tango-c923d6611ffa64605879779c490a979e03daa189.zip
Working on Users & Roles module !
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/ViewModels/MainViewVM.cs')
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/ViewModels/MainViewVM.cs61
1 files changed, 55 insertions, 6 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 fdb0f8983..9478014b7 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
@@ -81,6 +81,14 @@ namespace Tango.MachineStudio.UsersAndRoles.ViewModels
public RelayCommand AddOrganizationCommand { get; set; }
+ public RelayCommand RemoveOrganizationCommand { get; set; }
+
+ public RelayCommand BackToManagedOrganizationCommand { get; set; }
+
+ public RelayCommand<Role> RemoveRoleCommand { get; set; }
+
+ public RelayCommand SaveManagedUserCommand { get; set; }
+
public MainViewVM(UsersAndRolesNavigationManager navigation, INotificationProvider notification)
{
_navigation = navigation;
@@ -88,11 +96,15 @@ namespace Tango.MachineStudio.UsersAndRoles.ViewModels
LoadOrganizations();
- ManageOrganizationCommand = new RelayCommand(ManageOrganization, () => SelectedOrganization != null);
+ ManageOrganizationCommand = new RelayCommand(LoadSelectedOrganization, () => SelectedOrganization != null);
BackToOrganizationsCommand = new RelayCommand(BackToOrganizations);
ManageUserCommand = new RelayCommand(ManageUser, () => SelectedUser != null);
SaveOrganizationCommand = new RelayCommand(SaveOrganization);
AddOrganizationCommand = new RelayCommand(AddOrganization);
+ RemoveOrganizationCommand = new RelayCommand(RemoveOrganization, () => SelectedOrganization != null);
+ BackToManagedOrganizationCommand = new RelayCommand(BackToManagedOrganization);
+ RemoveRoleCommand = new RelayCommand<Role>(RemoveUserRole);
+ SaveManagedUserCommand = new RelayCommand(SaveManagedUser);
}
private async void AddOrganization()
@@ -111,7 +123,19 @@ namespace Tango.MachineStudio.UsersAndRoles.ViewModels
await org.SaveAsync(_organizationsContext);
Organizations = _organizationsContext.Organizations.ToObservableCollection();
SelectedOrganization = org;
- ManageOrganization();
+ LoadSelectedOrganization();
+ }
+ }
+ }
+
+ private async void RemoveOrganization()
+ {
+ if (_notification.ShowQuestion("Are you sure you want to remove " + SelectedOrganization.Name + " organization?"))
+ {
+ using (_notification.PushTaskItem("Removing organization..."))
+ {
+ await SelectedOrganization.DeleteCascadeAsync(_organizationsContext);
+ LoadOrganizations();
}
}
}
@@ -120,7 +144,7 @@ namespace Tango.MachineStudio.UsersAndRoles.ViewModels
{
using (_notification.PushTaskItem("Saving organization address and contact..."))
{
- ManagedOrganization.Contact.FullName = ManagedOrganization.Contact.FirstName + " " + ManagedOrganization.Contact.LastName;
+ ManagedOrganization.Contact.SetFullName();
await ManagedOrganization.SaveAsync(_manageContext);
LoadOrganizations();
SelectedOrganization = Organizations.SingleOrDefault(x => x.Guid == ManagedOrganization.Guid);
@@ -134,8 +158,8 @@ namespace Tango.MachineStudio.UsersAndRoles.ViewModels
Task.Factory.StartNew(() =>
{
_userContext = ObservablesContext.CreateDefault();
- Roles = _manageContext.Roles.ToObservableCollection();
- ManagedUser = _manageContext.Users.SingleOrDefault(x => x.Guid == SelectedUser.Guid);
+ Roles = _userContext.Roles.ToObservableCollection();
+ ManagedUser = _userContext.Users.SingleOrDefault(x => x.Guid == SelectedUser.Guid);
ManagedUserRoles = ManagedUser.Roles.ToObservableCollection();
InvokeUI(() => _navigation.NavigateTo(UsersAndRolesNavigationView.UserManagementView));
@@ -148,7 +172,32 @@ namespace Tango.MachineStudio.UsersAndRoles.ViewModels
_navigation.NavigateTo(UsersAndRolesNavigationView.OrganizationSelectionView);
}
- private void ManageOrganization()
+ private void BackToManagedOrganization()
+ {
+ _navigation.NavigateTo(UsersAndRolesNavigationView.OrganizationManagementView);
+ }
+
+ private void RemoveUserRole(Role role)
+ {
+ ManagedUserRoles.Remove(role);
+
+ foreach (var userRole in ManagedUser.UsersRoles.Where(x => x.Role == role).ToList())
+ {
+ userRole.DefferedDelete(_userContext);
+ }
+ }
+
+ private async void SaveManagedUser()
+ {
+ using (_notification.PushTaskItem("Saving user details..."))
+ {
+ ManagedUser.Contact.SetFullName();
+ await ManagedUser.SaveAsync(_userContext);
+ LoadSelectedOrganization();
+ }
+ }
+
+ private void LoadSelectedOrganization()
{
using (_notification.PushTaskItem("Loading organization..."))
{