private static void AddTenantServices(MyAccountViewModel viewModel, bool pipelineRunning, string process)
        {
            // Add each tenants services
            foreach (var userAccount in viewModel.UserAccounts)
            {
                foreach (var company in userAccount.Tenants)
                {
                    var provisioningService = ProvisioningService.CreateForAdmin(company.Id);

                    company.Services = provisioningService.GetStatusses().Select(s => new ServiceStatusViewModel()
                    {
                        StatusId = s.Id,
                        Name = s.Name,
                        Service = s.Service,
                        Status = company.AzureServicesProvisioned ? ProvisioningStatus.Deployed : ProvisioningStatus.NotDeployed
                    }).ToList();
                }

                // Update statusses
                foreach (var tenant in userAccount.Tenants)
                {
                    // Set the Status
                    if (!tenant.AzureServicesProvisioned)
                    {
                        tenant.Status = pipelineRunning
                            ? process.Equals("Provisioning") ? ProvisioningStatus.Provisioning : ProvisioningStatus.Removing
                            : ProvisioningStatus.NotDeployed;

                        tenant.Services.ForEach(s => s.Status = ProvisioningStatus.NotDeployed);
                    }
                    else
                    {
                        tenant.Status = pipelineRunning && process.Equals("Deprovisioning") ? ProvisioningStatus.Removing : ProvisioningStatus.Deployed;
                        tenant.Services.ForEach(s => s.Status = ProvisioningStatus.Deployed);
                    }
                }
            }
        }
        private void SetupViewBag(MyAccountViewModel viewModel, bool pipelineRunning, string process)
        {
            // Build up the ViewBag
            var tenants = viewModel.UserAccounts[0].Tenants;

            ViewBag.ShowOpen = tenants.All(t => t.AzureServicesProvisioned);
            ViewBag.ShowStart = tenants.Any(t => !t.AzureServicesProvisioned) && !pipelineRunning;

            ViewBag.ShowDelete = !pipelineRunning;
            ViewBag.PipelineRunning = pipelineRunning;
            ViewBag.Process = process;
        }
        private static MyAccountViewModel BuildTenantViewModel(IEnumerable<TenantModel> tenants)
        {
            // Set default
            var viewModel = new MyAccountViewModel();

            // Build the viewmodel
            if (tenants != null)
            {
                viewModel = new MyAccountViewModel()
                {
                    UserAccounts = tenants.GroupBy(u => u.Username).Select(u => new UserAccountViewModel()
                    {
                        Username = u.Key,
                        Tenants = u.Select(t => new TenantViewModel()
                        {
                            Id = t.TenantId,
                            Plan = t.ProvisioningOption,
                            Theme = t.Theme,
                            Status = t.AzureServicesProvisioned
                                ? ProvisioningStatus.Deployed
                                : ProvisioningStatus.NotDeployed,
                            AzureServicesProvisioned = t.AzureServicesProvisioned,
                        }).ToList()
                    }).ToList()
                };
            }

            return viewModel;
        }