aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels
diff options
context:
space:
mode:
authorRoy Ben-Shabat <Roy@Twine-s.com>2017-12-12 19:25:15 +0200
committerRoy Ben-Shabat <Roy@Twine-s.com>2017-12-12 19:25:15 +0200
commit639cae64dd2fb5b19082a0486608c5b3066d4e78 (patch)
tree8bdf37dfff3cdfac4df2acd22d567b0c19e4078b /Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels
parent255d660e713454f01bad2c4bcc6e5051894745e8 (diff)
downloadTango-639cae64dd2fb5b19082a0486608c5b3066d4e78.tar.gz
Tango-639cae64dd2fb5b19082a0486608c5b3066d4e78.zip
Working on machine studio.
Diffstat (limited to 'Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels')
-rw-r--r--Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/AddressesViewVM.cs14
-rw-r--r--Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/DbTableViewModel.cs215
-rw-r--r--Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/DialogOpenMode.cs14
-rw-r--r--Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/MachinesViewVM.cs21
-rw-r--r--Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/MultiComboVM.cs25
-rw-r--r--Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/OrganizationsViewVM.cs26
-rw-r--r--Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/UsersViewVM.cs68
7 files changed, 383 insertions, 0 deletions
diff --git a/Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/AddressesViewVM.cs b/Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/AddressesViewVM.cs
new file mode 100644
index 000000000..009de0139
--- /dev/null
+++ b/Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/AddressesViewVM.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Tango.DAL.Observables;
+
+namespace Tango.MachineStudio.UI.ViewModels.DBViewModels
+{
+ public class AddressesViewVM : DbTableViewModel<Address>
+ {
+
+ }
+}
diff --git a/Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/DbTableViewModel.cs b/Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/DbTableViewModel.cs
new file mode 100644
index 000000000..5ec0e06de
--- /dev/null
+++ b/Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/DbTableViewModel.cs
@@ -0,0 +1,215 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Tango.Core.Commands;
+using Tango.DAL.Observables;
+using Tango.MachineStudio.UI.Managers;
+using Tango.SharedUI;
+
+namespace Tango.MachineStudio.UI.ViewModels.DBViewModels
+{
+ public abstract class DbTableViewModel<T> : ViewModel where T : IObservableEntity
+ {
+ private T _editEntity;
+ /// <summary>
+ /// Gets or sets the edit entity.
+ /// </summary>
+ public T EditEntity
+ {
+ get { return _editEntity; }
+ set { _editEntity = value; RaisePropertyChangedAuto(); }
+ }
+
+ private DialogOpenMode _dialogOpenMode;
+ /// <summary>
+ /// Gets or sets the dialog open mode.
+ /// </summary>
+ public DialogOpenMode DialogOpenMode
+ {
+ get { return _dialogOpenMode; }
+ set { _dialogOpenMode = value; RaisePropertyChangedAuto(); }
+ }
+
+ private bool _isDialogOpen;
+ /// <summary>
+ /// Gets or sets a value indicating whether this instance is dialog open.
+ /// </summary>
+ public bool IsDialogOpen
+ {
+ get { return _isDialogOpen; }
+ set { _isDialogOpen = value; RaisePropertyChangedAuto(); }
+ }
+
+ private ObservablesEntitiesAdapter _adapter;
+ /// <summary>
+ /// Gets or sets the DB adapter.
+ /// </summary>
+ public ObservablesEntitiesAdapter Adapter
+ {
+ get { return _adapter; }
+ set { _adapter = value; RaisePropertyChangedAuto(); }
+ }
+
+ private T _selectedEntity;
+ /// <summary>
+ /// Gets or sets the selected entity.
+ /// </summary>
+ public T SelectedEntity
+ {
+ get { return _selectedEntity; }
+ set { _selectedEntity = value; RaisePropertyChangedAuto(); }
+ }
+
+ private String _filter;
+ /// <summary>
+ /// Gets or sets the search filter.
+ /// </summary>
+ public String Filter
+ {
+ get { return _filter; }
+ set { _filter = value; RaisePropertyChangedAuto(); OnFilterChanged(value); }
+ }
+
+ /// <summary>
+ /// Gets or sets the dialog OK command.
+ /// </summary>
+ public RelayCommand DialogOKCommand { get; set; }
+
+ /// <summary>
+ /// Gets or sets the dialog cancel command.
+ /// </summary>
+ public RelayCommand DialogCancelCommand { get; set; }
+
+ /// <summary>
+ /// Gets or sets the add command.
+ /// </summary>
+ public RelayCommand AddCommand { get; set; }
+
+ /// <summary>
+ /// Gets or sets the edit command.
+ /// </summary>
+ public RelayCommand EditCommand { get; set; }
+
+ /// <summary>
+ /// Gets or sets the delete command.
+ /// </summary>
+ public RelayCommand DeleteCommand { get; set; }
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="DbTableViewModel"/> class.
+ /// </summary>
+ public DbTableViewModel() : base()
+ {
+ Adapter = App.DbAdapter;
+
+ AddCommand = new RelayCommand(OnAdd);
+ EditCommand = new RelayCommand(OnEdit);
+ DeleteCommand = new RelayCommand(OnDelete);
+ DialogOKCommand = new RelayCommand(() => OnDialogOKPressed(DialogOpenMode, EditEntity));
+ DialogCancelCommand = new RelayCommand(() => OnDialogCancelPressed(DialogOpenMode, EditEntity));
+
+ IsDialogOpen = false;
+ }
+
+ /// <summary>
+ /// Called when delete command invoked.
+ /// </summary>
+ protected virtual void OnDelete()
+ {
+ SelectedEntity.Deleted = true;
+ Adapter.SaveChanges();
+ }
+
+ /// <summary>
+ /// Called when edit command invoked.
+ /// </summary>
+ protected virtual void OnEdit()
+ {
+ DialogOpenMode = DialogOpenMode.Editing;
+ EditEntity = GetEditableEntity(DialogOpenMode);
+ DialogsManager.ShowDialog(DialogOpenMode, this);
+ IsDialogOpen = true;
+ }
+
+ /// <summary>
+ /// Called when add command invoked.
+ /// </summary>
+ protected virtual void OnAdd()
+ {
+ DialogOpenMode = DialogOpenMode.Adding;
+ EditEntity = GetEditableEntity(DialogOpenMode);
+ DialogsManager.ShowDialog(DialogOpenMode, this);
+ IsDialogOpen = true;
+ }
+
+ /// <summary>
+ /// Called when dialog closes with OK button.
+ /// </summary>
+ /// <param name="mode">The mode.</param>
+ protected virtual void OnDialogOKPressed(DialogOpenMode mode, T entity)
+ {
+ if (mode == DialogOpenMode.Editing)
+ {
+ entity.ShallowCopyTo(SelectedEntity);
+ entity = SelectedEntity;
+ }
+
+ OnBeforeEntitySave(mode, entity);
+
+ entity.Save(Adapter);
+ Adapter.SaveChanges();
+ IsDialogOpen = false;
+ SelectedEntity = EditEntity;
+ }
+
+ /// <summary>
+ /// Called when [before entity save].
+ /// </summary>
+ /// <param name="mode">The mode.</param>
+ /// <param name="entity">The entity.</param>
+ protected virtual void OnBeforeEntitySave(DialogOpenMode mode,T entity)
+ {
+
+ }
+
+ /// <summary>
+ /// Called when dialog closes with cancel button.
+ /// </summary>
+ /// <param name="mode">The mode.</param>
+ protected virtual void OnDialogCancelPressed(DialogOpenMode mode, T entity)
+ {
+ IsDialogOpen = false;
+ }
+
+ /// <summary>
+ /// Gets the editable entity.
+ /// </summary>
+ /// <param name="mode">The mode.</param>
+ /// <returns></returns>
+ private T GetEditableEntity(DialogOpenMode mode)
+ {
+ if (mode == DialogOpenMode.Adding)
+ {
+ var newEntity = Activator.CreateInstance<T>();
+ InitializeEntity(newEntity);
+ return newEntity;
+ }
+ else
+ {
+ return SelectedEntity.ShallowClone();
+ }
+ }
+
+ protected virtual void OnFilterChanged(String filter)
+ {
+
+ }
+
+ protected virtual void InitializeEntity(T entity)
+ {
+
+ }
+ }
+}
diff --git a/Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/DialogOpenMode.cs b/Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/DialogOpenMode.cs
new file mode 100644
index 000000000..9c6dbe807
--- /dev/null
+++ b/Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/DialogOpenMode.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Tango.MachineStudio.UI.ViewModels.DBViewModels
+{
+ public enum DialogOpenMode
+ {
+ Editing,
+ Adding,
+ }
+}
diff --git a/Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/MachinesViewVM.cs b/Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/MachinesViewVM.cs
new file mode 100644
index 000000000..c008f1124
--- /dev/null
+++ b/Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/MachinesViewVM.cs
@@ -0,0 +1,21 @@
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Tango.Core.Commands;
+using Tango.DAL.Observables;
+using Tango.SharedUI;
+
+namespace Tango.MachineStudio.UI.ViewModels.DBViewModels
+{
+ public class MachinesViewVM : DbTableViewModel<Machine>
+ {
+ protected override void InitializeEntity(Machine entity)
+ {
+ base.InitializeEntity(entity);
+ entity.ProductionDate = DateTime.Now;
+ }
+ }
+}
diff --git a/Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/MultiComboVM.cs b/Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/MultiComboVM.cs
new file mode 100644
index 000000000..dc3488282
--- /dev/null
+++ b/Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/MultiComboVM.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Tango.SharedUI;
+
+namespace Tango.MachineStudio.UI.ViewModels.DBViewModels
+{
+ public class MultiComboVM<T> : EntityViewModel<T>
+ {
+ public MultiComboVM(T entity) : base(entity)
+ {
+
+ }
+
+ private bool _isSelected;
+
+ public bool IsSelected
+ {
+ get { return _isSelected; }
+ set { _isSelected = value; RaisePropertyChangedAuto(); }
+ }
+ }
+}
diff --git a/Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/OrganizationsViewVM.cs b/Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/OrganizationsViewVM.cs
new file mode 100644
index 000000000..6a2fd73df
--- /dev/null
+++ b/Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/OrganizationsViewVM.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Tango.DAL.Observables;
+
+namespace Tango.MachineStudio.UI.ViewModels.DBViewModels
+{
+ public class OrganizationsViewVM : DbTableViewModel<Organization>
+ {
+ public OrganizationsViewVM() : base()
+ {
+
+ }
+
+ protected override void OnFilterChanged(string filter)
+ {
+ Adapter.OrganizationsViewSource.Filter = (x) =>
+ {
+ var org = x as Organization;
+ return org.Name.Contains(filter);
+ };
+ }
+ }
+}
diff --git a/Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/UsersViewVM.cs b/Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/UsersViewVM.cs
new file mode 100644
index 000000000..22ddef4e0
--- /dev/null
+++ b/Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/UsersViewVM.cs
@@ -0,0 +1,68 @@
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Tango.DAL.Observables;
+
+namespace Tango.MachineStudio.UI.ViewModels.DBViewModels
+{
+ public class UsersViewVM : DbTableViewModel<User>
+ {
+ private ObservableCollection<MultiComboVM<Role>> _selectedRoles;
+ public ObservableCollection<MultiComboVM<Role>> SelectedRoles
+ {
+ get { return _selectedRoles; }
+ set { _selectedRoles = value; RaisePropertyChangedAuto(); }
+ }
+
+ public UsersViewVM() : base()
+ {
+ SelectedRoles = new ObservableCollection<MultiComboVM<Role>>();
+ }
+
+ protected override void OnEdit()
+ {
+ SelectedRoles = Adapter.Roles.Select(x => new MultiComboVM<Role>(x)).ToObservableCollection();
+
+ foreach (var role in SelectedRoles)
+ {
+ if (SelectedEntity.UsersRoles.ToList().Exists(x => x.Role == role.Entity && !x.Deleted))
+ {
+ role.IsSelected = true;
+ }
+ }
+
+ base.OnEdit();
+ }
+
+ protected override void OnBeforeEntitySave(DialogOpenMode mode, User user)
+ {
+ base.OnBeforeEntitySave(mode, user);
+
+ foreach (var role in SelectedRoles)
+ {
+ var userRole = user.UsersRoles.SingleOrDefault(x => x.Role == role.Entity);
+
+ if (userRole != null)
+ {
+ userRole.Deleted = !role.IsSelected;
+ }
+ else
+ {
+ if (role.IsSelected)
+ {
+ user.UsersRoles.Add(new UsersRole()
+ {
+ Role = role.Entity,
+ User = user,
+ RoleGuid = role.Entity.Guid,
+ UserGuid = user.Guid
+ });
+ }
+ }
+ }
+ }
+ }
+}