aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/ViewModels/MainViewVM.cs
diff options
context:
space:
mode:
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.cs144
1 files changed, 144 insertions, 0 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
new file mode 100644
index 000000000..9c10dc126
--- /dev/null
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/ViewModels/MainViewVM.cs
@@ -0,0 +1,144 @@
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Linq;
+using System.Runtime.CompilerServices;
+using System.Text;
+using System.Threading.Tasks;
+using Tango.BL;
+using Tango.BL.Entities;
+using Tango.Core.Commands;
+using Tango.MachineStudio.Common.Notifications;
+using Tango.MachineStudio.UsersAndRoles.Navigation;
+using Tango.SharedUI;
+
+namespace Tango.MachineStudio.UsersAndRoles.ViewModels
+{
+ public class MainViewVM : ViewModel
+ {
+ private ObservablesContext _organizationsContext;
+ private ObservablesContext _manageContext;
+ private ObservablesContext _userContext;
+ private UsersAndRolesNavigationManager _navigation;
+ private INotificationProvider _notification;
+
+ private ObservableCollection<Organization> _organizations;
+ public ObservableCollection<Organization> Organizations
+ {
+ get { return _organizations; }
+ set { _organizations = value; RaisePropertyChangedAuto(); }
+ }
+
+ private Organization _selectedOrganization;
+ public Organization SelectedOrganization
+ {
+ get { return _selectedOrganization; }
+ set { _selectedOrganization = value; RaisePropertyChangedAuto(); }
+ }
+
+ private Organization _managedOrganization;
+ public Organization ManagedOrganization
+ {
+ get { return _managedOrganization; }
+ set { _managedOrganization = value; RaisePropertyChangedAuto(); }
+ }
+
+ private ObservableCollection<Role> _roles;
+ public ObservableCollection<Role> Roles
+ {
+ get { return _roles; }
+ set { _roles = value; RaisePropertyChangedAuto(); }
+ }
+
+ private ObservableCollection<Permission> _permissions;
+ public ObservableCollection<Permission> Permissions
+ {
+ get { return _permissions; }
+ set { _permissions = value; RaisePropertyChangedAuto(); }
+ }
+
+ private User _selectedUser;
+ public User SelectedUser
+ {
+ get { return _selectedUser; }
+ set { _selectedUser = value; RaisePropertyChangedAuto(); }
+ }
+
+ private User _managedUser;
+ public User ManagedUser
+ {
+ get { return _managedUser; }
+ set { _managedUser = value; RaisePropertyChangedAuto(); }
+ }
+
+ public RelayCommand ManageOrganizationCommand { get; set; }
+
+ public RelayCommand BackToOrganizationsCommand { get; set; }
+
+ public RelayCommand ManageUserCommand { get; set; }
+
+ public MainViewVM(UsersAndRolesNavigationManager navigation, INotificationProvider notification)
+ {
+ _navigation = navigation;
+ _notification = notification;
+
+ LoadOrganizations();
+
+ ManageOrganizationCommand = new RelayCommand(ManageOrganization, () => SelectedOrganization != null);
+ BackToOrganizationsCommand = new RelayCommand(BackToOrganizations);
+ ManageUserCommand = new RelayCommand(ManageUser, () => SelectedUser != null);
+ }
+
+ private void ManageUser()
+ {
+ using (_notification.PushTaskItem("Loading user details..."))
+ {
+ Task.Factory.StartNew(() =>
+ {
+ _userContext = ObservablesContext.CreateDefault();
+ ManagedUser = _manageContext.Users.SingleOrDefault(x => x.Guid == SelectedUser.Guid);
+
+ InvokeUI(() => _navigation.NavigateTo(UsersAndRolesNavigationView.UserManagementView));
+ });
+ }
+ }
+
+ private void BackToOrganizations()
+ {
+ _navigation.NavigateTo(UsersAndRolesNavigationView.OrganizationSelectionView);
+ }
+
+ private void ManageOrganization()
+ {
+ using (_notification.PushTaskItem("Loading organization..."))
+ {
+ Task.Factory.StartNew(() =>
+ {
+ _manageContext = ObservablesContext.CreateDefault();
+ ManagedOrganization = _manageContext.Organizations.SingleOrDefault(x => x.Guid == SelectedOrganization.Guid);
+
+ InvokeUI(() => _navigation.NavigateTo(UsersAndRolesNavigationView.OrganizationManagementView));
+ });
+ }
+ }
+
+ private void LoadOrganizations()
+ {
+ _organizationsContext = ObservablesContext.CreateDefault();
+ _organizationsContext.Configuration.LazyLoadingEnabled = false;
+
+ _organizationsContext.Users.ToList();
+ _organizationsContext.Contacts.ToList();
+ _organizationsContext.Addresses.ToList();
+ _organizationsContext.Machines.ToList();
+
+ Organizations = _organizationsContext.Organizations.ToObservableCollection();
+ }
+
+ protected override void RaisePropertyChangedAuto([CallerMemberName] string caller = null)
+ {
+ base.RaisePropertyChangedAuto(caller);
+ InvalidateRelayCommands();
+ }
+ }
+}