ModuleInitializer.cs 2.55 KB
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
using Sungero.Domain.Initialization;

namespace DirRX.Container.Server
{
  public partial class ModuleInitializer
  {
    public override void Initializing(Sungero.Domain.ModuleInitializingEventArgs e)
    {
      InitializationLogger.Debug("Init: Create LTA settings.");
      CreateArchiveSettings();
      GrantAccessRights();
    }
    
    /// <summary>
    /// Создать настройки передачи в долговременный архив.
    /// </summary>
    public static void CreateArchiveSettings()
    {
      var settings = PublicFunctions.ArchiveSetting.GetSettings();
      if (settings == null)
      {
        settings = Container.ArchiveSettings.Create();
        settings.Save();
      }
      if (!settings.PDFAVersion.HasValue)
      {
        settings.PDFAVersion = Container.ArchiveSetting.PDFAVersion.v1B;
        settings.Save();
      }
    }
    
    /// <summary>
    /// Выдать права.
    /// </summary>
    public static void GrantAccessRights()
    {
      InitializationLogger.DebugFormat("Init: Grant access rights");

      // Права на настройки и журнал - администратору ДА.
      var roleAdmin = Container.PublicFunctions.Module.GetAdmin();
      
      if (roleAdmin != null && roleAdmin.IsSystem != true)
      {
        Container.ArchiveSettings.AccessRights.Grant(roleAdmin, DefaultAccessRightsTypes.Change);
        Container.ArchiveSettings.AccessRights.Save();

        Container.ArchiveRequestTasks.AccessRights.Grant(roleAdmin, DefaultAccessRightsTypes.FullAccess);
        Container.ArchiveRequestTasks.AccessRights.Save();
        
        Container.SelectionRules.AccessRights.Grant(roleAdmin, DefaultAccessRightsTypes.FullAccess);
        Container.SelectionRules.AccessRights.Save();
        
        Container.TransferEventLogs.AccessRights.Grant(roleAdmin, DefaultAccessRightsTypes.FullAccess);
        Container.TransferEventLogs.AccessRights.Save();
      }
      
      var allUsers = Roles.AllUsers;
      if (allUsers != null)
      {
        Container.TransferEventLogs.AccessRights.Grant(allUsers, DefaultAccessRightsTypes.Read);
        Container.TransferEventLogs.AccessRights.Save();

        Container.ArchiveRequestTasks.AccessRights.Grant(allUsers, DefaultAccessRightsTypes.Read);
        Container.ArchiveRequestTasks.AccessRights.Grant(allUsers, DefaultAccessRightsTypes.Create);
        Container.ArchiveRequestTasks.AccessRights.Save();
      }
    }
  }
}