diff options
| author | Roy Ben-Shabat <Roy@Twine-s.com> | 2018-03-12 17:03:38 +0200 |
|---|---|---|
| committer | Roy Ben-Shabat <Roy@Twine-s.com> | 2018-03-12 17:03:38 +0200 |
| commit | e75cf513acb73558e948d6012b45f221c718dcf7 (patch) | |
| tree | 386d3cd79048edbfb91860b6a063fba3c660fec5 /Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/ViewModels/MainViewVM.cs | |
| parent | c923d6611ffa64605879779c490a979e03daa189 (diff) | |
| download | Tango-e75cf513acb73558e948d6012b45f221c718dcf7.tar.gz Tango-e75cf513acb73558e948d6012b45f221c718dcf7.zip | |
Added cascade delete for Machine -> Jobs.
Added addresses auto complete to users & roles.
Maybe Users & Roles module is complete..
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.cs | 132 |
1 files changed, 128 insertions, 4 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 9478014b7..7d82cbbbc 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 @@ -10,6 +10,7 @@ using Tango.BL.Entities; using Tango.Core.Commands; using Tango.MachineStudio.Common.Notifications; using Tango.MachineStudio.UsersAndRoles.Navigation; +using Tango.MachineStudio.UsersAndRoles.Providers; using Tango.SharedUI; namespace Tango.MachineStudio.UsersAndRoles.ViewModels @@ -71,6 +72,36 @@ namespace Tango.MachineStudio.UsersAndRoles.ViewModels set { _managedUser = value; RaisePropertyChangedAuto(); } } + private Place _selectedUserPlace; + public Place SelectedUserPlace + { + get { return _selectedUserPlace; } + set + { + _selectedUserPlace = value; + + if (_selectedUserPlace != null && _selectedUserPlace.Address != null) + { + SetUserPlace(value); + } + } + } + + private Place _selectedOrganizationPlace; + public Place SelectedOrganizationPlace + { + get { return _selectedOrganizationPlace; } + set + { + _selectedOrganizationPlace = value; + + if (_selectedOrganizationPlace != null && _selectedOrganizationPlace.Address != null) + { + SetOrganizationPlace(value); + } + } + } + public RelayCommand ManageOrganizationCommand { get; set; } public RelayCommand BackToOrganizationsCommand { get; set; } @@ -89,6 +120,10 @@ namespace Tango.MachineStudio.UsersAndRoles.ViewModels public RelayCommand SaveManagedUserCommand { get; set; } + public RelayCommand AddUserCommand { get; set; } + + public RelayCommand RemoveUserCommand { get; set; } + public MainViewVM(UsersAndRolesNavigationManager navigation, INotificationProvider notification) { _navigation = navigation; @@ -98,13 +133,15 @@ namespace Tango.MachineStudio.UsersAndRoles.ViewModels ManageOrganizationCommand = new RelayCommand(LoadSelectedOrganization, () => SelectedOrganization != null); BackToOrganizationsCommand = new RelayCommand(BackToOrganizations); - ManageUserCommand = new RelayCommand(ManageUser, () => SelectedUser != null); + ManageUserCommand = new RelayCommand(LoadSelectedUser, () => 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); + AddUserCommand = new RelayCommand(AddNewUser); + RemoveUserCommand = new RelayCommand(RemoveSelectedUser, () => SelectedUser != null); } private async void AddOrganization() @@ -144,14 +181,13 @@ namespace Tango.MachineStudio.UsersAndRoles.ViewModels { using (_notification.PushTaskItem("Saving organization address and contact...")) { - ManagedOrganization.Contact.SetFullName(); await ManagedOrganization.SaveAsync(_manageContext); LoadOrganizations(); SelectedOrganization = Organizations.SingleOrDefault(x => x.Guid == ManagedOrganization.Guid); } } - private void ManageUser() + private void LoadSelectedUser() { using (_notification.PushTaskItem("Loading user details...")) { @@ -189,9 +225,18 @@ namespace Tango.MachineStudio.UsersAndRoles.ViewModels private async void SaveManagedUser() { + try + { + ManagedUser.Validate(_userContext); + } + catch (Exception ex) + { + _notification.ShowError(ex.Message); + return; + } + using (_notification.PushTaskItem("Saving user details...")) { - ManagedUser.Contact.SetFullName(); await ManagedUser.SaveAsync(_userContext); LoadSelectedOrganization(); } @@ -237,6 +282,85 @@ namespace Tango.MachineStudio.UsersAndRoles.ViewModels ManagedUserRoles.Add(role); } + private async void RemoveSelectedUser() + { + if (_notification.ShowQuestion("Are you sure you want to remove the selected user?")) + { + using (_notification.PushTaskItem("Removing user...")) + { + await SelectedUser.DeleteCascadeAsync(_manageContext); + LoadSelectedOrganization(); + } + } + } + + private async void AddNewUser() + { + String email = _notification.ShowTextInput("Enter user email", "email"); + + if (!String.IsNullOrWhiteSpace(email)) + { + User user = new User(); + user.Email = email; + user.Password = "1111"; + user.Contact = new Contact() + { + FirstName = "Twine", + LastName = "User", + Email = email, + }; + + user.UsersRoles.Add(new UsersRole() + { + User = user, + Role = _manageContext.Roles.SingleOrDefault(x => x.Code == (int)BL.Enumerations.Roles.User) + }); + + try + { + user.Validate(_manageContext); + } + catch (Exception ex) + { + _notification.ShowError(ex.Message); + return; + } + + user.Address = new Address(); + + ManagedOrganization.Users.Add(user); + + using (_notification.PushTaskItem("Adding new user...")) + { + await ManagedOrganization.SaveAsync(_manageContext); + LoadOrganizations(); + SelectedOrganization = Organizations.SingleOrDefault(x => x.Guid == ManagedOrganization.Guid); + } + } + } + + private void SetUserPlace(Place place) + { + ManagedUser.Address.AddressString = place.Address.Road; + ManagedUser.Address.City = place.Address.City; + ManagedUser.Address.Country = place.Address.Country; + ManagedUser.Address.CountryCode = place.Address.CountryCode; + ManagedUser.Address.Locality = place.Address.CountryCode; + ManagedUser.Address.PostalCode = place.Address.PostalCode; + ManagedUser.Address.State = place.Address.State; + } + + private void SetOrganizationPlace(Place place) + { + ManagedOrganization.Address.AddressString = place.Address.Road; + ManagedOrganization.Address.City = place.Address.City; + ManagedOrganization.Address.Country = place.Address.Country; + ManagedOrganization.Address.CountryCode = place.Address.CountryCode; + ManagedOrganization.Address.Locality = place.Address.CountryCode; + ManagedOrganization.Address.PostalCode = place.Address.PostalCode; + ManagedOrganization.Address.State = place.Address.State; + } + protected override void RaisePropertyChangedAuto([CallerMemberName] string caller = null) { base.RaisePropertyChangedAuto(caller); |
