diff options
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.cs | 107 |
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(); + } + } +} |
