Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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());
        }
Пример #4
0
        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());
        }
Пример #5
0
        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);
        }
Пример #6
0
        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());
        }
Пример #7
0
        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());
        }
Пример #9
0
        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());
        }
Пример #10
0
        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();
        }
Пример #11
0
        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());
        }
Пример #12
0
        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());
        }
Пример #13
0
        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);
        }
Пример #14
0
        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);
        }
Пример #15
0
        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);
        }
Пример #16
0
        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());
        }
Пример #17
0
        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());
        }
Пример #18
0
        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());
        }
Пример #19
0
        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);
        }
Пример #20
0
        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());
        }
Пример #21
0
        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());
        }
Пример #23
0
        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);
        }
Пример #24
0
        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());
        }
Пример #25
0
        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);
        }
Пример #26
0
        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());
        }
Пример #27
0
        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());
        }
Пример #28
0
        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());
        }
Пример #29
0
        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());
        }
Пример #30
0
        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);
        }