ModuleConstants.cs 12.1 KB
using System;
using Sungero.Core;

namespace DirRX.Storage.Constants
{
  public static class Module
  {
    // Имя файла-предпросмотра в контейнере.
    public const string PreviewFileName = "preview.pdf";
    
    // Имя файла-описателя в контейнере.
    public const string ContainerInfoFileName = "container.json";
    
    public static class Initialize
    {
      // ГУИД вида документа "Реестр описей".
      [Sungero.Core.Public]
      public static readonly Guid ConsolidatedInventoryListDocumentKind = Guid.Parse("73AE2F5D-EB36-4528-B194-5EC66923086B");
              
      // ГУИД вида документа "Годовой раздел описи дел постоянного хранения".
      [Sungero.Core.Public]
      public static readonly Guid AnnualSectionPermanentDocumentKind = Guid.Parse("188b8888-a7e8-433c-8f09-5c3a5278dad4");
      
      // ГУИД вида документа "Годовой раздел описи дел временных сроков хранения".
      [Sungero.Core.Public]
      public static readonly Guid AnnualSectionTempDocumentKind = Guid.Parse("4BA0CAC4-E15E-4BEC-A60E-310AAE8AC651");
      
      // ГУИД вида документа "Годовой раздел описи дел по личному составу".
      [Sungero.Core.Public]
      public static readonly Guid AnnualSectionPersonalDocumentKind = Guid.Parse("81C40991-91A9-4DDC-B94F-7876B2AF77BD");
      
      // ГУИД вида документа "Годовой раздел описи электронных дел постоянного хранения".
      [Sungero.Core.Public]
      public static readonly Guid AnnualSectionElectronicPermanentDocumentKind = Guid.Parse("E3E5F658-C6A3-42DB-8804-666EC7FB06AB");
      
      // ГУИД вида документа "Годовой раздел описи электронных дел временных сроков хранения".
      [Sungero.Core.Public]
      public static readonly Guid AnnualSectionElectronicTempDocumentKind = Guid.Parse("A6045AD7-6F58-46DF-947E-5B3F767212EF");
      
      // ГУИД вида документа "Список фондов".
      [Sungero.Core.Public]
      public static readonly Guid FundsListDocumentKind = Guid.Parse("24397e22-51a6-401b-87e4-1ca1dfe75640");
      
      // ГУИД вида документа "Лист фонда".
      [Sungero.Core.Public]
      public static readonly Guid FundsSheetDocumentKind = Guid.Parse("978429f1-2270-4ce8-937c-9c3391371d59");
      
      // ГУИД вида документа "Акт о выделении дел к уничтожению".
      [Sungero.Core.Public]
      public static readonly Guid DestructionActDocumentKind = Guid.Parse("2497EED7-277A-4756-A95B-F1848B86E156");

      // ГУИД вида документа "Архивная справка".
      [Sungero.Core.Public]
      public static readonly Guid ArchivalReferenceDocumentKind = Guid.Parse("58FD79D9-C573-4283-AA43-14C14C0BFA39");
      
      // ГУИД вида документа "Архивная выписка".
      [Sungero.Core.Public]
      public static readonly Guid ArchiveExtractDocumentKind = Guid.Parse("15B94B73-7AA9-42B8-9A17-4AE4CD8C0B62");
      
      // ГУИД сущности "Виды документов".
      [Sungero.Core.Public]
      public static readonly Guid DocumentKindTypeGuid = Guid.Parse("14a59623-89a2-4ea8-b6e9-2ad4365f358c");
      
      // ГУИД роли "Экспертная комиссия".
      [Sungero.Core.Public]
      public static readonly Guid ExpertCommissionRoleGuid = Guid.Parse("D3FDC4B9-591E-41EB-A429-621166208A59");
      
      // ГУИД роли "Ответственные за периодические процедуры".
      [Sungero.Core.Public]
      public static readonly Guid ResponsiblePeriodicProceduresRoleGuid = Guid.Parse("9D2A4C68-AFE9-4DA5-98D1-2F086EB917EE");
      
      // ГУИД роли "Ответственный за синхронизацию".
      [Sungero.Core.Public]
      public static readonly Guid SyncAdminRoleGuid = Guid.Parse("115DD982-9BA6-480F-9114-202A2A0D7957");
      
      // ГУИД роли "Все пользователи архива".
      [Sungero.Core.Public]
      public static readonly Guid AllArchiveUsersRoleGuid = Guid.Parse("FDD9A106-E22A-4EAA-8556-B1019B9B0E71");
      
      // ГУИД роли "Пользователи архива".
      [Sungero.Core.Public]
      public static readonly Guid ArchiveUsersRoleGuid = Guid.Parse("31085608-73BA-4D39-A75B-C102C0C0D28A");
      
      // ГУИД типа документа "Простой документ".
      [Sungero.Core.Public]
      public static readonly Guid SimpleDocumentTypeGuid = Guid.Parse("09584896-81e2-4c83-8f6c-70eb8321e1d0");
      
      // ГУИД роли "Руководитель архива".
      [Sungero.Core.Public]
      public static readonly Guid ArchiveManagerRoleGuid = Guid.Parse("32005AA2-D706-418A-91FC-6DF2DB653528");
    }

    public static class DocflowParams
    {
      [Sungero.Core.Public]
      public const string NeedDestroyKey = "LTANeedDestroy";
      
      // Имя ключа для настройки "Число дней до передподписания".
      [Sungero.Core.Public]
      public const string DaysBeforeImproveKey = "LTAMinDaysBeforeImprove";

      // Имя ключа для настройки "Период плановой проверки".
      [Sungero.Core.Public]
      public const string VerificationIntervalKey = "LTAArchiveDocumentVerificationInterval";

      // Имя ключа для настройки "Улучшать подписи после импорта".
      [Sungero.Core.Public]
      public const string ImproveAfterImportKey = "LTAImproveAfterImport";
      
      // Имя ключа для настройки "Ответственный за проверку".
      [Sungero.Core.Public]
      public const string VerificationResponsibleKey = "LTAArchiveDocumentVerificationResponsibleId";
      
      // Имя ключа для настройки "Ответственный за прием запросов".
      [Sungero.Core.Public]
      public const string RequestResponsibleKey = "LTARequestResponsibleId";
      
      // Имя ключа для настройки "Руководитель архива".
      [Sungero.Core.Public]
      public const string ArchiveManagerKey = "LTAArchiveManager";
    }
    
    // Json-схема для валидации метаданных.
    public static class ContainerJsonSchema
    {
      // Базовый контейнер
      public const string ArchiveDocument = @"{
      '$schema': 'http://json-schema.org/draft-04/schema#',
      'type': 'object',
      'required': [ 'Uid', 'Source', 'Document', 'Type', 'Preview' ],
      'properties': {
        'Uid': {'type':'string'},
        'Source': {'type':'string'},
        'Type': {'type':'string'},
        'Document': {
          'type': 'object',
          'required': [ 'LocalFile', 'Uid', 'Kind', 'Owner', 'Name' ],
          'properties': {
            'LocalFile': {'type':'string'},
            'Uid': {'type':'string'},
            'Kind': {'type':'string'},
            'Owner': {'type':'string'},
            'Name': {'type':'string'},
            'CaseFile': {'type':'string'},
            'Registration': {
              'type': 'object',
              'properties': {
                'Number': {'type':'string'},
                'Date': {'type':'string'}
              }
            },
            'Signatures': {
              'type':'array',
              'items': {
                'type': 'object',
                'oneOf': [
                  {
                    'required': [ 'LocalFile' ],
                    'properties': {
                      'LocalFile': {'type':'string'},
                    }
                  },
                  {
                    'required': [ 'FullName', 'Date' ],
                    'properties': {
                      'FullName': {'type':'string'},
                      'Date': {'type':'string'}
                    }
                  }
                ]
              }
            },
            'Requisites': {
              'type':'array',
              'items': {
                'type': 'object',
                'required': [ 'Name', 'Value' ],
                    'properties': {
                      'Name': {'type':'string'},
                      'Type': {'type':'string'},
                      'Value': {'type':'string'}
                     }
              }
            }
          }
        },
        'Attachments': {
          'type': 'array',
          'items': {
            'type': 'object',
            'required': [ 'LocalFile' ],
            'properties': {
              'LocalFile': {'type':'string'},
              'Signatures': {
                'type':'array',
                'items': {
                  'type': 'object',
                  'oneOf': [
                    {
                      'required': [ 'LocalFile' ],
                      'properties': {
                        'LocalFile': {'type':'string'},
                      }
                    },
                    {
                      'required': [ 'FullName', 'Date' ],
                      'properties': {
                        'FullName': {'type':'string'},
                        'Date': {'type':'string'}
                      }
                    }
                  ]
                }
              }
            }
          }
        },
        'Preview': {
          'type': 'object',
          'required': [ 'LocalFile' ],
          'properties': {
             'LocalFile': {'type':'string'}
          }
        }
      }
    }";
    }
    
    // Типы синхронизируемых справочников DirectumRX.
    public static class EntityType
    {
      [Sungero.Core.Public]
      public const string DocumentKind = "14a59623-89a2-4ea8-b6e9-2ad4365f358c";

      [Sungero.Core.Public]
      public const string BusinessUnit = "eff95720-181f-4f7d-892d-dec034c7b2ab";
      
      [Sungero.Core.Public]
      public const string Department = "61b1c19f-26e2-49a5-b3d3-0d3618151e12";

      [Sungero.Core.Public]
      public const string FileRetentionPeriod = "b222993f-f582-43a8-b210-2a27f4285feb";
      
      [Sungero.Core.Public]
      public const string CaseFile = "493bb59e-ae48-4cb5-ab66-071de5f890b0";

      [Sungero.Core.Public]
      public const string ExternalEntity = "09adc088-feee-440f-9d1b-2ea520d42d69";
    }
    
    // ГУИД модуля.
    public static readonly Guid ModuleGuid = Guid.Parse("2ca5d4b9-3464-43fd-897b-c42c28d96df0");
    
    // Максимальное число дел в сводной описи.
    [Public]
    public const int MaxCaseFilesNumber = 9999;

    public static class Paths
    {
      /// <summary>
      /// Путь до тома (docker volume) для обмена файлами между сервисом интеграции и generic.
      /// </summary>
      [Public]
      public const string LinuxDockerContainerVolume = "/mnt/volume_dir_rw";
      
      /// <summary>
      /// Имя папки для временного хранения контейнеров ДА.
      /// </summary>
      [Public]
      public const string LTAContainersFolder = "ltacontainers";
      
      /// <summary>
      /// Имя папки для контейнеров ДА в очереди.
      /// </summary>
      [Public]
      public const string LTAQueueContainersFolder = "processqueue";
      
      /// <summary>
      /// Имя папки для контейнеров ДА, которые проходят улучшение ЭП.
      /// </summary>
      [Public]
      public const string LTAImproveContainersFolder = "improve";
      
    }
    
    public static class Status
    {
      /// <summary>
      /// Ошибка.
      /// </summary>
      [Public]
      public const string Error = "Error";
      
      /// <summary>
      /// Выполнено.
      /// </summary>
      [Public]
      public const string Ok = "OK";
      
    }
    
  }
}