From 00a491d93733d4625ad329b2ba8237f445364b3f Mon Sep 17 00:00:00 2001 From: Mirta Date: Wed, 30 Dec 2020 16:39:52 +0200 Subject: merge --- .../Converters/RoleEnumToVisibleConverter.cs | 32 ------ .../Images/login.png | Bin 6401 -> 0 bytes .../Tango.MachineStudio.UsersAndRoles.csproj | 19 +-- .../ViewModels/MainViewVM.cs | 127 +++------------------ .../ViewModels/UserCreationDialogVM.cs | 74 ------------ .../Views/OrganizationManagementView.xaml | 26 ----- .../Views/UserCreationDialog.xaml | 53 --------- .../Views/UserCreationDialog.xaml.cs | 28 ----- .../Views/UserManagementView.xaml | 18 +-- .../Views/UserView.xaml | 2 + .../packages.config | 1 - 11 files changed, 21 insertions(+), 359 deletions(-) delete mode 100644 Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/Converters/RoleEnumToVisibleConverter.cs delete mode 100644 Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/Images/login.png delete mode 100644 Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/ViewModels/UserCreationDialogVM.cs delete mode 100644 Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/Views/UserCreationDialog.xaml delete mode 100644 Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/Views/UserCreationDialog.xaml.cs (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles') diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/Converters/RoleEnumToVisibleConverter.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/Converters/RoleEnumToVisibleConverter.cs deleted file mode 100644 index 350257fdd..000000000 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/Converters/RoleEnumToVisibleConverter.cs +++ /dev/null @@ -1,32 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Globalization; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows; -using System.Windows.Data; -using Tango.BL.Enumerations; - -namespace Tango.MachineStudio.UsersAndRoles.Converters -{ - public class RoleEnumToVisibleConverter : IValueConverter - { - public object Convert(object value, Type targetType, object parameter, CultureInfo culture) - { - if(value.GetType().IsEnum && Enum.IsDefined(typeof(Roles), value)) - { - Roles roleEnum = (Roles)value; - if (roleEnum.ToString().StartsWith("FSE")) - return Visibility.Collapsed; - } - - return Visibility.Visible; - } - - public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) - { - throw new NotImplementedException(); - } - } -} diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/Images/login.png b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/Images/login.png deleted file mode 100644 index 9f7d0b9ba..000000000 Binary files a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/Images/login.png and /dev/null differ diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/Tango.MachineStudio.UsersAndRoles.csproj b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/Tango.MachineStudio.UsersAndRoles.csproj index 687544c1b..82376b751 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/Tango.MachineStudio.UsersAndRoles.csproj +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/Tango.MachineStudio.UsersAndRoles.csproj @@ -49,9 +49,6 @@ ..\..\..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll - - ..\..\..\packages\SimpleValidator.0.6.1.0\lib\net40\SimpleValidator.dll - @@ -75,7 +72,6 @@ GlobalVersionInfo.cs - @@ -84,7 +80,6 @@ - AddressView.xaml @@ -100,9 +95,6 @@ OrganizationSelectionView.xaml - - UserCreationDialog.xaml - UserManagementView.xaml @@ -128,9 +120,7 @@ ResXFileCodeGenerator Resources.Designer.cs - - Designer - + SettingsSingleFileGenerator @@ -196,10 +186,6 @@ Designer MSBuild:Compile - - Designer - MSBuild:Compile - Designer MSBuild:Compile @@ -224,9 +210,6 @@ - - - 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 16395d6bc..a46d5f456 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 @@ -15,10 +15,6 @@ using Tango.MachineStudio.UsersAndRoles.Providers; using Tango.SharedUI; using System.Data.Entity; using Tango.BL.Builders; -using Tango.BL.ActionLogs; -using Tango.BL.DTO; -using Tango.BL.Enumerations; -using Tango.MachineStudio.Common.Authentication; namespace Tango.MachineStudio.UsersAndRoles.ViewModels { @@ -29,10 +25,6 @@ namespace Tango.MachineStudio.UsersAndRoles.ViewModels private ObservablesContext _userContext; private UsersAndRolesNavigationManager _navigation; private INotificationProvider _notification; - private IActionLogManager _actionLogManager; - private OrganizationDTO _organizationBeforeSave; - private IAuthenticationProvider _authenticationProvider; - private UserDTO _userBeforeSave; private ObservableCollection _organizations; public ObservableCollection Organizations @@ -113,21 +105,6 @@ namespace Tango.MachineStudio.UsersAndRoles.ViewModels } } - private bool _showDeleted; - public bool ShowDeleted - { - get { return _showDeleted; } - set - { - _showDeleted = value; - if (_showDeleted) - { - //ShowDeletedUsers(); - } - } - } - - public RelayCommand ManageOrganizationCommand { get; set; } public RelayCommand BackToOrganizationsCommand { get; set; } @@ -146,18 +123,14 @@ namespace Tango.MachineStudio.UsersAndRoles.ViewModels public RelayCommand SaveManagedUserCommand { get; set; } - public RelayCommand RestoreAndSaveManagedUserCommand { get; set; } - public RelayCommand AddUserCommand { get; set; } public RelayCommand RemoveUserCommand { get; set; } - public MainViewVM(UsersAndRolesNavigationManager navigation, INotificationProvider notification, IActionLogManager actionLogManager, IAuthenticationProvider authenticationProvider) + public MainViewVM(UsersAndRolesNavigationManager navigation, INotificationProvider notification) { _navigation = navigation; _notification = notification; - _actionLogManager = actionLogManager; - _authenticationProvider = authenticationProvider; ManageOrganizationCommand = new RelayCommand(LoadSelectedOrganization, () => SelectedOrganization != null); BackToOrganizationsCommand = new RelayCommand(BackToOrganizations); @@ -168,10 +141,8 @@ namespace Tango.MachineStudio.UsersAndRoles.ViewModels BackToManagedOrganizationCommand = new RelayCommand(BackToManagedOrganization); RemoveRoleCommand = new RelayCommand(RemoveUserRole); SaveManagedUserCommand = new RelayCommand(SaveManagedUser); - RestoreAndSaveManagedUserCommand = new RelayCommand(RestoreAndSaveManagedUser); AddUserCommand = new RelayCommand(AddNewUser); RemoveUserCommand = new RelayCommand(RemoveSelectedUser, () => SelectedUser != null); - _showDeleted = false; } public override void OnApplicationReady() @@ -193,7 +164,6 @@ namespace Tango.MachineStudio.UsersAndRoles.ViewModels org.Contact = new Contact(); _organizationsContext.Organizations.Add(org); await org.SaveAsync(_organizationsContext); - _actionLogManager.InsertLog(ActionLogType.OrganizationCreated, _authenticationProvider.CurrentUser, org.Name, org, "Organization created using Machine Studio."); Organizations = _organizationsContext.Organizations.ToObservableCollection(); SelectedOrganization = org; LoadSelectedOrganization(); @@ -208,7 +178,6 @@ namespace Tango.MachineStudio.UsersAndRoles.ViewModels using (_notification.PushTaskItem("Removing organization...")) { await SelectedOrganization.DeleteCascadeAsync(_organizationsContext); - _actionLogManager.InsertLog(ActionLogType.OrganizationDeleted, _authenticationProvider.CurrentUser, SelectedOrganization.Name, SelectedOrganization, "Organization deleted using Machine Studio."); await LoadOrganizations(); } } @@ -218,13 +187,7 @@ namespace Tango.MachineStudio.UsersAndRoles.ViewModels { using (_notification.PushTaskItem("Saving organization address and contact...")) { - var organizationAfter = OrganizationDTO.FromObservable(ManagedOrganization); - await ManagedOrganization.SaveAsync(_manageContext); - _actionLogManager.InsertLog(ActionLogType.OrganizationSaved, _authenticationProvider.CurrentUser, ManagedOrganization.Name, _organizationBeforeSave, organizationAfter, "Organization saved using Machine Studio."); - - _organizationBeforeSave = organizationAfter; - await LoadOrganizations(); SelectedOrganization = Organizations.SingleOrDefault(x => x.Guid == ManagedOrganization.Guid); } @@ -239,10 +202,8 @@ namespace Tango.MachineStudio.UsersAndRoles.ViewModels _userContext = ObservablesContext.CreateDefault(); Roles = new RolesCollectionBuilder(_userContext).SetAll().WithPermission().Build(); - ManagedUser = new UserBuilder(_userContext).WithDeleted().Set(SelectedUser.Guid).WithRolesAndPermissions().Build(); + ManagedUser = new UserBuilder(_userContext).Set(SelectedUser.Guid).WithRolesAndPermissions().Build(); ManagedUserRoles = ManagedUser.Roles.ToObservableCollection(); - - _userBeforeSave = UserDTO.FromObservable(ManagedUser); }); _navigation.NavigateTo(UsersAndRolesNavigationView.UserManagementView); @@ -274,11 +235,6 @@ namespace Tango.MachineStudio.UsersAndRoles.ViewModels try { ManagedUser.Validate(_userContext); - - if (ManagedUser.Roles.GroupBy(x => x.RoleEnum).Any(x => x.Count() > 1)) - { - throw new InvalidOperationException("Cannot save user with duplicate roles."); - } } catch (Exception ex) { @@ -288,45 +244,11 @@ namespace Tango.MachineStudio.UsersAndRoles.ViewModels using (_notification.PushTaskItem("Saving user details...")) { - var userAfter = UserDTO.FromObservable(ManagedUser); await ManagedUser.SaveAsync(_userContext); - _actionLogManager.InsertLog(ActionLogType.UserSaved, _authenticationProvider.CurrentUser, ManagedUser.Email, _userBeforeSave, userAfter, "User saved using Machine Studio."); - _userBeforeSave = userAfter; LoadSelectedOrganization(); } } - private async void RestoreAndSaveManagedUser() - { - try - { - ManagedUser.Validate(_userContext); - - if (ManagedUser.Roles.GroupBy(x => x.RoleEnum).Any(x => x.Count() > 1)) - { - throw new InvalidOperationException("Cannot save user with duplicate roles."); - } - } - catch (Exception ex) - { - _notification.ShowError(ex.Message); - return; - } - if (_notification.ShowQuestion("Are you sure you wish to re-activate this account?")) - { - using (_notification.PushTaskItem("Saving user details...")) - { - ManagedUser.Deleted = false; - - var userAfter = UserDTO.FromObservable(ManagedUser); - await ManagedUser.SaveAsync(_userContext); - _actionLogManager.InsertLog(ActionLogType.UserRestored, _authenticationProvider.CurrentUser, ManagedUser.Email, _userBeforeSave, userAfter, "User restored using Machine Studio."); - _userBeforeSave = userAfter; - LoadSelectedOrganization(); - } - } - } - private async void LoadSelectedOrganization() { using (_notification.PushTaskItem("Loading organization...")) @@ -335,9 +257,7 @@ namespace Tango.MachineStudio.UsersAndRoles.ViewModels { _manageContext = ObservablesContext.CreateDefault(); - ManagedOrganization = new OrganizationBuilder(_manageContext).Set(SelectedOrganization.Guid).WithUsers(true).Build(); - - _organizationBeforeSave = OrganizationDTO.FromObservable(ManagedOrganization); + ManagedOrganization = new OrganizationBuilder(_manageContext).Set(SelectedOrganization.Guid).WithUsers().Build(); }); _navigation.NavigateTo(UsersAndRolesNavigationView.OrganizationManagementView); @@ -374,25 +294,25 @@ namespace Tango.MachineStudio.UsersAndRoles.ViewModels using (_notification.PushTaskItem("Removing user...")) { await SelectedUser.DeleteCascadeAsync(_manageContext); - _actionLogManager.InsertLog(ActionLogType.UserDeleted, _authenticationProvider.CurrentUser, SelectedUser.Email, SelectedUser, "User deleted using Machine Studio."); LoadSelectedOrganization(); } } } - private void AddNewUser() + private async void AddNewUser() { - _notification.ShowModalDialog(async (vm) => + String email = _notification.ShowTextInput("Enter user email", "email"); + + if (!String.IsNullOrWhiteSpace(email)) { User user = new User(); - user.Email = vm.Email; - user.Password = User.GetPasswordHash(vm.Password); - user.PasswordChangeRequired = true; + user.Email = email; + user.Password = "1111"; user.Contact = new Contact() { - FirstName = vm.FirstName, - LastName = vm.LastName, - Email = vm.Email, + FirstName = "Twine", + LastName = "User", + Email = email, }; user.Address = new Address(); @@ -403,25 +323,9 @@ namespace Tango.MachineStudio.UsersAndRoles.ViewModels Role = _manageContext.Roles.SingleOrDefault(x => x.Code == (int)BL.Enumerations.Roles.User) }); - user.UsersRoles.Add(new UsersRole() - { - User = user, - Role = _manageContext.Roles.SingleOrDefault(x => x.Code == (int)BL.Enumerations.Roles.MachineStudioUser) - }); - - user.UsersRoles.Add(new UsersRole() - { - User = user, - Role = _manageContext.Roles.SingleOrDefault(x => x.Code == (int)BL.Enumerations.Roles.PPCUser) - }); - try { - if (!user.Validate(_manageContext)) - { - _notification.ShowError(String.Join(Environment.NewLine, user.ValidationErrors)); - return; - } + user.Validate(_manageContext); } catch (Exception ex) { @@ -434,13 +338,10 @@ namespace Tango.MachineStudio.UsersAndRoles.ViewModels using (_notification.PushTaskItem("Adding new user...")) { await ManagedOrganization.SaveAsync(_manageContext); - _actionLogManager.InsertLog(ActionLogType.UserCreated, _authenticationProvider.CurrentUser, user.Email, user, "User created using Machine Studio."); await LoadOrganizations(); SelectedOrganization = Organizations.SingleOrDefault(x => x.Guid == ManagedOrganization.Guid); - SelectedUser = user; - LoadSelectedUser(); } - }); + } } private void SetUserPlace(Place place) diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/ViewModels/UserCreationDialogVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/ViewModels/UserCreationDialogVM.cs deleted file mode 100644 index 08762ac96..000000000 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/ViewModels/UserCreationDialogVM.cs +++ /dev/null @@ -1,74 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using SimpleValidator.Extensions; -using Tango.SharedUI; - -namespace Tango.MachineStudio.UsersAndRoles.ViewModels -{ - public class UserCreationDialogVM : DialogViewVM - { - private static Random rnd = new Random(); - - private String _email; - [Required(ErrorMessage = "Email is required")] - [EmailAddress(ErrorMessage = "Please provide a valid email")] - public String Email - { - get { return _email; } - set { _email = value; RaisePropertyChangedAuto(); InvalidateRelayCommands(); } - } - - private String _password; - public String Password - { - get { return _password; } - set { _password = value; RaisePropertyChangedAuto(); } - } - - private String _firstName; - [Required(ErrorMessage = "First name is required")] - public String FirstName - { - get { return _firstName; } - set { _firstName = value; RaisePropertyChangedAuto(); InvalidateRelayCommands(); } - } - - private String _lastName; - [Required(ErrorMessage = "Last name is required")] - public String LastName - { - get { return _lastName; } - set { _lastName = value; RaisePropertyChangedAuto(); InvalidateRelayCommands(); } - } - - protected override void Accept() - { - if (Validate()) - { - base.Accept(); - } - } - - public override void OnShow() - { - base.OnShow(); - Password = GetRandomPassword(4); - } - - private String GetRandomPassword(int count) - { - String pass = String.Empty; - - for (int i = 0; i < count; i++) - { - pass += rnd.Next(0, 9).ToString(); - } - - return pass; - } - } -} diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/Views/OrganizationManagementView.xaml b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/Views/OrganizationManagementView.xaml index a14d59949..d5a5d41d7 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/Views/OrganizationManagementView.xaml +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/Views/OrganizationManagementView.xaml @@ -82,10 +82,6 @@ - - - - - - - - - - - - EMAIL - - FIRST NAME - - LAST NAME - - - - - Provide this password to the user - - - - - diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/Views/UserCreationDialog.xaml.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/Views/UserCreationDialog.xaml.cs deleted file mode 100644 index cfa389ed1..000000000 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/Views/UserCreationDialog.xaml.cs +++ /dev/null @@ -1,28 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows; -using System.Windows.Controls; -using System.Windows.Data; -using System.Windows.Documents; -using System.Windows.Input; -using System.Windows.Media; -using System.Windows.Media.Imaging; -using System.Windows.Navigation; -using System.Windows.Shapes; - -namespace Tango.MachineStudio.UsersAndRoles.Views -{ - /// - /// Interaction logic for UserCreationDialog.xaml - /// - public partial class UserCreationDialog : UserControl - { - public UserCreationDialog() - { - InitializeComponent(); - } - } -} diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/Views/UserManagementView.xaml b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/Views/UserManagementView.xaml index 2a8621e5c..bb003f525 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/Views/UserManagementView.xaml +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/Views/UserManagementView.xaml @@ -14,15 +14,11 @@ xmlns:entities="clr-namespace:Tango.BL.Entities;assembly=Tango.BL" xmlns:local="clr-namespace:Tango.MachineStudio.UsersAndRoles.Views" xmlns:converters="clr-namespace:Tango.SharedUI.Converters;assembly=Tango.SharedUI" - xmlns:localconverters="clr-namespace:Tango.MachineStudio.UsersAndRoles.Converters" mc:Ignorable="d" d:DesignHeight="1080" d:DesignWidth="1920" d:DataContext="{d:DesignInstance Type=vm:MainViewVM, IsDesignTimeCreatable=False}" DataContext="{x:Static global:ViewModelLocator.MainViewVM}"> - - - @@ -52,7 +48,7 @@ LOGIN - + @@ -78,18 +74,12 @@ - - @@ -105,7 +95,7 @@ - + @@ -177,7 +167,7 @@ - + diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/Views/UserView.xaml b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/Views/UserView.xaml index 37f649a7a..0858d7e08 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/Views/UserView.xaml +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/Views/UserView.xaml @@ -16,6 +16,8 @@ + + diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/packages.config b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/packages.config index 8696cb880..fe4f26e87 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/packages.config +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/packages.config @@ -7,5 +7,4 @@ - \ No newline at end of file -- cgit v1.3.1