using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Tango.BL.Entities; using Tango.Core.Commands; using Tango.Core.DI; using Tango.Integration.ExternalBridge; using Tango.PPC.Common; using Tango.PPC.Common.ExternalBridge; using Tango.PPC.Common.Navigation; namespace Tango.PPC.UI.ViewModels { [TangoCreateWhenRegistered] public class ExternalBridgeViewVM : PPCViewModel { private bool _disconnecting; private ExternalBridgeClientConnectedEventArgs _connection; public ExternalBridgeClientConnectedEventArgs Connection { get { return _connection; } set { _connection = value; RaisePropertyChangedAuto(); } } private User _user; public User User { get { return _user; } set { _user = value; RaisePropertyChangedAuto(); } } public RelayCommand CloseSessionCommand { get; set; } public ExternalBridgeViewVM() { CloseSessionCommand = new RelayCommand(CloseSession,() => !_disconnecting); } private void CloseSession() { _disconnecting = true; InvalidateRelayCommands(); ExternalBridgeService.DisconnectSession(); } public override void OnNavigatedTo() { base.OnNavigatedTo(); _disconnecting = false; InvalidateRelayCommands(); } public override void OnApplicationStarted() { ExternalBridgeService.ConnectionRequest += ExternalBridgeService_ClientConnected; ExternalBridgeService.ClientDisconnected += ExternalBridgeService_ClientDisconnected; } private void ExternalBridgeService_ClientDisconnected(object sender, EventArgs e) { InvokeUI(() => { NavigationManager.NavigateTo(NavigationView.HomeModule); }); } private void ExternalBridgeService_ClientConnected(object sender, ExternalBridgeClientConnectedEventArgs e) { if (e.Request.Password == MachineProvider.Machine.ExternalBridgePassword) { e.Confirmed = true; Connection = e; User = Adapter.Users.SingleOrDefault(x => x.Guid == e.Request.UserGuid); InvokeUI(() => { NavigationManager.NavigateTo(NavigationView.ExternalBridgeView, false); }); } } } }