From c923d6611ffa64605879779c490a979e03daa189 Mon Sep 17 00:00:00 2001 From: Roy Ben-Shabat Date: Sun, 11 Mar 2018 14:03:02 +0200 Subject: Working on Users & Roles module ! --- .../ViewModels/MainViewVM.cs | 61 +++++++++++++++++++--- 1 file changed, 55 insertions(+), 6 deletions(-) (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/ViewModels/MainViewVM.cs') 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 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(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...")) { -- cgit v1.3.1