diff options
Diffstat (limited to 'Software/Visual_Studio/Azure/Tango.AzureUtils.UI/ViewModels/MainViewVM.cs')
| -rw-r--r-- | Software/Visual_Studio/Azure/Tango.AzureUtils.UI/ViewModels/MainViewVM.cs | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/Software/Visual_Studio/Azure/Tango.AzureUtils.UI/ViewModels/MainViewVM.cs b/Software/Visual_Studio/Azure/Tango.AzureUtils.UI/ViewModels/MainViewVM.cs new file mode 100644 index 000000000..958d1b857 --- /dev/null +++ b/Software/Visual_Studio/Azure/Tango.AzureUtils.UI/ViewModels/MainViewVM.cs @@ -0,0 +1,121 @@ +using Microsoft.Azure.Management.AppService.Fluent; +using Microsoft.Azure.Management.Fluent; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Input; +using Tango.AzureUtils.Deployment; +using Tango.AzureUtils.UI.Managers; +using Tango.Core.Commands; +using Tango.Core.DI; +using Tango.SharedUI; + +namespace Tango.AzureUtils.UI.ViewModels +{ + public class MainViewVM : AzureDashboardViewModel + { + private static string app_id = "be33437c-5052-449f-ab9d-a88d008eae24"; + private static string client_secret = "bf67fb6f-4d06-4893-988c-6b347aff23d6"; + private static string tenant_id = "2ebd63a5-bc2f-41dc-9066-4409ed5e5dd4"; + private static string subscription_id = "10c8aa60-3b15-4e0d-b412-6aeef90e5e91"; + + private IAzure _azure; + + #region Properties + + private bool _isInitialized; + public bool IsInitialized + { + get { return _isInitialized; } + set { _isInitialized = value; RaisePropertyChangedAuto(); InvalidateRelayCommands(); } + } + + private AzureUtilsProgressEventArgs _progress; + public AzureUtilsProgressEventArgs Progress + { + get { return _progress; } + set { _progress = value; RaisePropertyChangedAuto(); } + } + + #endregion + + #region Commands + + public RelayCommand InitCommand { get; set; } + + #endregion + + public MainViewVM() + { + InitCommand = new RelayCommand(Init, () => !IsInitialized); + } + + public override void OnApplicationReady() + { + StatusManager.StatusUpdated += StatusManager_StatusUpdated; + StatusManager.UpdateStatus(AzureUtilsStage.Ready, "Waiting for authentication...", false); + } + + private void StatusManager_StatusUpdated(object sender, AzureUtilsProgressEventArgs e) + { + Progress = e; + } + + public async void Init() + { + try + { + IsFree = false; + + StatusManager.UpdateStatus(AzureUtilsStage.Initializing, "Authenticating...", true); + _azure = await AzureUtilsAuthenticationFactory.AuthenticateOrGetAsync(new AzureUtilsCredentials() + { + ClientID = app_id, + ClientSecret = client_secret, + TenantID = tenant_id, + SubscriptionID = subscription_id + }); + + List<IWebAppBase> allApps = new List<IWebAppBase>(); + + StatusManager.UpdateStatus(AzureUtilsStage.Initializing, "Retrieving machine service deployment slots...", true); + + var apps = await _azure.WebApps.ListAsync(); + + foreach (var app in apps) + { + if (app.Name.Contains("Machine")) + { + allApps.Add(app); + } + + var slots = await app.DeploymentSlots.ListAsync(); + + foreach (var slot in slots) + { + if (slot.Name.Contains("Machine")) + { + allApps.Add(slot); + } + } + } + + IsInitialized = true; + + StatusManager.UpdateStatus(AzureUtilsStage.Ready, "Authenticated successfully.", false); + + TangoIOC.Default.GetAllInstancesByBase<AzureDashboardViewModel>().Where(x => x != this).ToList().ForEach(x => x.OnAuthenticated(_azure, allApps.ToList())); + } + catch (Exception ex) + { + StatusManager.UpdateStatus(ex); + } + finally + { + IsFree = true; + } + } + } +} |
