aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Modules/MachineStudio.Dispensers/ViewModels/MainViewVM.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Modules/MachineStudio.Dispensers/ViewModels/MainViewVM.cs')
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/MachineStudio.Dispensers/ViewModels/MainViewVM.cs107
1 files changed, 107 insertions, 0 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Modules/MachineStudio.Dispensers/ViewModels/MainViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/MachineStudio.Dispensers/ViewModels/MainViewVM.cs
new file mode 100644
index 000000000..db9dff355
--- /dev/null
+++ b/Software/Visual_Studio/MachineStudio/Modules/MachineStudio.Dispensers/ViewModels/MainViewVM.cs
@@ -0,0 +1,107 @@
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Tango.BL;
+using Tango.BL.Entities;
+using Tango.MachineStudio.Common;
+using System.Data.Entity;
+using Tango.MachineStudio.Common.Notifications;
+using Tango.MachineStudio.Dispensers.Contracts;
+using Tango.Core.Commands;
+
+namespace Tango.MachineStudio.Dispensers.ViewModels
+{
+ public class MainViewVM : StudioViewModel<IMainView>
+ {
+ private ObservablesContext _dbContext;
+ private ObservablesContext _activeContext;
+ private INotificationProvider _notification;
+
+ private ObservableCollection<Dispenser> _dispensers;
+ public ObservableCollection<Dispenser> Dispensers
+ {
+ get { return _dispensers; }
+ set { _dispensers = value; RaisePropertyChangedAuto(); }
+ }
+
+ private Dispenser _selectedDispenser;
+ public Dispenser SelectedDispenser
+ {
+ get { return _selectedDispenser; }
+ set { _selectedDispenser = value; RaisePropertyChangedAuto(); InvalidateRelayCommands(); }
+ }
+
+ private Dispenser _activeDispenser;
+ public Dispenser ActiveDispenser
+ {
+ get { return _activeDispenser; }
+ set { _activeDispenser = value; RaisePropertyChangedAuto(); }
+ }
+
+ private String _filter;
+ public String Filter
+ {
+ get { return _filter; }
+ set { _filter = value; RaisePropertyChangedAuto(); OnFilterChanged(); }
+ }
+
+ public RelayCommand AddDispenserCommand { get; set; }
+
+ public RelayCommand RemoveDispenserCommand { get; set; }
+
+ public RelayCommand ManageDispenserCommand { get; set; }
+
+ public RelayCommand BackToDispensersCommand { get; set; }
+
+ public RelayCommand SaveCommand { get; set; }
+
+ public MainViewVM(INotificationProvider notificationProvider)
+ {
+ _notification = notificationProvider;
+
+ ManageDispenserCommand = new RelayCommand(ManageSelectedDispenser,() => SelectedDispenser != null);
+ BackToDispensersCommand = new RelayCommand(() => { View.NavigateTo(DispensersNavigationView.DispensersView); });
+ }
+
+ private async void OnFilterChanged()
+ {
+ if (Filter != null)
+ {
+ IsFree = false;
+ Dispensers = (await _dbContext.Dispensers.Where(x => x.SerialNumber.StartsWith(Filter)).ToListAsync()).ToObservableCollection();
+ IsFree = true;
+ }
+ }
+
+ private async void ManageSelectedDispenser()
+ {
+ if (SelectedDispenser != null)
+ {
+ if (_activeContext != null)
+ {
+ _activeContext.Dispose();
+ }
+
+ using (_notification.PushTaskItem("Loading dispenser data..."))
+ {
+ _activeContext = ObservablesContext.CreateDefault();
+ ActiveDispenser = await _activeContext.Dispensers.SingleOrDefaultAsync(x => x.Guid == SelectedDispenser.Guid);
+ View.NavigateTo(DispensersNavigationView.DispenserView);
+ }
+ }
+ else
+ {
+ ActiveDispenser = null;
+ }
+ }
+
+ public async override void OnApplicationReady()
+ {
+ _dbContext = ObservablesContext.CreateDefault();
+ await _dbContext.DispenserTypes.LoadAsync();
+ }
+ }
+}