public Web Load(ClientContext context, ICredentials credentials) { Debug.WriteLine("Fujitsu.AFC.Services.ContextService.cs -> Load. Started."); var loadContextWebListsPrfMonTriggers = new PrfMon(); var web = context.LoadWebContextWebsAndLists(credentials); loadContextWebListsPrfMonTriggers.Stop(); Debug.WriteLine("Fujitsu.AFC.Services.ContextService.cs -> Completed Processing Load. Duration: {0:0.000}s", loadContextWebListsPrfMonTriggers.Stop()); return(web); }
public int UpdatePinWithDictionaryValues(Task task) { Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> Processing UpdatePinWithDictionaryValues."); var prfMonMethod = new PrfMon(); var site = _siteRepository.Single(x => x.Pin == task.Pin.Value); using (var context = new ClientContext(SiteCollectionUrl(site.ProvisionedSite.ProvisionedSiteCollection.Name))) { var web = _contextService.Load(context, Credentials); Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> UpdateDocumentLibraryMetaData. Started."); var loadPinDocumentListContentTypesAndFieldsPrfMonTriggers = new PrfMon(); var spSite = web.Webs.Single(x => x.Url == site.Url); var documentLibraryList = spSite.Lists.GetByTitle(SharePointListNames.PinDocuments); context.Load(documentLibraryList, d => d.Id, d => d.Fields); context.ExecuteQuery(); var dictionary = context.UpdateDocumentLibraryMetaData(documentLibraryList, spSite, site.Dictionary, task.Dictionary); Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> UpdateDocumentLibraryMetaData. Completed. Average Execution: {0:0.000}s", loadPinDocumentListContentTypesAndFieldsPrfMonTriggers.Stop()); Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> DatabaseSynchronisation. Started."); var databaseSynchronisationPrfMonTriggers = new PrfMon(); site.Dictionary = dictionary; site.UpdatedDate = DateTime.Now; site.UpdatedBy = _userIdentity.Name; _siteService.Update(site); Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> DatabaseSynchronisation. Completed. Average Execution: {0:0.000}s", databaseSynchronisationPrfMonTriggers.Stop()); _contextService.Audit(context, task, string.Format(TaskResources.Audit_UpdatePinWithDictionaryValues, site.Pin)); } Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> Completed Processing UpdatePinWithDictionaryValues. Duration: {0:0.000}s", prfMonMethod.Stop()); return(site.Id); }
public void Execute(Task task) { Debug.WriteLine("Fujitsu.AFC.Operations.AllocateCase.cs -> Processing Started."); var prfMonMethod = new PrfMon(); if (task.Pin == null) { var message = string.Format(TaskResources.OperationsTaskRequest_InvalidRequestNoPin, task.Name); _taskService.CompleteUnrecoverableTaskException(task, message); throw new UnRecoverableErrorException(message); } if (task.ProjectId == null) { var message = string.Format(TaskResources.OperationsTaskRequest_InvalidRequestNoProjectId, task.Name, task.Pin.Value); _taskService.CompleteUnrecoverableTaskException(task, message); throw new UnRecoverableErrorException(message); } if (task.CaseId == null) { var message = string.Format(TaskResources.OperationsTaskRequest_InvalidRequestNoCaseId, task.Name, task.Pin.Value); _taskService.CompleteUnrecoverableTaskException(task, message); throw new UnRecoverableErrorException(message); } if (task.CaseTitle == null) { var message = string.Format(TaskResources.OperationsTaskRequest_InvalidRequestNoCaseTitle, task.Name, task.Pin.Value, task.CaseId.Value); _taskService.CompleteUnrecoverableTaskException(task, message); throw new UnRecoverableErrorException(message); } if (task.IsPrimary == null) { var message = string.Format(TaskResources.OperationsTaskRequest_InvalidRequestNoIsPrimary, task.Name, task.Pin.Value, task.CaseId.Value); _taskService.CompleteUnrecoverableTaskException(task, message); throw new UnRecoverableErrorException(message); } if (!task.Dictionary.IsValidXml()) { var message = string.Format(TaskResources.OperationsTaskRequest_InvalidDictionaryXML, task.Name, task.Pin.Value); _taskService.CompleteUnrecoverableTaskException(task, message); throw new UnRecoverableErrorException(message); } if (!_siteService.Query(x => x.Pin == task.Pin.Value).Any()) { var message = string.Format(TaskResources.OperationsTaskRequest_PinDoesNotExist, task.Name, task.Pin.Value); _taskService.CompleteUnrecoverableTaskException(task, message); throw new UnRecoverableErrorException(message); } if (_libraryService.Query(x => x.CaseId == task.CaseId.Value).Any()) { var message = string.Format(TaskResources.OperationsTaskRequest_CaseIdAlreadyExists, task.Name, task.Pin.Value, task.CaseId.Value); _taskService.CompleteUnrecoverableTaskException(task, message); throw new UnRecoverableErrorException(message); } if (_taskService.PendingMergeFromPinOperation(task.Pin.Value, task.InsertedDate)) { var message = string.Format(TaskResources.OperationsTaskRequest_MergePinRequestPending, task.Name, task.Pin.Value); _taskService.CompleteUnrecoverableTaskException(task, message); throw new UnRecoverableErrorException(message); } task.SiteId = _caseService.AllocateCase(task); Debug.WriteLine("Fujitsu.AFC.Operations.AllocateCase.cs -> Completed Processing - PIN: {0} ProjectId: {1} CaseId: {2} CaseTitle {3} Duration: {4:0.000}s", task.Pin.Value, task.ProjectId.Value, task.CaseId.Value, task.CaseTitle, prfMonMethod.Stop()); }
public void Execute(Task task) { Debug.WriteLine("Fujitsu.AFC.Operations.AllocatePin.cs -> Processing Started."); var prfMonMethod = new PrfMon(); if (task.Pin == null) { var message = string.Format(TaskResources.OperationsTaskRequest_InvalidRequestNoPin, task.Name); _taskService.CompleteUnrecoverableTaskException(task, message); throw new UnRecoverableErrorException(message); } if (task.SiteTitle.IsNullOrEmpty()) { var message = string.Format(TaskResources.OperationsTaskRequest_InvalidRequestNoSiteTitle, task.Name, task.Pin.Value); _taskService.CompleteUnrecoverableTaskException(task, message); throw new UnRecoverableErrorException(message); } if (string.IsNullOrEmpty(task.Dictionary)) { var message = string.Format(TaskResources.OperationsTaskRequest_InvalidRequestNoDictionaryXML, task.Name); _taskService.CompleteUnrecoverableTaskException(task, message); throw new UnRecoverableErrorException(message); } if (!task.Dictionary.IsValidXml()) { var message = string.Format(TaskResources.OperationsTaskRequest_InvalidDictionaryXML, task.Name, task.Pin.Value); _taskService.CompleteUnrecoverableTaskException(task, message); throw new UnRecoverableErrorException(message); } if (_provisioningService.GetNumberOfUnallocatedSites() == 0) { throw new ApplicationException(string.Format(TaskResources.OperationsTaskRequest_NoUnallocatedSitesAvailable, task.Name, task.Pin.Value)); } if (_siteService.Query(x => x.Pin == task.Pin.Value).Any()) { var message = string.Format(TaskResources.OperationsTaskRequest_PinAlreadyExists, task.Name, task.Pin.Value); _taskService.CompleteUnrecoverableTaskException(task, message); throw new UnRecoverableErrorException(message); } if (_taskService.PendingAllocatePinOperation(task.Pin.Value, task.InsertedDate)) { var message = string.Format(TaskResources.OperationsTaskRequest_PinRequestPending, task.Name, task.Pin.Value); _taskService.CompleteUnrecoverableTaskException(task, message); throw new UnRecoverableErrorException(message); } task.SiteId = _pinService.AllocatePin(task); Debug.WriteLine("Fujitsu.AFC.Operations.AllocatePin.cs -> Completed Processing - PIN: {0} SiteTitle: {1} Duration: {2:0.000}s", task.Pin.Value, task.SiteTitle, prfMonMethod.Stop()); }
public int UpdateCaseWithDictionaryValues(Task task) { Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> Processing UpdateCaseWithDictionaryValues."); var prfMonMethod = new PrfMon(); var library = _libraryRepository.Single(x => x.CaseId == task.CaseId.Value); using (var context = new ClientContext(SiteCollectionUrl(library.Site.ProvisionedSite.ProvisionedSiteCollection.Name))) { var web = _contextService.Load(context, Credentials); Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> UpdateDocumentLibraryMetaData. Started."); var documentLibraryMetaDataPrfMonTriggers = new PrfMon(); var spSite = web.Webs.Single(x => x.Url == library.Site.Url); var documentLibraryList = spSite.Lists.GetById(library.ListId); context.Load(documentLibraryList, d => d.Id, d => d.Fields); web.AddAuditListItem(SharePointListNames.Audit, task, string.Format(TaskResources.Audit_UpdateCaseWithDictionaryValues, library.Site.Pin, library.CaseId)); context.ExecuteQuery(); var dictionary = context.UpdateDocumentLibraryMetaData(documentLibraryList, spSite, library.Dictionary, task.Dictionary); Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> UpdateDocumentLibraryMetaData. Completed. Average Execution: {0:0.000}s", documentLibraryMetaDataPrfMonTriggers.Stop()); _contextService.Audit(context, task, string.Format(TaskResources.Audit_ArchiveCase, library.Site.Pin, library.CaseId, library.Title)); Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> DatabaseSynchronisation. Started."); var databaseSynchronisationPrfMonTriggers = new PrfMon(); library.Dictionary = dictionary; library.UpdatedDate = DateTime.Now; library.UpdatedBy = _userIdentity.Name; _libraryService.Update(library); Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> DatabaseSynchronisation. Completed. Average Execution: {0:0.000}s", databaseSynchronisationPrfMonTriggers.Stop()); } Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> Completed Processing UpdateCaseWithDictionaryValues. Duration: {0:0.000}s", prfMonMethod.Stop()); return(library.SiteId); }
public void DeleteCase(Task task) { Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> Processing DeleteCase."); var prfMonMethod = new PrfMon(); var library = _libraryRepository.Single(x => x.CaseId == task.CaseId.Value); using (var context = new ClientContext(SiteCollectionUrl(library.Site.ProvisionedSite.ProvisionedSiteCollection.Name))) { var web = _contextService.Load(context, Credentials); Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> DeleteDocumentLibrary. Started."); var deleteDocumentLibraryPrfMonTriggers = new PrfMon(); var spSite = web.Webs.Single(x => x.Url == library.Site.Url); var documentLibraryList = spSite.Lists.GetById(library.ListId); context.Load(documentLibraryList); documentLibraryList.DeleteObject(); context.ExecuteQuery(); Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> DeleteDocumentLibrary. Completed. Average Execution: {0:0.000}s", deleteDocumentLibraryPrfMonTriggers.Stop()); _contextService.Audit(context, task, string.Format(TaskResources.Audit_DeleteCase, library.Site.Pin, library.CaseId, library.Title)); Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> DatabaseSynchronisation. Started."); var databaseSynchronisationPrfMonTriggers = new PrfMon(); _libraryService.Delete(library); Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> DatabaseSynchronisation. Completed. Average Execution: {0:0.000}s", databaseSynchronisationPrfMonTriggers.Stop()); } Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> Completed Processing DeleteCase. Duration: {0:0.000}s", prfMonMethod.Stop()); }
public void UpdateCaseTitleByProject(Task task) { Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> Processing UpdateCaseTitleByProject."); var prfMonMethod = new PrfMon(); var siteCollectionLibraries = _libraryService.GetSiteCollectionLibraryDictionary(task); if (siteCollectionLibraries.Any()) { foreach (var siteCollection in siteCollectionLibraries) { using (var context = new ClientContext(SiteCollectionUrl(siteCollection.Key))) { var web = _contextService.Load(context, Credentials); foreach (var library in siteCollection.Value) { Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> LoadDocumentLibraryListAndUpdateMetaData. Started."); var documentLibraryMetaDataPrfMonTriggers = new PrfMon(); var spSite = web.Webs.Single(x => x.Url == library.Site.Url); var documentLibraryList = spSite.Lists.GetById(library.ListId); context.Load(documentLibraryList, d => d.Id, d => d.Title, d => d.ContentTypes, d => d.Fields); context.ExecuteQuery(); var dictionary = context.UpdateDocumentLibraryMetaData(documentLibraryList, spSite, library.Dictionary, task.Dictionary); Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> LoadDocumentLibraryList. Completed. Average Execution: {0:0.000}s", documentLibraryMetaDataPrfMonTriggers.Stop()); Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> UpdateDocumentLibraryListTitleAndAuditOperation. Started."); var updateDocumentLibraryListTitleAndAuditOperationPrfMonTriggers = new PrfMon(); documentLibraryList.Title = documentLibraryList.Title.UpdateTitle(task.ProjectName); documentLibraryList.Update(); context.ExecuteQuery(); Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> UpdateDocumentLibraryListTitleAndAuditOperation. Completed. Average Execution: {0:0.000}s", updateDocumentLibraryListTitleAndAuditOperationPrfMonTriggers.Stop()); _contextService.Audit(context, task, string.Format(TaskResources.Audit_UpdateCaseTitleByProject, task.ProjectId, library.Site.Pin, library.CaseId, library.Title, documentLibraryList.Title)); Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> DatabaseSynchronisation. Started."); var databaseSynchronisationPrfMonTriggers = new PrfMon(); library.Title = task.ProjectName; library.Dictionary = dictionary; library.UpdatedDate = DateTime.Now; library.UpdatedBy = _userIdentity.Name; _libraryService.Update(library); Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> DatabaseSynchronisation. Completed. Average Execution: {0:0.000}s", databaseSynchronisationPrfMonTriggers.Stop()); } } } } Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> Completed Processing UpdateCaseTitleByProject. Duration: {0:0.000}s", prfMonMethod.Stop()); }
public void Execute(Task task) { Debug.WriteLine("Fujitsu.AFC.Operations.UpdatePinWithDictionaryValues.cs -> Processing Started."); var prfMonMethod = new PrfMon(); if (task.Pin == null) { var message = string.Format(TaskResources.OperationsTaskRequest_InvalidRequestNoPin, task.Name); _taskService.CompleteUnrecoverableTaskException(task, message); throw new UnRecoverableErrorException(message); } if (string.IsNullOrEmpty(task.Dictionary)) { var message = string.Format(TaskResources.OperationsTaskRequest_InvalidRequestNoDictionaryXML, task.Name); _taskService.CompleteUnrecoverableTaskException(task, message); throw new UnRecoverableErrorException(message); } if (!task.Dictionary.IsValidXml()) { var message = string.Format(TaskResources.OperationsTaskRequest_InvalidDictionaryXML, task.Name, task.Pin.Value); _taskService.CompleteUnrecoverableTaskException(task, message); throw new UnRecoverableErrorException(message); } if (!_siteService.Query(x => x.Pin == task.Pin.Value).Any()) { var message = string.Format(TaskResources.OperationsTaskRequest_PinDoesNotExist, task.Name, task.Pin.Value); _taskService.CompleteUnrecoverableTaskException(task, message); throw new UnRecoverableErrorException(message); } task.SiteId = _pinService.UpdatePinWithDictionaryValues(task); Debug.WriteLine("Fujitsu.AFC.Operations.UpdatePinWithDictionaryValues.cs -> Completed Processing - PIN: {0} Duration: {1:0.000}s", task.Pin.Value, prfMonMethod.Stop()); }
public void Execute(Task task) { Debug.WriteLine("Fujitsu.AFC.Operations.DeleteCase.cs -> Processing Started."); var prfMonMethod = new PrfMon(); var retentionPeriodInDays = _parameterService.GetParameterByNameAndCache <int>(ParameterNames.DigitialCaseFileRetentionPeriodInWeeks) * 7; foreach (var library in _libraryService.Query(x => x.IsClosed).ToList().Where(y => DateTime.Now > y.UpdatedDate.AddDays(retentionPeriodInDays))) { task.CaseId = library.CaseId; _caseService.DeleteCase(task); } Debug.WriteLine("Fujitsu.AFC.Operations.DeleteCase.cs -> Completed Processing - Duration: {0:0.000}s", prfMonMethod.Stop()); }
static void Main(string[] args) { System.Console.WriteLine(@"Fujitsu.SLM.CustomerMigration.Console.cs -> Main. Started."); var customerMigrationMainPrfMon = new PrfMon(); var copyFunction = new CopyFunction(); copyFunction.Execute(); System.Console.WriteLine(@"Fujitsu.SLM.CustomerMigration.Console.cs -> Main Completed. Average Execution: {0:0.000}s", customerMigrationMainPrfMon.Stop()); System.Console.ReadLine(); }
public void RestictUser(Task task) { Debug.WriteLine("Fujitsu.AFC.Services.UserService.cs -> Processing RestictUser."); var prfMonMethod = new PrfMon(); var site = _siteRepository.Single(x => x.Pin == task.Pin.Value); using (var context = new ClientContext(SiteCollectionUrl(site.ProvisionedSite.ProvisionedSiteCollection.Name))) { var web = _contextService.Load(context, Credentials); Debug.WriteLine("Fujitsu.AFC.Services.UserService.cs -> PinSitePermissionsUserChecking. Started."); var pinSitePermissionsPrfMonTriggers = new PrfMon(); var spSite = web.Webs.Single(x => x.Url == site.Url); var colGroup = spSite.SiteGroups; context.Load(colGroup); context.ExecuteQuery(); var spPinMembersGroup = colGroup.GetByName(string.Format(SharePointPinGroupNames.PinMembers, task.Pin.Value)); var spPinVisitorsGroup = colGroup.GetByName(string.Format(SharePointPinGroupNames.PinVisitors, task.Pin.Value)); context.Load(spPinMembersGroup.Users, x => x.Include(u => u.Id, u => u.PrincipalType, u => u.Title)); context.Load(spPinVisitorsGroup.Users, x => x.Include(u => u.Id, u => u.PrincipalType, u => u.Title)); context.ExecuteQuery(); var contributorUsers = spPinMembersGroup.Users.Where(u => u.PrincipalType == PrincipalType.SecurityGroup && u.Title.EndsWith("_CONTRIBUTE") || u.Title.EndsWith("_CONTRIBUTE_CLOSED")).ToList(); context.RestrictPinGroupPermissions(contributorUsers, spPinMembersGroup, task.Pin.Value.ToString(), false); var visitorUsers = spPinVisitorsGroup.Users.Where(u => u.PrincipalType == PrincipalType.SecurityGroup && u.Title.EndsWith("_READ")).ToList(); context.RestrictPinGroupPermissions(visitorUsers, spPinVisitorsGroup, task.Pin.Value.ToString(), false); context.ExecuteQuery(); Debug.WriteLine("Fujitsu.AFC.Services.UserService.cs -> PinSitePermissionsUserChecking. Completed. Average Execution: {0:0.000}s", pinSitePermissionsPrfMonTriggers.Stop()); Debug.WriteLine("Fujitsu.AFC.Services.UserService.cs -> CaseDocumentLibraryPermissionsUserChecking. Started."); var caseDocumentLibraryPermissionsPrfMonTriggers = new PrfMon(); var libraries = _libraryRepository.Query(x => x.SiteId == site.Id).ToList(); var contributorClosedGroupName = _parameterService.GetParameterByNameAndCache <string>(ParameterNames.ActiveDirectoryContributeClosedGroup); var contributorGroupName = _parameterService.GetParameterByNameAndCache <string>(ParameterNames.ActiveDirectoryContributeGroup); context.RestrictDocumentLibraryContributePermissions(web, spSite, libraries, task.Pin.Value, contributorGroupName, contributorClosedGroupName, false); Debug.WriteLine("Fujitsu.AFC.Services.UserService.cs -> CaseDocumentLibraryPermissionsUserChecking. Completed. Average Execution: {0:0.000}s", caseDocumentLibraryPermissionsPrfMonTriggers.Stop()); Debug.WriteLine("Fujitsu.AFC.Services.UserService.cs -> RestrictUser. Started."); var restrictUserPrfMonTriggers = new PrfMon(); context.RestrictPinGroupPermissions(contributorUsers, spPinMembersGroup, task.Pin.Value.ToString(), true); context.RestrictPinGroupPermissions(visitorUsers, spPinVisitorsGroup, task.Pin.Value.ToString(), true); context.RestrictDocumentLibraryContributePermissions(web, spSite, libraries, task.Pin.Value, contributorGroupName, contributorClosedGroupName, true); Debug.WriteLine("Fujitsu.AFC.Services.UserService.cs -> RestrictUser. Completed. Average Execution: {0:0.000}s", restrictUserPrfMonTriggers.Stop()); _contextService.Audit(context, task, string.Format(TaskResources.Audit_RestrictUser, task.Pin.Value)); Debug.WriteLine("Fujitsu.AFC.Services.UserService.cs -> DatabaseSynchronisation. Started."); var databaseSynchronisationPrfMonTriggers = new PrfMon(); site.RestrictedUser = true; site.UpdatedDate = DateTime.Now; site.UpdatedBy = _userIdentity.Name; RetryableOperation.Invoke(ExceptionPolicies.General, () => { _siteRepository.Update(site); _unitOfWork.Save(); }); Debug.WriteLine("Fujitsu.AFC.Services.UserService.cs -> DatabaseSynchronisation. Completed. Average Execution: {0:0.000}s", databaseSynchronisationPrfMonTriggers.Stop()); } Debug.WriteLine("Fujitsu.AFC.Services.UserService.cs -> Completed Processing RestictUser. Duration: {0:0.000}s", prfMonMethod.Stop()); }
public void MergePin(Task task) { Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> Processing MergePin."); var prfMonMethod = new PrfMon(); var fromSite = _siteRepository.Single(x => x.Pin == task.FromPin.Value); var toSite = _siteRepository.Single(x => x.Pin == task.ToPin.Value); var fromSiteDocumentLibraries = _libraryRepository.Query(x => x.SiteId == fromSite.Id).ToList(); var activeDirectoryContributeGroup = _parameterService.GetParameterByNameAndCache <string>(ParameterNames.ActiveDirectoryContributeGroup); var activeDirectoryContributeClosedGroup = _parameterService.GetParameterByNameAndCache <string>(ParameterNames.ActiveDirectoryContributeClosedGroup); var activeDirectoryReadGroup = _parameterService.GetParameterByNameAndCache <string>(ParameterNames.ActiveDirectoryReadGroup); var pinSiteDocumentLibraries = new Dictionary <Guid, Guid>(); using (var context = new ClientContext(SiteCollectionUrl(fromSite.ProvisionedSite.ProvisionedSiteCollection.Name))) { var web = _contextService.Load(context, Credentials); Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> CheckRequiredSecurityGroupsExist. Started."); var checkRequiredSecurityGroupsExistPrfMonTriggers = new PrfMon(); var spFromSite = web.Webs.Single(x => x.Url == fromSite.Url); var colGroup = spFromSite.SiteGroups; context.Load(colGroup); var globalSystemsAdminUser = web.EnsureUser( _parameterService.GetParameterByNameAndCache <string>( ParameterNames.ActiveDirectoryGlobalSystemsAdministratorGroup)); foreach (var library in fromSiteDocumentLibraries.Select(s => new { s.ProjectId, s.IsClosed }).Distinct().ToList()) { web.GetActiveDirectoryContributorGroup(activeDirectoryContributeGroup, activeDirectoryContributeClosedGroup, fromSite.RestrictedUser, library.IsClosed, fromSite.Pin, library.ProjectId); web.GetActiveDirectoryGroup(activeDirectoryReadGroup, fromSite.RestrictedUser, fromSite.Pin, library.ProjectId); } context.Load(globalSystemsAdminUser, u => u.Id); var spFromPinMembersGroup = colGroup.GetByName(string.Format(SharePointPinGroupNames.PinMembers, fromSite.Pin)); var spFromPinVisitorsGroup = colGroup.GetByName(string.Format(SharePointPinGroupNames.PinVisitors, fromSite.Pin)); context.Load(spFromPinMembersGroup.Users, x => x.Include(u => u.Id, u => u.PrincipalType, u => u.Title)); context.Load(spFromPinVisitorsGroup.Users, x => x.Include(u => u.Id, u => u.PrincipalType, u => u.Title)); context.ExecuteQuery(); Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> CheckRequiredSecurityGroupsExist. Completed. Average Execution: {0:0.000}s", checkRequiredSecurityGroupsExistPrfMonTriggers.Stop()); Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> CheckFromPinSiteDocumentSizes. Started."); var checkFromPinSiteDocumentSizesPrfMonTriggers = new PrfMon(); var maximumFileSizeBytes = _parameterService.GetParameterByNameAndCache <int>(ParameterNames.MaximumFileSizeMb) * 1024 * 1024; var allLists = spFromSite.Lists; context.Load(allLists, lc => lc.Include(l => l.Id, l => l.Title, l => l.IsSiteAssetsLibrary, l => l.Hidden, l => l.BaseType, l => l.ContentTypesEnabled, l => l.IsApplicationList, l => l.IsCatalog, l => l.IsPrivate, l => l.RootFolder.ServerRelativeUrl)); context.ExecuteQuery(); foreach (var list in allLists) { if (!list.Hidden && (list.BaseType == BaseType.DocumentLibrary) && list.ContentTypesEnabled && !list.IsApplicationList && !list.IsCatalog && !list.IsSiteAssetsLibrary && !list.IsPrivate) { var folder = list.RootFolder; folder.CheckFolderFileSizesWithinSizeLimit(context, fromSite.Pin, list.Title, maximumFileSizeBytes); } } Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> CheckFromPinSiteDocumentSizes. Completed. Average Execution: {0:0.000}s", checkFromPinSiteDocumentSizesPrfMonTriggers.Stop()); Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> PinFromSitePermissions. Started."); var pinSitePermissionsPrfMonTriggers = new PrfMon(); var contributeUsers = spFromPinMembersGroup.Users.Where(u => u.PrincipalType == PrincipalType.SecurityGroup && u.Title.EndsWith("_CONTRIBUTE") || u.Title.EndsWith("_CONTRIBUTE_CLOSED") || u.Title.EndsWith($"_CONTRIBUTE_{fromSite.Pin}") || u.Title.EndsWith($"_CONTRIBUTE_CLOSED_{fromSite.Pin}")).ToList(); foreach (var user in contributeUsers) { spFromPinMembersGroup.Users.RemoveById(user.Id); } var readUsers = spFromPinVisitorsGroup.Users.Where(u => u.PrincipalType == PrincipalType.SecurityGroup && u.Title.EndsWith("_READ") || u.Title.EndsWith($"_READ_{fromSite.Pin}")).ToList(); foreach (var user in readUsers) { spFromPinVisitorsGroup.Users.RemoveById(user.Id); } var globalSystemAdminUser = spFromPinMembersGroup.Users.FirstOrDefault(u => u.Id == globalSystemsAdminUser.Id); if (globalSystemAdminUser != null) { spFromPinMembersGroup.Users.RemoveById(globalSystemsAdminUser.Id); } context.ExecuteQuery(); Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> PinFromSitePermissions. Completed. Average Execution: {0:0.000}s", pinSitePermissionsPrfMonTriggers.Stop()); Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> RemoveDocumentLibraryPermissions. Started."); var libraryPermissionsPrfMonTriggers = new PrfMon(); foreach (var documentLibrary in fromSiteDocumentLibraries) { var documentLibraryList = spFromSite.Lists.GetById(documentLibrary.ListId); documentLibraryList.OnQuickLaunch = false; documentLibraryList.Update(); context.Load(documentLibraryList); context.Load(documentLibraryList.RoleAssignments, r => r.Include(m => m.Member.Id)); context.ExecuteQuery(); var currentProjectContributorsGroup = web.GetActiveDirectoryContributorGroup(activeDirectoryContributeGroup, activeDirectoryContributeClosedGroup, fromSite.RestrictedUser, documentLibrary.IsClosed, fromSite.Pin, documentLibrary.ProjectId); context.Load(currentProjectContributorsGroup, u => u.Id); context.ExecuteQuery(); documentLibraryList.RoleAssignments.Where(r => r.Member.Id == currentProjectContributorsGroup.Id || r.Member.Id == globalSystemsAdminUser.Id).ToList().ForEach(ra => ra.DeleteObject()); context.ExecuteQuery(); } Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> RemoveDocumentLibraryPermissions. Completed. Average Execution: {0:0.000}s", libraryPermissionsPrfMonTriggers.Stop()); _contextService.Audit(context, task, string.Format(TaskResources.Audit_MergePin, fromSite.Pin, toSite.Pin)); } using (var context = new ClientContext(SiteCollectionUrl(toSite.ProvisionedSite.ProvisionedSiteCollection.Name))) { var web = _contextService.Load(context, Credentials); Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> LoadRequiredSecurityGroups. Started."); var loadRequiredSecurityGroupsExistPrfMonTriggers = new PrfMon(); var spToSite = web.Webs.Single(x => x.Url == toSite.Url); var colGroup = spToSite.SiteGroups; context.Load(colGroup); var globalSystemsAdminUser = web.EnsureUser(_parameterService.GetParameterByNameAndCache <string>(ParameterNames.ActiveDirectoryGlobalSystemsAdministratorGroup)); context.Load(globalSystemsAdminUser, u => u.Id); var spToPinMembersGroup = colGroup.GetByName(string.Format(SharePointPinGroupNames.PinMembers, toSite.Pin)); var spToPinVisitorsGroup = colGroup.GetByName(string.Format(SharePointPinGroupNames.PinVisitors, toSite.Pin)); context.Load(spToPinMembersGroup.Users, x => x.Include(u => u.Id, u => u.PrincipalType, u => u.Title)); context.Load(spToPinVisitorsGroup.Users, x => x.Include(u => u.Id, u => u.PrincipalType, u => u.Title)); context.Load(spToSite, s => s.Lists.Include(l => l.Title)); context.ExecuteQuery(); Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> LoadRequiredSecurityGroups. Completed. Average Execution: {0:0.000}s", loadRequiredSecurityGroupsExistPrfMonTriggers.Stop()); Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> CreateDocumentLibraries. Started."); var createDocumentLibrariesPrfMonTriggers = new PrfMon(); var mergePinLibraries = fromSiteDocumentLibraries.ToList(); foreach (var mergePinLibrary in mergePinLibraries) { Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> CreateDocumentLibrary. Started."); var createDocumentLibraryPrfMonTriggers = new PrfMon(); var documentLibraryList = spToSite.CreateDocumentLibrary(mergePinLibrary.CaseId.ToString()); context.Load(documentLibraryList, d => d.ContentTypes); context.ExecuteQuery(); Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> CreateDocumentLibrary. Completed. Average Execution: {0:0.000}s", createDocumentLibraryPrfMonTriggers.Stop()); Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> UpdateDocumentLibraryList. Started."); var updateDocumentLibraryPrfMonTriggers = new PrfMon(); documentLibraryList.UpdateDocumentLibraryList(web.ContentTypes, ContentTypeGroupNames.CaseDocumentContentTypes, mergePinLibrary.Title); context.Load(documentLibraryList, d => d.Id, d => d.Fields); context.ExecuteQuery(); Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> UpdateDocumentLibraryList. Completed. Average Execution: {0:0.000}s", updateDocumentLibraryPrfMonTriggers.Stop()); Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> UpdateDocumentLibraryMetaData. Started."); var documentLibraryMetaDataPrfMonTriggers = new PrfMon(); var dictionary = context.CreateDocumentLibraryMetaData(documentLibraryList, spToSite, mergePinLibrary.Dictionary, toSite.Pin); Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> UpdateDocumentLibraryMetaData. Completed. Average Execution: {0:0.000}s", documentLibraryMetaDataPrfMonTriggers.Stop()); Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> PinToSiteVisitorsPermissions. Started."); var pinSitePermissionsPrfMonTriggers = new PrfMon(); var projectReadGroup = web.GetActiveDirectoryGroup(activeDirectoryReadGroup, toSite.RestrictedUser, toSite.Pin, mergePinLibrary.ProjectId); spToPinVisitorsGroup.Users.AddUser(projectReadGroup); context.Load(spToPinVisitorsGroup); context.Load(documentLibraryList.RoleAssignments); context.ExecuteQuery(); Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> PinToSiteVisitorsPermissions. Completed. Average Execution: {0:0.000}s", pinSitePermissionsPrfMonTriggers.Stop()); Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> SetupDocumentLibraryMembershipPermissions. Started."); var setupDocumentLibraryMembershipPermissionsPrfMonTriggers = new PrfMon(); var projectContributorsGroup = web.GetActiveDirectoryContributorGroup(activeDirectoryContributeGroup, activeDirectoryContributeClosedGroup, toSite.RestrictedUser, mergePinLibrary.IsClosed, toSite.Pin, mergePinLibrary.ProjectId); documentLibraryList.BreakRoleInheritanceAndRemoveRoles(true, false, true); documentLibraryList.AddRoleWithPermissions(context, web, globalSystemsAdminUser, RoleType.Contributor); documentLibraryList.AddRoleWithPermissions(context, web, projectContributorsGroup, RoleType.Contributor); documentLibraryList.AddRoleWithPermissions(context, web, spToPinVisitorsGroup, RoleType.Reader); documentLibraryList.Update(); context.ExecuteQuery(); Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> SetupDocumentLibraryMembershipPermissions. Completed. Average Execution: {0:0.000}s", setupDocumentLibraryMembershipPermissionsPrfMonTriggers.Stop()); Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> DatabaseSynchronisation. Started."); var databaseSynchronisationPrfMonTriggers = new PrfMon(); pinSiteDocumentLibraries.Add(mergePinLibrary.ListId, documentLibraryList.Id); var now = DateTime.Now; var library = new Library { CaseId = mergePinLibrary.CaseId, Title = mergePinLibrary.Title, ProjectId = mergePinLibrary.ProjectId, SiteId = toSite.Id, ListId = documentLibraryList.Id, IsClosed = mergePinLibrary.IsClosed, Url = $"{CaseDocumentLibraryUrl(toSite.ProvisionedSite.ProvisionedSiteCollection.Name, toSite.Pin.ToString(), mergePinLibrary.CaseId.ToString())}", Dictionary = dictionary, InsertedDate = now, InsertedBy = _userIdentity.Name, UpdatedDate = now, UpdatedBy = _userIdentity.Name }; _libraryService.Delete(mergePinLibrary.Id); _libraryService.Create(library); Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> DatabaseSynchronisation. Completed. Average Execution: {0:0.000}s", databaseSynchronisationPrfMonTriggers.Stop()); } if (!fromSite.ProvisionedSite.ProvisionedSiteCollection.Name.SafeEquals(toSite.ProvisionedSite.ProvisionedSiteCollection.Name)) { _contextService.Audit(context, task, string.Format(TaskResources.Audit_MergePin, fromSite.Pin, toSite.Pin)); } Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> CreateDocumentLibraries. Completed. Average Execution: {0:0.000}s", createDocumentLibrariesPrfMonTriggers.Stop()); } Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> MergePinSiteContent. Started."); var mergePinSiteContentPrfMonTriggers = new PrfMon(); var fromPinSite = new PinSite(fromSite.Url, Credentials); var toPinSite = new PinSite(toSite.Url, Credentials); foreach (var listSource in fromPinSite.Lists) { var listDestination = toPinSite.GetList(listSource, pinSiteDocumentLibraries); var rootFolderSource = listSource.GetRootFolder(fromPinSite.Context); var rootFolderDestination = listDestination.GetRootFolder(toPinSite.Context); var listName = GetListNameFromServerRelativeUrl(rootFolderDestination.ServerRelativeUrl); rootFolderSource.MoveFilesTo(rootFolderDestination, rootFolderDestination.ServerRelativeUrl, listName); } Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> MergePinSiteContent. Completed. Average Execution: {0:0.000}s", mergePinSiteContentPrfMonTriggers.Stop()); DeletePin(new Task { Handler = TaskHandlerNames.OperationsHandler, Name = TaskNames.DeletePin, Pin = fromSite.Pin }); Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> Completed Processing MergePin. Duration: {0:0.000}s", prfMonMethod.Stop()); }
public int DeletePin(Task task) { Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> Processing DeletePin."); var prfMonMethod = new PrfMon(); var site = _siteRepository.Single(x => x.Pin == task.Pin.Value); using (var siteContext = new ClientContext(site.Url)) { Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> SiteDeletion. Started."); var siteDeletionPrfMonTriggers = new PrfMon(); siteContext.Credentials = Credentials; var siteWeb = siteContext.Web; siteContext.Load(siteWeb); siteContext.ExecuteQuery(); siteWeb.DeleteObject(); siteContext.ExecuteQuery(); Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> SiteDeletion. Completed. Average Execution: {0:0.000}s", siteDeletionPrfMonTriggers.Stop()); } using (var siteCollectionContext = new ClientContext(SiteCollectionUrl(site.ProvisionedSite.ProvisionedSiteCollection.Name))) { Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> AuditOperation. Started."); var auditOperationPrfMonTriggers = new PrfMon(); siteCollectionContext.Credentials = Credentials; siteCollectionContext.ExecuteQuery(); Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> AuditOperation. Completed. Average Execution: {0:0.000}s", auditOperationPrfMonTriggers.Stop()); _contextService.Audit(siteCollectionContext, task, string.Format(TaskResources.Audit_DeletePin, site.Url)); } Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> DatabaseSynchronisation. Started."); var databaseSynchronisationPrfMonTriggers = new PrfMon(); RetryableOperation.Invoke(ExceptionPolicies.General, () => { var provisionedSiteId = site.ProvisionedSiteId; var provisionedSiteCollectionId = site.ProvisionedSite.ProvisionedSiteCollectionId; _siteRepository.Delete(site); _provisionedSiteRepository.Delete(provisionedSiteId); if (_provisionedSiteRepository.Query(x => x.ProvisionedSiteCollectionId == provisionedSiteCollectionId).Count() == 1) { _provisionedSiteCollectionRepository.Delete(provisionedSiteCollectionId); } _unitOfWork.Save(); }); Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> DatabaseSynchronisation. Completed. Average Execution: {0:0.000}s", databaseSynchronisationPrfMonTriggers.Stop()); Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> Completed Processing DeletePin. Duration: {0:0.000}s", prfMonMethod.Stop()); return(site.Id); }
public int ChangePrimaryProject(Task task) { Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> Processing ChangePrimaryProject."); var prfMonMethod = new PrfMon(); var site = _siteRepository.Single(x => x.Pin == task.Pin.Value); using (var context = new ClientContext(SiteCollectionUrl(site.ProvisionedSite.ProvisionedSiteCollection.Name))) { var web = _contextService.Load(context, Credentials); Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> CheckRequiredSecurityGroupsExist. Started."); var obtainRequiredUsersPrfMonTriggers = new PrfMon(); var spSite = web.Webs.Single(x => x.Url == site.Url); var colGroup = spSite.SiteGroups; context.Load(colGroup); var activeDirectoryContributeGroup = _parameterService.GetParameterByNameAndCache <string>(ParameterNames.ActiveDirectoryContributeGroup); var activeDirectoryContributeClosedGroup = _parameterService.GetParameterByNameAndCache <string>(ParameterNames.ActiveDirectoryContributeClosedGroup); var currentProjectContributorsGroup = web.GetActiveDirectoryGroup(activeDirectoryContributeGroup, site.RestrictedUser, site.Pin, task.CurrentProjectId.Value); var currentProjectContributorsClosedGroup = web.GetActiveDirectoryGroup(activeDirectoryContributeClosedGroup, site.RestrictedUser, site.Pin, task.CurrentProjectId.Value); var newProjectContributorsGroup = web.GetActiveDirectoryGroup(activeDirectoryContributeGroup, site.RestrictedUser, site.Pin, task.NewProjectId.Value); var spPinMembersGroup = colGroup.GetByName(string.Format(SharePointPinGroupNames.PinMembers, site.Pin)); context.Load(spPinMembersGroup.Users, x => x.Include(u => u.Id, u => u.PrincipalType, u => u.Title)); context.Load(currentProjectContributorsGroup, u => u.Title); context.Load(currentProjectContributorsClosedGroup, u => u.Title); context.Load(newProjectContributorsGroup); context.ExecuteQuery(); Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> CheckRequiredSecurityGroupsExist. Completed. Average Execution: {0:0.000}s", obtainRequiredUsersPrfMonTriggers.Stop()); Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> AssignPermissions. Started."); var assignPermissionsPrfMonTriggers = new PrfMon(); var projectContributors = spPinMembersGroup.Users.Where(u => u.Title == currentProjectContributorsGroup.Title || u.Title == currentProjectContributorsClosedGroup.Title).Select(s => s.Id).ToList(); if (projectContributors.Any()) { foreach (var projectContributor in projectContributors) { spPinMembersGroup.Users.RemoveById(projectContributor); } } spPinMembersGroup.Users.AddUser(newProjectContributorsGroup); context.ExecuteQuery(); Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> AssignPermissions. Completed. Average Execution: {0:0.000}s", assignPermissionsPrfMonTriggers.Stop()); Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> UpdateDocumentLibraryMetaData. Started."); var loadPinDocumentListContentTypesAndFieldsPrfMonTriggers = new PrfMon(); var documentLibraryList = spSite.Lists.GetByTitle(SharePointListNames.PinDocuments); context.Load(documentLibraryList, d => d.Id, d => d.Fields); context.ExecuteQuery(); var dictionary = context.UpdateDocumentLibraryMetaData(documentLibraryList, spSite, site.Dictionary, task.Dictionary); Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> UpdateDocumentLibraryMetaData. Completed. Average Execution: {0:0.000}s", loadPinDocumentListContentTypesAndFieldsPrfMonTriggers.Stop()); _contextService.Audit(context, task, string.Format(TaskResources.Audit_ChangePrimaryProject, site.Pin, task.CurrentProjectId.Value, task.NewProjectId.Value)); Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> DatabaseSynchronisation. Started."); var databaseSynchronisationPrfMonTriggers = new PrfMon(); RetryableOperation.Invoke(ExceptionPolicies.General, () => { site.Dictionary = dictionary; site.PrimaryProjectId = task.NewProjectId; site.UpdatedDate = DateTime.Now; site.UpdatedBy = _userIdentity.Name; _siteRepository.Update(site); _unitOfWork.Save(); }); Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> DatabaseSynchronisation. Completed. Average Execution: {0:0.000}s", databaseSynchronisationPrfMonTriggers.Stop()); } Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> Completed Processing ChangePrimaryProject. Duration: {0:0.000}s", prfMonMethod.Stop()); return(site.Id); }
public int ProvisionSiteCollection(int siteCollectionId) { Debug.WriteLine("Fujitsu.AFC.Services.ProvisioningService.cs -> Processing ProvisionSiteCollection."); var prfMonMethod = new PrfMon(); var siteCollectionName = $"{EnvironmentSiteCollectionPrefix}{siteCollectionId}"; // Open the Tenant Administration Context with the Tenant Admin Url using (var tenantContext = new ClientContext(TenantAdminWebSiteDomainPath)) { // Assign Credentials tenantContext.Credentials = Credentials; var tenant = new Tenant(tenantContext); var url = SiteCollectionUrl(siteCollectionId); // Properties of the New SiteCollection var siteCreationProperties = new SiteCreationProperties { Url = url, // New Site Collection Url Title = $"{siteCollectionName} Root Site", // Title of the Root Site Owner = Username, // Email of Owner Template = SiteTemplate, // Template of the Root Site. Using Team Site for now. StorageMaximumLevel = SiteCollectionStorageMaximumLevel, // Storage Limit in MB UserCodeMaximumLevel = SiteCollectionUserCodeMaximumLevel, // User Code Resource Points Allowed StorageWarningLevel = SiteCollectionStorageWarningLevel }; // Create the SiteCollection var spo = tenant.CreateSite(siteCreationProperties); tenantContext.Load(tenant); // We will need the IsComplete property to check if the provisioning of the Site Collection is complete. tenantContext.Load(spo, i => i.IsComplete); try { tenantContext.ExecuteQuery(); // Check if the provisioning of the Site Collection is complete. while (!spo.IsComplete) { // Wait for 30 seconds and then try again System.Threading.Thread.Sleep(30000); spo.RefreshLoad(); tenantContext.ExecuteQuery(); } } catch (Exception) { var spp = tenant.GetSiteProperties(0, true); tenantContext.Load(spp); tenantContext.ExecuteQuery(); // Check whether the Site Collection has already been created if (!spp.Any(x => x.Url == url)) { throw; } } } var now = DateTime.Now; var siteCollection = new ProvisionedSiteCollection { Name = siteCollectionName, InsertedDate = now, InsertedBy = _userIdentity.Name, UpdatedDate = now, UpdatedBy = _userIdentity.Name }; RetryableOperation.Invoke(ExceptionPolicies.General, () => { _provisionedSiteCollectionRepository.Insert(siteCollection); _unitOfWork.Save(); }); Debug.WriteLine("Fujitsu.AFC.Services.ProvisioningService.cs -> Completed Processing ProvisionSiteCollection. Duration: {0:0.000}s", prfMonMethod.Stop()); return(siteCollection.Id); }
public void Audit(ClientContext context, Task task, string auditMessage) { Debug.WriteLine("Fujitsu.AFC.Services.ContextService.cs -> AuditOperation. Started."); var auditOperationPrfMonTriggers = new PrfMon(); context.Web.AddAuditListItem(SharePointListNames.Audit, task, auditMessage); context.ExecuteQuery(); Debug.WriteLine("Fujitsu.AFC.Services.ContextService.cs -> AuditOperation. Completed. Average Execution: {0:0.000}s", auditOperationPrfMonTriggers.Stop()); }
public void Execute(Task task) { Debug.WriteLine("Fujitsu.AFC.Operations.ChangePrimaryProject.cs -> Processing Started."); var prfMonMethod = new PrfMon(); if (task.Pin == null) { var message = string.Format(TaskResources.OperationsTaskRequest_InvalidRequestNoPin, task.Name); _taskService.CompleteUnrecoverableTaskException(task, message); throw new UnRecoverableErrorException(message); } if (task.CurrentProjectId == null) { var message = string.Format(TaskResources.OperationsTaskRequest_InvalidRequestNoCurrentProjectId, task.Name, task.Pin.Value); _taskService.CompleteUnrecoverableTaskException(task, message); throw new UnRecoverableErrorException(message); } if (task.NewProjectId == null) { var message = string.Format(TaskResources.OperationsTaskRequest_InvalidRequestNoNewProjectId, task.Name, task.Pin.Value); _taskService.CompleteUnrecoverableTaskException(task, message); throw new UnRecoverableErrorException(message); } if (string.IsNullOrEmpty(task.Dictionary)) { var message = string.Format(TaskResources.OperationsTaskRequest_InvalidRequestNoDictionaryXML, task.Name); _taskService.CompleteUnrecoverableTaskException(task, message); throw new UnRecoverableErrorException(message); } if (!task.Dictionary.IsValidXml()) { var message = string.Format(TaskResources.OperationsTaskRequest_InvalidDictionaryXML, task.Name, task.Pin.Value); _taskService.CompleteUnrecoverableTaskException(task, message); throw new UnRecoverableErrorException(message); } if (!_siteService.Query(x => x.Pin == task.Pin.Value).Any()) { var message = string.Format(TaskResources.OperationsTaskRequest_PinDoesNotExist, task.Name, task.Pin.Value); _taskService.CompleteUnrecoverableTaskException(task, message); throw new UnRecoverableErrorException(message); } if (!_libraryService.Query(x => x.ProjectId == task.CurrentProjectId.Value).Any()) { var message = string.Format(TaskResources.OperationsTaskRequest_CaseDoesNotExistForSpecifiedProjectId, task.Name, task.CurrentProjectId.Value); _taskService.CompleteUnrecoverableTaskException(task, message); throw new UnRecoverableErrorException(message); } if (!_libraryService.Query(x => x.ProjectId == task.NewProjectId.Value).Any()) { var message = string.Format(TaskResources.OperationsTaskRequest_CaseDoesNotExistForSpecifiedProjectId, task.Name, task.NewProjectId.Value); _taskService.CompleteUnrecoverableTaskException(task, message); throw new UnRecoverableErrorException(message); } if (!_libraryService.Query(x => x.ProjectId == task.CurrentProjectId.Value && x.Site.Pin == task.Pin.Value).Any()) { var message = string.Format(TaskResources.OperationsTaskRequest_CaseDoesNotExistForTheSpecifiedProjectIdOnThePin, task.Name, task.Pin.Value, task.CurrentProjectId.Value); _taskService.CompleteUnrecoverableTaskException(task, message); throw new UnRecoverableErrorException(message); } if (!_libraryService.Query(x => x.ProjectId == task.NewProjectId.Value && x.Site.Pin == task.Pin.Value).Any()) { var message = string.Format(TaskResources.OperationsTaskRequest_CaseDoesNotExistForTheSpecifiedProjectIdOnThePin, task.Name, task.Pin.Value, task.NewProjectId.Value); _taskService.CompleteUnrecoverableTaskException(task, message); throw new UnRecoverableErrorException(message); } task.SiteId = _pinService.ChangePrimaryProject(task); Debug.WriteLine("Fujitsu.AFC.Operations.ChangePrimaryProject.cs -> Completed Processing - PIN: {0} CurrentProjectId: {1} NewProjectId {2} Duration: {3:0.000}s", task.Pin.Value, task.CurrentProjectId.Value, task.NewProjectId.Value, prfMonMethod.Stop()); }
public void Execute(Task task) { Debug.WriteLine("Fujitsu.AFC.Operations.ArchiveCase.cs -> Processing Started."); var prfMonMethod = new PrfMon(); if (task.Pin == null) { var message = string.Format(TaskResources.OperationsTaskRequest_InvalidRequestNoPin, task.Name); _taskService.CompleteUnrecoverableTaskException(task, message); throw new UnRecoverableErrorException(message); } if (task.CaseId == null) { var message = string.Format(TaskResources.OperationsTaskRequest_InvalidRequestNoCaseId, task.Name, task.Pin.Value); _taskService.CompleteUnrecoverableTaskException(task, message); throw new UnRecoverableErrorException(message); } if (!_siteService.Query(x => x.Pin == task.Pin.Value).Any()) { var message = string.Format(TaskResources.OperationsTaskRequest_PinDoesNotExist, task.Name, task.Pin.Value); _taskService.CompleteUnrecoverableTaskException(task, message); throw new UnRecoverableErrorException(message); } if (!_libraryService.Query(x => x.CaseId == task.CaseId.Value).Any()) { var message = string.Format(TaskResources.OperationsTaskRequest_CaseIdDoesNotExist, task.Name, task.Pin.Value, task.CaseId.Value); _taskService.CompleteUnrecoverableTaskException(task, message); throw new UnRecoverableErrorException(message); } if (!_libraryService.Query(x => x.CaseId == task.CaseId.Value && x.Site.Pin == task.Pin.Value).Any()) { var message = string.Format(TaskResources.OperationsTaskRequest_PinDoesNotExistForTheSpecifiedCase, task.Name, task.Pin.Value, task.CaseId.Value); _taskService.CompleteUnrecoverableTaskException(task, message); throw new UnRecoverableErrorException(message); } task.SiteId = _caseService.ArchiveCase(task); Debug.WriteLine("Fujitsu.AFC.Operations.ArchiveCase.cs -> Completed Processing - PIN: {0} CaseId: {1} Duration: {2:0.000}s", task.Pin.Value, task.CaseId.Value, prfMonMethod.Stop()); }
public int UpdateCaseTitle(Task task) { Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> Processing UpdateCaseTitle."); var prfMonMethod = new PrfMon(); var library = _libraryRepository.Single(x => x.CaseId == task.CaseId.Value); using (var context = new ClientContext(SiteCollectionUrl(library.Site.ProvisionedSite.ProvisionedSiteCollection.Name))) { var web = _contextService.Load(context, Credentials); Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> LoadDocumentLibraryList. Started."); var createDocumentLibraryPrfMonTriggers = new PrfMon(); var spSite = web.Webs.Single(x => x.Url == library.Site.Url); var documentLibraryList = spSite.Lists.GetById(library.ListId); context.Load(documentLibraryList); context.ExecuteQuery(); Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> LoadDocumentLibraryList. Completed. Average Execution: {0:0.000}s", createDocumentLibraryPrfMonTriggers.Stop()); if (!documentLibraryList.Title.SafeEquals(task.CaseTitle)) { Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> UpdateDocumentLibraryTitleAndAuditOperation. Started."); var updateDocumentLibraryTitleAndAuditOperationPrfMonTriggers = new PrfMon(); documentLibraryList.Title = task.CaseTitle; documentLibraryList.Update(); context.ExecuteQuery(); _contextService.Audit(context, task, string.Format(TaskResources.Audit_UpdateCaseTitle, library.Site.Pin, library.CaseId, library.Title, task.CaseTitle)); Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> UpdateDocumentLibraryTitleAndAuditOperation. Completed. Average Execution: {0:0.000}s", updateDocumentLibraryTitleAndAuditOperationPrfMonTriggers.Stop()); } if (!library.Title.SafeEquals(task.CaseTitle)) { Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> DatabaseSynchronisation. Started."); var databaseSynchronisationPrfMonTriggers = new PrfMon(); library.Title = task.CaseTitle; library.UpdatedDate = DateTime.Now; library.UpdatedBy = _userIdentity.Name; _libraryService.Update(library); Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> DatabaseSynchronisation. Completed. Average Execution: {0:0.000}s", databaseSynchronisationPrfMonTriggers.Stop()); } } Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> Completed Processing UpdateCaseTitle. Duration: {0:0.000}s", prfMonMethod.Stop()); return(library.Site.Id); }
public void Execute(Task task) { Debug.WriteLine("Fujitsu.AFC.Operations.RestrictUser.cs -> Processing Started."); var prfMonMethod = new PrfMon(); if (task.Pin == null) { var message = string.Format(TaskResources.OperationsTaskRequest_InvalidRequestNoPin, task.Name); _taskService.CompleteUnrecoverableTaskException(task, message); throw new UnRecoverableErrorException(message); } if (!_siteService.Query(x => x.Pin == task.Pin.Value).Any()) { var message = string.Format(TaskResources.OperationsTaskRequest_PinDoesNotExist, task.Name, task.Pin.Value); _taskService.CompleteUnrecoverableTaskException(task, message); throw new UnRecoverableErrorException(message); } if (_taskService.PendingMergeFromPinOperation(task.Pin.Value, task.InsertedDate)) { var message = string.Format(TaskResources.OperationsTaskRequest_MergePinRequestPending, task.Name, task.Pin.Value); _taskService.CompleteUnrecoverableTaskException(task, message); throw new UnRecoverableErrorException(message); } _userService.RestictUser(task); Debug.WriteLine("Fujitsu.AFC.Operations.RestrictUser.cs -> Completed Processing - PIN: {0} Duration: {1:0.000}s", task.Pin.Value, prfMonMethod.Stop()); }
public int CloseCase(Task task) { Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> Processing CloseCase."); var prfMonMethod = new PrfMon(); var library = _libraryRepository.Single(x => x.CaseId == task.CaseId.Value); using (var context = new ClientContext(SiteCollectionUrl(library.Site.ProvisionedSite.ProvisionedSiteCollection.Name))) { var web = _contextService.Load(context, Credentials); Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> CheckRequiredSecurityGroupsExist. Started."); var obtainRequiredUsersPrfMonTriggers = new PrfMon(); var activeDirectoryContributeClosedGroup = _parameterService.GetParameterByNameAndCache <string>(ParameterNames.ActiveDirectoryContributeClosedGroup); var activeDirectoryContributeGroup = _parameterService.GetParameterByNameAndCache <string>(ParameterNames.ActiveDirectoryContributeGroup); var projectContributorsClosedGroup = web.GetActiveDirectoryGroup(activeDirectoryContributeClosedGroup, library.Site.RestrictedUser, library.Site.Pin, library.ProjectId); var projectContributorsGroup = web.GetActiveDirectoryGroup(activeDirectoryContributeGroup, library.Site.RestrictedUser, library.Site.Pin, library.ProjectId); context.ExecuteQuery(); Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> CheckRequiredSecurityGroupsExist. Completed. Average Execution: {0:0.000}s", obtainRequiredUsersPrfMonTriggers.Stop()); Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> UpdateDocumentLibraryMetaData. Started."); var documentLibraryMetaDataPrfMonTriggers = new PrfMon(); var spSite = web.Webs.Single(x => x.Url == library.Site.Url); var colGroup = spSite.SiteGroups; context.Load(colGroup); var documentLibraryList = spSite.Lists.GetById(library.ListId); context.Load(documentLibraryList, d => d.Id, d => d.Fields); context.ExecuteQuery(); var dictionary = context.UpdateDocumentLibraryMetaData(documentLibraryList, spSite, library.Dictionary, task.Dictionary); Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> UpdateDocumentLibraryMetaData. Completed. Average Execution: {0:0.000}s", documentLibraryMetaDataPrfMonTriggers.Stop()); Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> AssignPinMembershipPermissions. Started."); var assignPinMembershipPermissionsPrfMonTriggers = new PrfMon(); var spPinMembersGroup = colGroup.GetByName(string.Format(SharePointPinGroupNames.PinMembers, library.Site.Pin)); context.Load(spPinMembersGroup.Users, x => x.Include(u => u.Id, u => u.PrincipalType, u => u.Title)); context.Load(projectContributorsGroup, u => u.Title); context.ExecuteQuery(); if (library.Site.PrimaryProjectId != null && library.Site.PrimaryProjectId.Value == library.ProjectId && _libraryRepository.Query(x => x.SiteId == library.SiteId && x.ProjectId == library.ProjectId && x.IsClosed == false).Count() == 1) { spPinMembersGroup.Users.RemoveById(spPinMembersGroup.Users.Single(u => u.Title == projectContributorsGroup.Title).Id); spPinMembersGroup.Users.AddUser(projectContributorsClosedGroup); context.ExecuteQuery(); } Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> AssignPinMembershipPermissions. Completed. Average Execution: {0:0.000}s", assignPinMembershipPermissionsPrfMonTriggers.Stop()); Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> DocumentLibraryMembershipPermissions. Started."); var documentLibraryMembershipPermissionsPrfMonTriggers = new PrfMon(); context.Load(documentLibraryList); context.Load(documentLibraryList.RoleAssignments, r => r.Include(m => m.Member.Id)); context.Load(projectContributorsGroup, r => r.Id); context.ExecuteQuery(); documentLibraryList.RoleAssignments.Where(r => r.Member.Id == projectContributorsGroup.Id).ToList().ForEach(ra => ra.DeleteObject()); documentLibraryList.AddRoleWithPermissions(context, web, projectContributorsClosedGroup, RoleType.Contributor); documentLibraryList.Update(); context.ExecuteQuery(); Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> DocumentLibraryMembershipPermissions. Completed. Average Execution: {0:0.000}s", documentLibraryMembershipPermissionsPrfMonTriggers.Stop()); _contextService.Audit(context, task, string.Format(TaskResources.Audit_CloseCase, library.Site.Pin, library.CaseId, library.Title)); Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> DatabaseSynchronisation. Started."); var databaseSynchronisationPrfMonTriggers = new PrfMon(); library.IsClosed = true; library.Dictionary = dictionary; library.UpdatedDate = DateTime.Now; library.UpdatedBy = _userIdentity.Name; _libraryService.Update(library); Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> DatabaseSynchronisation. Completed. Average Execution: {0:0.000}s", databaseSynchronisationPrfMonTriggers.Stop()); } Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> Completed Processing UpdateCaseTitle. Duration: {0:0.000}s", prfMonMethod.Stop()); return(library.SiteId); }
public void Execute(Task task) { Debug.WriteLine("Fujitsu.AFC.Operations.UpdateCaseTitleByProject.cs -> Processing Started."); var prfMonMethod = new PrfMon(); if (task.ProjectId == null) { var message = string.Format(TaskResources.OperationsTaskRequest_InvalidRequestNoProjectIdWithoutPin, task.Name); _taskService.CompleteUnrecoverableTaskException(task, message); throw new UnRecoverableErrorException(message); } if (string.IsNullOrEmpty(task.ProjectName)) { var message = string.Format(TaskResources.OperationsTaskRequest_InvalidRequestNoProjectName, task.Name, task.ProjectId); _taskService.CompleteUnrecoverableTaskException(task, message); throw new UnRecoverableErrorException(message); } if (string.IsNullOrEmpty(task.Dictionary)) { var message = string.Format(TaskResources.OperationsTaskRequest_InvalidRequestNoDictionaryXML, task.Name); _taskService.CompleteUnrecoverableTaskException(task, message); throw new UnRecoverableErrorException(message); } if (!task.Dictionary.IsValidXml()) { var message = string.Format(TaskResources.OperationsTaskRequest_InvalidDictionaryXMLWithoutPin, task.Name, task.ProjectId); _taskService.CompleteUnrecoverableTaskException(task, message); throw new UnRecoverableErrorException(message); } _caseService.UpdateCaseTitleByProject(task); Debug.WriteLine("Fujitsu.AFC.Operations.UpdateCaseTitleByProject.cs -> Completed Processing - ProjectId: {0} ProjectName: {1} Duration: {2:0.000}s", task.ProjectId.Value, task.ProjectName, prfMonMethod.Stop()); }
public int ArchiveCase(Task task) { Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> Processing ArchiveCase."); var prfMonMethod = new PrfMon(); var library = _libraryRepository.Single(x => x.CaseId == task.CaseId.Value); using (var context = new ClientContext(SiteCollectionUrl(library.Site.ProvisionedSite.ProvisionedSiteCollection.Name))) { _contextService.Load(context, Credentials); _contextService.Audit(context, task, string.Format(TaskResources.Audit_ArchiveCase, library.Site.Pin, library.CaseId, library.Title)); } Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> Completed Processing UpdateCaseTitle. Duration: {0:0.000}s", prfMonMethod.Stop()); return(library.SiteId); }
public void ConfigureSiteCollection(int siteCollectionId) { Debug.WriteLine("Fujitsu.AFC.Services.ProvisioningService.cs -> Processing ConfigureSiteCollection."); var prfMonMethod = new PrfMon(); var siteCollectionName = _provisionedSiteCollectionRepository.Single(x => x.Id == siteCollectionId).Name; using (var context = new ClientContext(SiteCollectionUrl(siteCollectionName))) { context.Credentials = Credentials; var searchCentreUrl = _parameterService.GetParameterByNameAndCache <string>(ParameterNames.SearchCentreUrl); var searchCentreResultsPageUrl = _parameterService.GetParameterByNameAndCache <string>(ParameterNames.SearchCentreResultsPageUrl); var model = new SearchResultModel { Inherit = false, ResultsPageAddress = searchCentreResultsPageUrl, ShowNavigation = false }; var jsonSearchSettings = JsonConvert.SerializeObject(model); context.ActivateFeature(InPlaceRecordManagementTypes.InplaceRecordsManagementFeatureId); context.SetPropertyBagValue(InPlaceRecordManagementTypes.EcmSiteRecordDeclarationDefault, true.ToString()); context.SetPropertyBagValue(InPlaceRecordManagementTypes.EcmSiteRecordRestrictions, $"{EcmSiteRecordRestrictions.BlockDelete}, {EcmSiteRecordRestrictions.BlockEdit}"); context.SetPropertyBagValue(InPlaceRecordManagementTypes.EcmSiteRecordDeclarationBy, EcmRecordDeclarationBy.AllListContributors.ToString()); context.SetPropertyBagValue(InPlaceRecordManagementTypes.EcmSiteRecordUndeclarationBy, EcmRecordDeclarationBy.OnlyAdmins.ToString()); context.SetPropertyBagValue(SearchCentreKeyTypes.SearchCentreUrl, searchCentreUrl); context.SetPropertyBagValue(SearchCentreKeyTypes.SearchCentreSite, jsonSearchSettings); var site = context.Site; context.Load(site, s => s.Audit); context.ExecuteQuery(); site.Audit.AuditFlags = AuditMaskType.All; site.Audit.Update(); context.ExecuteQuery(); } Debug.WriteLine("Fujitsu.AFC.Services.ProvisioningService.cs -> Completed Processing ConfigureSiteCollection. Duration: {0:0.000}s", prfMonMethod.Stop()); }
public int AllocateCase(Task task) { Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> Processing AllocateCase."); var prfMonMethod = new PrfMon(); var site = _siteRepository.Single(x => x.Pin == task.Pin.Value); using (var context = new ClientContext(SiteCollectionUrl(site.ProvisionedSite.ProvisionedSiteCollection.Name))) { var web = _contextService.Load(context, Credentials); Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> CheckRequiredSecurityGroupsExist. Started."); var obtainRequiredUsersPrfMonTriggers = new PrfMon(); var spSite = web.Webs.Single(x => x.Url == site.Url); var colGroup = spSite.SiteGroups; context.Load(colGroup); var globalSystemsAdminUser = web.EnsureUser(_parameterService.GetParameterByNameAndCache <string>(ParameterNames.ActiveDirectoryGlobalSystemsAdministratorGroup)); var activeDirectoryContributeGroup = _parameterService.GetParameterByNameAndCache <string>(ParameterNames.ActiveDirectoryContributeGroup); var activeDirectoryReadGroup = _parameterService.GetParameterByNameAndCache <string>(ParameterNames.ActiveDirectoryReadGroup); var projectContributorsGroup = web.GetActiveDirectoryGroup(activeDirectoryContributeGroup, site.RestrictedUser, site.Pin, task.ProjectId.Value); var projectReadGroup = web.GetActiveDirectoryGroup(activeDirectoryReadGroup, site.RestrictedUser, site.Pin, task.ProjectId.Value); var spPinVisitorsGroup = colGroup.GetByName(string.Format(SharePointPinGroupNames.PinVisitors, site.Pin)); context.Load(spSite, s => s.Lists.Include(l => l.Title)); context.ExecuteQuery(); Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> CheckRequiredSecurityGroupsExist. Completed. Average Execution: {0:0.000}s", obtainRequiredUsersPrfMonTriggers.Stop()); Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> CreateDocumentLibrary. Started."); var createDocumentLibraryPrfMonTriggers = new PrfMon(); var documentLibraryList = spSite.CreateDocumentLibrary(task.CaseId.Value.ToString()); context.Load(documentLibraryList, d => d.ContentTypes); context.ExecuteQuery(); Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> CreateDocumentLibrary. Completed. Average Execution: {0:0.000}s", createDocumentLibraryPrfMonTriggers.Stop()); Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> UpdateDocumentLibraryList. Started."); var updateDocumentLibraryPrfMonTriggers = new PrfMon(); documentLibraryList.UpdateDocumentLibraryList(web.ContentTypes, ContentTypeGroupNames.CaseDocumentContentTypes, task.CaseTitle); context.Load(documentLibraryList, d => d.Id, d => d.Fields); var folders = _parameterService.GetParameterByNameAndCache <string>(ParameterNames.CaseLibraryFolderNames); documentLibraryList.AddFolders(folders); context.ExecuteQuery(); Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> UpdateDocumentLibraryList. Completed. Average Execution: {0:0.000}s", updateDocumentLibraryPrfMonTriggers.Stop()); Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> UpdateDocumentLibraryMetaData. Started."); var documentLibraryMetaDataPrfMonTriggers = new PrfMon(); var dictionary = context.CreateDocumentLibraryMetaData(documentLibraryList, spSite, task.Dictionary); Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> UpdateDocumentLibraryMetaData. Completed. Average Execution: {0:0.000}s", documentLibraryMetaDataPrfMonTriggers.Stop()); Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> AssignPinMembershipPermissions. Started."); var assignPinMembershipPermissionsPrfMonTriggers = new PrfMon(); if (task.IsPrimary.Value || !task.IsPrimary.Value && site.PrimaryProjectId != null && site.PrimaryProjectId == task.ProjectId.Value) { var spPinMembersGroup = colGroup.GetByName(string.Format(SharePointPinGroupNames.PinMembers, site.Pin)); context.Load(spPinMembersGroup.Users, x => x.Include(u => u.Id, u => u.PrincipalType, u => u.Title)); context.ExecuteQuery(); var groupIds = spPinMembersGroup.Users.Where(u => u.PrincipalType == PrincipalType.SecurityGroup && u.Title.EndsWith("_CONTRIBUTE") || u.Title.EndsWith("_CONTRIBUTE_CLOSED") || u.Title.EndsWith($"_CONTRIBUTE_{site.Pin}") || u.Title.EndsWith($"_CONTRIBUTE_CLOSED_{site.Pin}")).Select(s => s.Id).ToList(); foreach (var id in groupIds) { spPinMembersGroup.Users.RemoveById(id); } if (task.IsPrimary.Value) { spPinMembersGroup.Users.AddUser(projectContributorsGroup); } } context.Load(spPinVisitorsGroup); spPinVisitorsGroup.Users.AddUser(projectReadGroup); context.Load(documentLibraryList.RoleAssignments); context.ExecuteQuery(); Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> AssignPinMembershipPermissions. Completed. Average Execution: {0:0.000}s", assignPinMembershipPermissionsPrfMonTriggers.Stop()); Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> SetupDocumentLibraryMembershipPermissions. Started."); var setupDocumentLibraryMembershipPermissionsPrfMonTriggers = new PrfMon(); documentLibraryList.BreakRoleInheritanceAndRemoveRoles(true, false, true); documentLibraryList.AddRoleWithPermissions(context, web, globalSystemsAdminUser, RoleType.Contributor); documentLibraryList.AddRoleWithPermissions(context, web, projectContributorsGroup, RoleType.Contributor); documentLibraryList.AddRoleWithPermissions(context, web, spPinVisitorsGroup, RoleType.Reader); documentLibraryList.Update(); context.ExecuteQuery(); Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> SetupDocumentLibraryMembershipPermissions. Completed. Average Execution: {0:0.000}s", setupDocumentLibraryMembershipPermissionsPrfMonTriggers.Stop()); _contextService.Audit(context, task, string.Format(TaskResources.Audit_AllocateCase, site.Pin, task.CaseId.Value, task.CaseTitle)); Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> DatabaseSynchronisation. Started."); var databaseSynchronisationPrfMonTriggers = new PrfMon(); var now = DateTime.Now; var library = new Library { CaseId = task.CaseId.Value, Title = task.CaseTitle, ProjectId = task.ProjectId.Value, SiteId = site.Id, ListId = documentLibraryList.Id, IsClosed = false, Url = $"{CaseDocumentLibraryUrl(site.ProvisionedSite.ProvisionedSiteCollection.Name, site.Pin.ToString(), task.CaseId.Value.ToString())}", Dictionary = dictionary, InsertedDate = now, InsertedBy = _userIdentity.Name, UpdatedDate = now, UpdatedBy = _userIdentity.Name }; RetryableOperation.Invoke(ExceptionPolicies.General, () => { if (task.IsPrimary.Value && (site.PrimaryProjectId == null || site.PrimaryProjectId.Value != task.ProjectId.Value)) { site.PrimaryProjectId = task.ProjectId; site.UpdatedDate = now; site.UpdatedBy = _userIdentity.Name; _siteRepository.Update(site); } else if (!task.IsPrimary.Value && site.PrimaryProjectId != null && site.PrimaryProjectId == task.ProjectId.Value) { site.PrimaryProjectId = null; site.UpdatedDate = now; site.UpdatedBy = _userIdentity.Name; _siteRepository.Update(site); } _libraryRepository.Insert(library); _unitOfWork.Save(); }); Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> DatabaseSynchronisation. Completed. Average Execution: {0:0.000}s", databaseSynchronisationPrfMonTriggers.Stop()); } Debug.WriteLine("Fujitsu.AFC.Services.CaseService.cs -> Completed Processing AllocateCase. Duration: {0:0.000}s", prfMonMethod.Stop()); return(site.Id); }
public void CreateSiteAudit(int siteCollectionId, Task task) { Debug.WriteLine("Fujitsu.AFC.Services.ProvisioningService.cs -> Processing CreateSiteAudit."); var prfMonMethod = new PrfMon(); var siteCollectionName = _provisionedSiteCollectionRepository.Single(x => x.Id == siteCollectionId).Name; using (var context = new ClientContext(SiteCollectionUrl(siteCollectionName))) { context.Credentials = Credentials; var listInformation = new ListCreationInformation { Title = SharePointListNames.Audit, TemplateType = (int)ListTemplateType.GenericList }; try { // Create the Audit List var newList = context.Web.Lists.Add(listInformation); newList.CreateNumberField("TaskId"); newList.CreateTextField("Event"); var auditDictionary = new Dictionary <string, object> { { "TaskId", task.Id }, { "Title", task.Name }, { "Event", string.Format(TaskResources.Audit_CaseSiteProvisioning_RootSiteCreated, siteCollectionName) } }; newList.AddListItem(auditDictionary); context.ExecuteQuery(); } catch (Exception) { // Do not propogate the exception if we already have the list if (!context.Web.Lists.Any(x => x.Title == SharePointListNames.Audit)) { throw; } } } Debug.WriteLine("Fujitsu.AFC.Services.ProvisioningService.cs -> Completed Processing CreateSiteAudit. Duration: {0:0.000}s", prfMonMethod.Stop()); }
public void Execute(Task task) { Debug.WriteLine("Fujitsu.AFC.Operations.HelloWorldPin.cs -> Processing Started."); var prfMonMethod = new PrfMon(); if (task.Pin == null) { var message = string.Format(TaskResources.OperationsTaskRequest_InvalidRequestNoPin, task.Name); _taskService.CompleteUnrecoverableTaskException(task, message); throw new UnRecoverableErrorException(message); } if (!_siteService.Query(x => x.Pin == task.Pin.Value).Any()) { var message = string.Format(TaskResources.OperationsTaskRequest_PinDoesNotExist, task.Name, task.Pin.Value); _taskService.CompleteUnrecoverableTaskException(task, message); throw new UnRecoverableErrorException(message); } task.SiteId = _pinService.HelloWorldPin(task); Debug.WriteLine("Fujitsu.AFC.Operations.HelloWorldPin.cs -> Completed Processing - PIN: {0} Title {1} Duration: {2:0.000}s", task.Pin.Value, task.SiteTitle, prfMonMethod.Stop()); }
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()); }
public void Execute(Task task) { Debug.WriteLine("Fujitsu.AFC.Provisioning.CaseSiteProvisioning.cs -> Processing Started."); var prfMonMethod = new PrfMon(); var maximumNumberOfUnallocatedSites = _parameterService.GetParameterByNameAndCache <int>(ParameterNames.SiteProvisionerTotalUnallocatedSitesMaximum); var maximumNumberOfSitesPerCollection = _parameterService.GetParameterByNameAndCache <int>(ParameterNames.SiteProvisionerSitesPerSiteCollection); var totalNumberOfUnallocatedSites = _provisioningService.GetNumberOfUnallocatedSites(); if (totalNumberOfUnallocatedSites < maximumNumberOfUnallocatedSites) { var currentSiteCollectionId = _provisioningService.GetSiteCollectionId(); while (totalNumberOfUnallocatedSites < maximumNumberOfUnallocatedSites) { var numberOfSitesProvisionedWithinSiteCollection = _provisioningService.GetNumberOfProvisionedSitesWithinCollection(currentSiteCollectionId); if (numberOfSitesProvisionedWithinSiteCollection == 0) { currentSiteCollectionId = _provisioningService.ProvisionSiteCollection(currentSiteCollectionId); _provisioningService.ConfigureSiteCollection(currentSiteCollectionId); _provisioningService.CreateSiteAudit(currentSiteCollectionId, task); } _provisioningService.ProvisionSite(currentSiteCollectionId, task); numberOfSitesProvisionedWithinSiteCollection++; totalNumberOfUnallocatedSites++; if (numberOfSitesProvisionedWithinSiteCollection >= maximumNumberOfSitesPerCollection && totalNumberOfUnallocatedSites < maximumNumberOfUnallocatedSites) { currentSiteCollectionId = _provisioningService.GetSiteCollectionId(); } } } Debug.WriteLine("Fujitsu.AFC.Provisioning.CaseSiteProvisioning.cs -> Completed Processing. Duration: {0:0.000}s", prfMonMethod.Stop()); }
public int UpdatePinTitle(Task task) { Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> Processing UpdatePinTitle."); var prfMonMethod = new PrfMon(); var site = _siteRepository.Single(x => x.Pin == task.Pin.Value); using (var context = new ClientContext(SiteCollectionUrl(site.ProvisionedSite.ProvisionedSiteCollection.Name))) { var web = _contextService.Load(context, Credentials); var spSite = web.Webs.Single(x => x.Url == site.Url); if (!spSite.Title.SafeEquals(task.SiteTitle)) { Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> UpdateSiteTitleAndTopNavBar. Started."); var updateSitePrfMonTriggers = new PrfMon(); spSite.Title = task.SiteTitle; spSite.Update(); var topNavBar = spSite.Navigation.TopNavigationBar; context.Load(topNavBar, x => x.Include(n => n.Url, n => n.Title)); context.ExecuteQuery(); var navBar = topNavBar.Single(x => x.Url == ServerRelativeSiteUrl(site.ProvisionedSite.ProvisionedSiteCollection.Name, task.Pin.Value.ToString())); navBar.Title = task.SiteTitle; navBar.Update(); context.ExecuteQuery(); Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> UpdateSiteAndTopNavBar. Completed. Average Execution: {0:0.000}s", updateSitePrfMonTriggers.Stop()); _contextService.Audit(context, task, string.Format(TaskResources.Audit_UpdateServiceUserTitle, site.Pin, site.Title, task.SiteTitle)); Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> DatabaseSynchronisation. Started."); var databaseSynchronisationPrfMonTriggers = new PrfMon(); site.Title = task.SiteTitle; site.UpdatedDate = DateTime.Now; site.UpdatedBy = _userIdentity.Name; _siteService.Update(site); Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> DatabaseSynchronisation. Completed. Average Execution: {0:0.000}s", databaseSynchronisationPrfMonTriggers.Stop()); } } Debug.WriteLine("Fujitsu.AFC.Services.PinService.cs -> Completed Processing UpdatePinTitle. Duration: {0:0.000}s", prfMonMethod.Stop()); return(site.Id); }