using Microsoft.Azure.Management.AppService.Fluent; using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using Tango.AzureUtils.Database; using Tango.AzureUtils.FTP; using Tango.BL.Entities; namespace Tango.AzureUtils.UI.Controls { /// /// Interaction logic for WebAppPropertiesControl.xaml /// public partial class WebAppPropertiesControl : UserControl { public MachineServiceSettings Settings { get { return (MachineServiceSettings)GetValue(SettingsProperty); } set { SetValue(SettingsProperty, value); } } public static readonly DependencyProperty SettingsProperty = DependencyProperty.Register("Settings", typeof(MachineServiceSettings), typeof(WebAppPropertiesControl), new PropertyMetadata(null)); public List HostNames { get { return (List)GetValue(HostNamesProperty); } set { SetValue(HostNamesProperty, value); } } public static readonly DependencyProperty HostNamesProperty = DependencyProperty.Register("HostNames", typeof(List), typeof(WebAppPropertiesControl), new PropertyMetadata(null)); public TangoVersion TangoVersion { get { return (TangoVersion)GetValue(TangoVersionProperty); } set { SetValue(TangoVersionProperty, value); } } public static readonly DependencyProperty TangoVersionProperty = DependencyProperty.Register("TangoVersion", typeof(TangoVersion), typeof(WebAppPropertiesControl), new PropertyMetadata(null)); public FseVersion FseVersion { get { return (FseVersion)GetValue(FseVersionProperty); } set { SetValue(FseVersionProperty, value); } } public static readonly DependencyProperty FseVersionProperty = DependencyProperty.Register("FseVersion", typeof(FseVersion), typeof(WebAppPropertiesControl), new PropertyMetadata(null)); public MachineStudioVersion MachineStudioVersion { get { return (MachineStudioVersion)GetValue(MachineStudioVersionProperty); } set { SetValue(MachineStudioVersionProperty, value); } } public static readonly DependencyProperty MachineStudioVersionProperty = DependencyProperty.Register("MachineStudioVersion", typeof(MachineStudioVersion), typeof(WebAppPropertiesControl), new PropertyMetadata(null)); public String MachineServiceVersion { get { return (String)GetValue(MachineServiceVersionProperty); } set { SetValue(MachineServiceVersionProperty, value); } } public static readonly DependencyProperty MachineServiceVersionProperty = DependencyProperty.Register("MachineServiceVersion", typeof(String), typeof(WebAppPropertiesControl), new PropertyMetadata(null)); public bool IsBusy { get { return (bool)GetValue(IsBusyProperty); } set { SetValue(IsBusyProperty, value); } } public static readonly DependencyProperty IsBusyProperty = DependencyProperty.Register("IsBusy", typeof(bool), typeof(WebAppPropertiesControl), new PropertyMetadata(false)); public WebAppPropertiesControl() { InitializeComponent(); DataContextChanged += WebAppPropertiesControl_DataContextChanged; } private async void WebAppPropertiesControl_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e) { if (DataContext != null && DataContext is IWebAppBase) { IWebAppBase app = DataContext as IWebAppBase; try { IsBusy = true; TangoVersion = null; MachineStudioVersion = null; FseVersion = null; MachineServiceVersion = null; HostNames = app.HostNames.Select(x => x).ToList(); Settings = await app.GetMachineServiceSettingsAsync(false); var azure = await AzureUtilsAuthenticationFactory.AuthenticateOrGetAsync(); var databaseManager = new DatabaseManager(azure); TangoVersion = await databaseManager.GetLatestPPCVersion(app); MachineStudioVersion = await databaseManager.GetLatestMachineStudioVersion(app); FseVersion = await databaseManager.GetLatestFSEVersion(app); FtpManager ftpManager = new FtpManager(azure); MachineServiceVersion = await ftpManager.GetMachineServiceVersion(app); } catch (Exception ex) { Debug.WriteLine(ex); } finally { IsBusy = false; } } } } }