public void CreateDemoData(DemoDate demoDate) { var baseFolderPath = Server.MapPath("~/"); var currentUsername = HttpContext.User.Identity.Name; var graphServiceToken = this.TempData.Peek("graphServiceToken").ToString(); if (demoDataProvisioningTask == null || demoDataProvisioningTask.Phase == "Completed") { demoDataProvisioningTask = new SiteProvisioningTask(); demoDataProvisioningTask.Task = Task.Factory.StartNew(async () => { try { var token = this.TempData.Peek("demoSiteToken") as string; var graphService = this.TempData.Peek("graphService") as GraphServiceClient ; using (var clientContext = this.TempData.Peek("demoSiteClientContext") as Microsoft.SharePoint.Client.ClientContext) { demoDataProvisioningTask.Phase = "provision SharePoint demo data"; demoDataProvisioningTask.Message = "The SharePoint demo data is being provisioned. This operation can take up to 20 minutes to complete. Please be patient and do not refresh the page during this process."; var siteProvisioning = new SiteProvisioning(clientContext, baseFolderPath, currentUsername, graphServiceToken); await siteProvisioning.AddSiteContentsAsync(new VideoPortalHelper(token)); siteProvisioning.UpdateInspectionAndIncidentListItems(DateTime.Parse(demoDate.date)); demoDataProvisioningTask.Phase = "provision demo users and AAD groups"; demoDataProvisioningTask.Message = "The SharePoint demo data has been provisioned successfully. Proceeding to provision Demo users and AAD groups. Please be patient and do not refresh the page during this process."; await siteProvisioning.AddGroupsAndUsersAsync(graphService, graphServiceToken); demoDataProvisioningTask.Phase = "provision o365 groups"; demoDataProvisioningTask.Message = "The demo AAD users and groups have been provisioned successfully. Proceeding to provision Office 365 Groups. Please be patient and do not refresh the page during this process."; await siteProvisioning.CreateUnifiedGroupsForPropertiesAsync(graphService, graphServiceToken); demoDataProvisioningTask.Phase = "provision demo excel"; demoDataProvisioningTask.Message = "The Office 365 Groups have been provisioned successfully. Proceeding to provision Excel Workbooks. Please be patient and do not refresh the page during this process."; await siteProvisioning.UpdateExcelGroupsForPropertiesAsync(graphService, graphServiceToken); office365groups = await GetO365DemoGroups(graphService); demoDataProvisioningTask.Phase = "Completed"; demoDataProvisioningTask.Message = "The AAD Users and Groups, Office 365 Groups, and all demo data have been successfully created. The initial password for all the users is: TempP@ssw0rd!"; } } catch (Exception ex) { demoDataProvisioningTask.Message = "An unexpected error occurred, please try again, error message: " + ex.Message; demoDataProvisioningTask.Phase = "Error"; } }); } }
public async Task<ActionResult> CreateDemoData(SuiteLevelWebApp.Models.ProvisionDemoData model) { var token = AuthenticationHelper.GetAccessTokenAsync(AppSettings.DemoSiteServiceResourceId); var graphService = AuthenticationHelper.GetGraphServiceAsync(); using (var clientContext = await AuthenticationHelper.GetDemoSiteClientContextAsync()) { var siteProvisioning = new SiteProvisioning(clientContext); await siteProvisioning.AddSiteContentsAsync(new VideoPortalHelper(await token)); siteProvisioning.UpdateInspectionAndIncidentListItems(model.DateDemo); await siteProvisioning.AddGroupsAndUsersAsync(await graphService); await siteProvisioning.CreateUnifiedGroupsForPropertiesAsync(await graphService); model.Message = "The AAD Groups, AAD Users, and demo data have been created successfully. The initial password for all the users is: TempP@ssw0rd!"; TempData["datetime"] = model; return RedirectToAction("ProvisionDemoData"); } }