public static void InitialiseAllocatedSite(this Web value, ProvisionedSite provisionedSite, Task task, string serverRelativeUrl) { value.Title = task.SiteTitle; value.ServerRelativeUrl = serverRelativeUrl; value.DeleteListFromWebByTitle(SharePointListNames.SharedDocuments); value.Update(); }
public void ProvisionSite(int siteCollectionId, Task task) { Debug.WriteLine("Fujitsu.AFC.Services.ProvisioningService.cs -> Processing ProvisionSite."); var prfMonMethod = new PrfMon(); var siteCollection = _provisionedSiteCollectionRepository.Single(x => x.Id == siteCollectionId); var siteCollectionName = siteCollection.Name; const string sitePagesTitle = "Site Pages"; using (var context = new ClientContext(SiteCollectionUrl(siteCollection.Name))) { Debug.WriteLine("Fujitsu.AFC.Services.ProvisioningService.cs -> CreateWebLoadContextWebAndLists. Started."); var createWebLoadContextWebListsPrfMonTriggers = new PrfMon(); var guid = Guid.NewGuid().ToString(); var creation = new WebCreationInformation { Url = guid, Title = guid, WebTemplate = SiteTemplate, UseSamePermissionsAsParentSite = false }; context.Credentials = Credentials; var newWeb = context.Web.Webs.Add(creation); context.Load(newWeb, w => w.Title, w => w.Url); context.ExecuteQuery(); Debug.WriteLine("Fujitsu.AFC.Services.ProvisioningService.cs -> CreateWebLoadContextWebAndLists. Completed. Average Execution: {0:0.000}s", createWebLoadContextWebListsPrfMonTriggers.Stop()); Debug.WriteLine("Fujitsu.AFC.Services.ProvisioningService.cs -> LoadWebRootFolderAndFiles. Started."); var loadWebRootFolderAndFilesPrfMonTriggers = new PrfMon(); var sitePages = newWeb.Lists.GetByTitle(sitePagesTitle); var rootFolder = sitePages.RootFolder; var files = rootFolder.Files; var webRootFolder = newWeb.RootFolder; context.Load(webRootFolder); context.Load(rootFolder); context.Load(files); context.Load(newWeb.RegionalSettings); context.Load(newWeb.RegionalSettings.TimeZones); context.ExecuteQuery(); Debug.WriteLine("Fujitsu.AFC.Services.ProvisioningService.cs -> LoadWebRootFolderAndFiles. Completed. Average Execution: {0:0.000}s", loadWebRootFolderAndFilesPrfMonTriggers.Stop()); Debug.WriteLine("Fujitsu.AFC.Services.ProvisioningService.cs -> SetSiteLocaleAndTimeZone. Started."); var setSiteLocaleTimeZonePrfMonTriggers = new PrfMon(); newWeb.RegionalSettings.LocaleId = 2057; const string utcTimeZone = "(UTC) Coordinated Universal Time"; var timeZone = newWeb.RegionalSettings.TimeZones.FirstOrDefault(timezone => timezone.Description == utcTimeZone); if (timeZone != null) { newWeb.RegionalSettings.TimeZone = timeZone; } newWeb.RegionalSettings.Update(); context.ExecuteQuery(); Debug.WriteLine("Fujitsu.AFC.Services.ProvisioningService.cs -> SetSiteLocaleAndTimeZone. Completed. Average Execution: {0:0.000}s", setSiteLocaleTimeZonePrfMonTriggers.Stop()); Debug.WriteLine("Fujitsu.AFC.Services.ProvisioningService.cs -> AddHomePageAndAuditSiteCreation. Started."); var addHomePageAndAuditSiteCreationPrfMonTriggers = new PrfMon(); var defaultPageName = rootFolder.GetPageName(files, "default"); var defaultPageUrl = $"{rootFolder.ServerRelativeUrl}/{defaultPageName}"; rootFolder.Files.AddTemplateFile(defaultPageUrl, TemplateFileType.WikiPage); webRootFolder.WelcomePage = $"{sitePagesTitle.Replace(" ", "")}/{defaultPageName}"; webRootFolder.Update(); context.Web.AddAuditListItem(SharePointListNames.Audit, task, string.Format(TaskResources.Audit_CaseSiteProvisioning_SubSiteCreated, SiteUrl(siteCollectionName, guid))); context.ExecuteQuery(); Debug.WriteLine("Fujitsu.AFC.Services.ProvisioningService.cs -> AddHomePageAndAuditSiteCreation. Completed. Average Execution: {0:0.000}s", addHomePageAndAuditSiteCreationPrfMonTriggers.Stop()); Debug.WriteLine("Fujitsu.AFC.Services.ProvisioningService.cs -> SiteAccessPermissionsLevels. Started."); var addSiteAccessPermissionsLevelsPrfMonTriggers = new PrfMon(); context.Load(newWeb, w => w.MembersCanShare, w => w.RequestAccessEmail); context.ExecuteQuery(); newWeb.MembersCanShare = false; newWeb.RequestAccessEmail = string.Empty; newWeb.Update(); context.ExecuteQuery(); Debug.WriteLine("Fujitsu.AFC.Services.ProvisioningService.cs -> SiteAccessPermissionsLevels. Completed. Average Execution: {0:0.000}s", addSiteAccessPermissionsLevelsPrfMonTriggers.Stop()); Debug.WriteLine("Fujitsu.AFC.Services.ProvisioningService.cs -> DatabaseSynchronisation. Started."); var databaseSynchronisationPrfMonTriggers = new PrfMon(); var now = DateTime.Now; var site = new ProvisionedSite { ProvisionedSiteCollectionId = siteCollectionId, Name = guid, Url = newWeb.Url, InsertedDate = now, InsertedBy = _userIdentity.Name, UpdatedDate = now, UpdatedBy = _userIdentity.Name }; RetryableOperation.Invoke(ExceptionPolicies.General, () => { _provisionedSiteRepository.Insert(site); _unitOfWork.Save(); }); Debug.WriteLine("Fujitsu.AFC.Services.ProvisioningService.cs -> DatabaseSynchronisation. Completed. Average Execution: {0:0.000}s", databaseSynchronisationPrfMonTriggers.Stop()); } Debug.WriteLine("Fujitsu.AFC.Services.ProvisioningService.cs -> Completed Processing ProvisionSite. Duration: {0:0.000}s", prfMonMethod.Stop()); }