Пример #1
0
        public async Task CreateRMShreddingPlan(List <ShreddingPlanItemModel> items)
        {
            var rmSite = await _alfrescoHttpClient.GetRMSite(
                ImmutableList <Parameter> .Empty
                .Add(new Parameter(AlfrescoNames.Headers.MaxItems, "100", ParameterType.QueryString)));

            if (rmSite?.Entry?.Guid == null)
            {
                Log.Error("RM site doesn't exist");
                return;
            }

            var documentLibrary = await _alfrescoHttpClient.GetNodeInfo(rmSite.Entry.Guid, ImmutableList <Parameter> .Empty
                                                                        .Add(new Parameter(AlfrescoNames.Headers.RelativePath, "documentLibrary/ShreddingPlan", ParameterType.QueryString)));

            var documentLibraryId = documentLibrary?.Entry?.Id;

            if (documentLibraryId == null)
            {
                Log.Error("RM documentlibrary doesn't exist");
                return;
            }

            // update permissions
            await SetPermissionInheritence(documentLibrary.Entry.Id);

            foreach (var item in items)
            {
                if (item.FileMark == null || item.Period == null)
                {
                    continue;
                }

                var fileMarkId = await CreateShreddingPlan(documentLibraryId, item.FileMark, new RMNodeBodyCreateWithRelativePath
                {
                    Name       = item.FileMark,
                    NodeType   = "rma:recordCategory",
                    Properties = new Dictionary <string, string>
                    {
                        { AlfrescoNames.ContentModel.Title, item.FileMark }
                    }
                });

                if (fileMarkId == null)
                {
                    continue;
                }

                await CreateRetentionSchedule(fileMarkId, (uint)item.Period);

                var nodeId = await CreateShreddingPlan(fileMarkId, "Contents", new RMNodeBodyCreateWithRelativePath
                {
                    Name       = "Contents",
                    NodeType   = "rma:recordFolder",
                    Properties = new Dictionary <string, string>
                    {
                        { AlfrescoNames.ContentModel.Title, "Contains Documents, files" }
                    }
                });

                await CheckCreatePermissions(nodeId, new List <Permission>
                {
                    new Permission
                    {
                        Id   = SpisumNames.Groups.SpisumAdmin,
                        Role = "Filing"
                    },
                    new Permission
                    {
                        Id   = SpisumNames.Groups.RepositoryGroup,
                        Role = "Filing"
                    }
                });
            }
        }