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-12 17:03:38 +0200
committerRoy Ben-Shabat <Roy@Twine-s.com>2018-03-12 17:03:38 +0200
commite75cf513acb73558e948d6012b45f221c718dcf7 (patch)
tree386d3cd79048edbfb91860b6a063fba3c660fec5 /Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/ViewModels/MainViewVM.cs
parentc923d6611ffa64605879779c490a979e03daa189 (diff)
downloadTango-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.cs132
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);