public ActionResult Index(bool isDataCamp)
        {
            // Set Visibility
            ViewBag.Day1Visible = true;
            ViewBag.Day2Visible = isDataCamp;
            ViewBag.ShowMessage = false;

            // Set Defaults - Not logged in
            ViewBag.Day1Provisioned = false;
            ViewBag.Day2Provisioned = true;

            if (ClaimsPrincipal.Current.Identity.IsAuthenticated)
            {
                // Get the Tenants linked to the user
                var tenantService = new TenantService();
                var tenants = tenantService.FetchByUsername(ClaimsPrincipal.Current.Identity.SplitName());

                ViewBag.Day1Provisioned = 
                    tenants != null && 
                    tenants.Any(t => t.ProvisioningOptionCode.Equals("S1"));

                ViewBag.Day2Provisioned = 
                    tenants == null || 
                    tenants.Any(t => t.ProvisioningOptionCode.Equals("S1") && !t.AzureServicesProvisioned) || 
                    tenants.Any(t => t.ProvisioningOptionCode.Equals("S2"));

                ViewBag.ShowMessage =
                    tenants != null &&
                    tenants.Any(t => !t.AzureServicesProvisioned);

                return PartialView();
            }

            return PartialView();
        }
        public ActionResult StartDeprovisioning()
        {
            TempData["PipelineRunning"] = true;
            TempData["Process"] = "Deprovisioning";

            var tenantService = new TenantService();
            var tenants = tenantService.FetchByUsername(HttpContext.User.Identity.SplitName());

            DeprovisionTenantSite(tenants);

            return RedirectToAction("Index", "TenantView");
        }
        private bool IsTenant(string username)
        {
            // Fix the Username
            username = username.Split('#').Last();

            // Find the user
            var command = new TenantService();
            var tenants = command.FetchByUsername(username);

            // Check if user
            return tenants != null &&tenants.Any();
        }
        public ActionResult Index()
        {
            // Get working values
            var pipelineRunning = TempData["PipelineRunning"] != null && (bool)TempData["PipelineRunning"];
            var process = TempData["Process"] != null ? TempData["Process"].ToString() : string.Empty;

            // Get data
            var tenantService = new TenantService();
            var tenants = tenantService.FetchByUsername(HttpContext.User.Identity.SplitName());

            // Build the ViewModel
            var viewModel = BuildTenantViewModel(tenants);
            AddTenantServices(viewModel, pipelineRunning, process);
            SetupViewBag(viewModel, pipelineRunning, process);

            return View(viewModel);
        }
        private static ProvisioningService Create(int tenantId, bool isAdminInterface)
        {
            // Fetch the Tenant
            var tenantService   = new TenantService();
            var scheduledTenant = tenantService.FetchByTenantId(tenantId);

            // Get Day1 Tenant Site Url
            var tenants      = tenantService.FetchByUsername(scheduledTenant.Username);
            var dayOneTenant = tenants.First(t => t.ProvisioningOptionCode.Equals("S1"));

            // Get DataCenters
            var day         = scheduledTenant.ProvisioningOptionCode.Equals("S1") ? 1 : 2;
            var util        = new ManagementUtilities();
            var dataCenters = util.GetLocations(day, Settings.AccountSubscriptionId);

            // Build Parameters
            var provisioningParameters = GetParameters(day, dataCenters, scheduledTenant, dayOneTenant, isAdminInterface);

            // Create Provisioning Service
            return(new ProvisioningService((int)scheduledTenant.ProvisioningOptionId, provisioningParameters));
        }
        private static TenantModel GetDay1Tenant()
        {
            var tenantService = new TenantService();
            var tenants = tenantService.FetchByUsername(ClaimsPrincipal.Current.Identity.SplitName());

            return tenants.First(t => t.ProvisioningOptionCode.Equals("S1"));
        }
        public ActionResult StartDeprovisioning(string username)
        {
            var tenantService = new TenantService();
            var tenants = tenantService.FetchByUsername(username);

            TempData["PipelineRunning"] = true;
            TempData["Username"] = username;

            DeprovisionTenantSite(tenants);

            return RedirectToAction("Index", "AdminView");
        }
        private static ProvisioningService Create(int tenantId, bool isAdminInterface)
        {
            // Fetch the Tenant
            var tenantService = new TenantService();
            var scheduledTenant = tenantService.FetchByTenantId(tenantId);

            // Get Day1 Tenant Site Url
            var tenants = tenantService.FetchByUsername(scheduledTenant.Username);
            var dayOneTenant = tenants.First(t => t.ProvisioningOptionCode.Equals("S1"));

            // Get DataCenters
            var day = scheduledTenant.ProvisioningOptionCode.Equals("S1") ? 1 : 2;
            var util = new ManagementUtilities();
            var dataCenters = util.GetLocations(day, Settings.AccountSubscriptionId);

            // Build Parameters
            var provisioningParameters = GetParameters(day, dataCenters, scheduledTenant, dayOneTenant, isAdminInterface);

            // Create Provisioning Service
            return new ProvisioningService((int)scheduledTenant.ProvisioningOptionId, provisioningParameters);
        }