Ejemplo n.º 1
0
        public async Task Init()
        {
            if (_initiated)
            {
                return;
            }
            _initiated = true;

            var configSites = _alfrescoConfig?.Sites != null
                ? JsonConvert.DeserializeObject <List <SiteARM> >(File.ReadAllText(_alfrescoConfig.Sites))
                : null;

            var configSitesRM = _alfrescoConfig?.SiteRM != null
                ? JsonConvert.DeserializeObject <RMSiteARM>(File.ReadAllText(_alfrescoConfig.SiteRM))
                : null;

            var configShreddingPlan = _alfrescoConfig?.ShreddingPlan != null
              ? JsonConvert.DeserializeObject <List <ShreddingPlanModel> >(File.ReadAllText(_alfrescoConfig.ShreddingPlan))
              : null;

            var configGroups = _alfrescoConfig?.Groups != null
                ? JsonConvert.DeserializeObject <List <GroupModel> >(File.ReadAllText(_alfrescoConfig.Groups))
                : new List <GroupModel>();

            configGroups.Insert(0, new GroupModel {
                Body = new GroupBodyCreate {
                    Id = SpisumNames.Groups.MailroomGroup
                }
            });

            if (!(configSites?.Count > 0) && configSitesRM == null)
            {
                return;
            }

            var sites = await _alfrescoHttpClient.GetSites(ImmutableList <Parameter> .Empty
                                                           .Add(new Parameter(AlfrescoNames.Headers.MaxItems, "100", ParameterType.QueryString)));

            if (configSites != null)
            {
                await _initialSite.CreateSitesAndFolders(sites, configSites, configGroups);
            }

            if (configSitesRM != null && configSitesRM.Body != null)
            {
                await _initialSite.CreateSiteRmAndFolders(sites, configSitesRM, configGroups);
            }

            if (configShreddingPlan?.Count > 0)
            {
                await _initialSite.CreateRMShreddingPlan(configShreddingPlan.SelectMany(x => x.Items.Where(y => y.IsCaption != true && y.FileMark != null && y.Period != null)).ToList());
            }

            // update ROOT permissions for all users because of PID generator script
            if (SpisumNames.Groups.MainGroup != null)
            {
                await _initialSite.CheckCreatePermissions(AlfrescoNames.Aliases.Root, new List <Permission>
                {
                    new Permission
                    {
                        Id   = SpisumNames.Groups.SpisumAdmin,
                        Role = AlfrescoNames.Permissions.SiteManager
                    },
                    new Permission
                    {
                        Id   = SpisumNames.Groups.MainGroup,
                        Role = AlfrescoNames.Permissions.Editor
                    }
                });
            }
        }