aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/TechGraphController.cs
blob: ca132095c4124f8859b7c5f18126e94051279297 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using RealTimeGraphX;
using RealTimeGraphX.DataPoints;
using RealTimeGraphX.Renderers;
using RealTimeGraphX.WPF;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Tango.MachineStudio.Technician
{
    public class TechGraphController : WpfGraphController<TimeSpanDataPoint, DoubleDataPoint>
    {
        public TechGraphController(int refreshRate = 50)
        {
            RefreshRate = TimeSpan.FromMilliseconds(50);
        }
    }
}
Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
using Microsoft.Azure.Management.AppService.Fluent;
using Microsoft.Azure.Management.Fluent;
using System;
using System.Collections.Generic;
using System.Configuration;
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.Cryptography;
using Tango.Core.DI;
using Tango.SharedUI;

namespace Tango.AzureUtils.UI.ViewModels
{
    public class MainViewVM : AzureDashboardViewModel
    {
        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(); }
        }

        private String _email;
        public String Email
        {
            get { return _email; }
            set { _email = value; RaisePropertyChangedAuto(); InvalidateRelayCommands(); }
        }

        private String _password;
        public String Password
        {
            get { return _password; }
            set { _password = value; RaisePropertyChangedAuto(); InvalidateRelayCommands(); }
        }


        #endregion

        #region Commands

        public RelayCommand InitCommand { get; set; }

        #endregion

        public MainViewVM()
        {
            InitCommand = new RelayCommand(Init, () => !IsInitialized && !String.IsNullOrWhiteSpace(Email) && !String.IsNullOrWhiteSpace(Password));

            try
            {
                Email = Settings.Email;
                Password = Settings.Password;
            }
            catch { }
        }

        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(ConfigurationManager.AppSettings.Get("GatewayUrl"), Email, Password);

                Settings.Email = Email;
                Settings.Password = Password;
                Settings.Save();


                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;
            }
        }
    }
}