ModuleInitializer.cs
4.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
using Sungero.Domain.Initialization;
namespace Sungero.Company.Server
{
public partial class ModuleInitializer
{
public override void Initializing(Sungero.Domain.ModuleInitializingEventArgs e)
{
CreateReportsTables();
GrantRightsToResponsibilitiesReport();
CreateSorageProcedures();
InitializationLogger.Debug("Init: Create visibility settings.");
CreateVisibilitySettings();
CreateIndecies();
}
/// <summary>
/// Выдать права на отчет о полномочиях.
/// </summary>
public static void GrantRightsToResponsibilitiesReport()
{
var role = Roles.AllUsers;
if (role != null)
Reports.AccessRights.Grant(Reports.GetResponsibilitiesReport().Info, role, DefaultReportAccessRightsTypes.Execute);
}
/// <summary>
/// Создать таблицы для отчетов.
/// </summary>
public static void CreateReportsTables()
{
var responsibilitiesReportTableName = Constants.ResponsibilitiesReport.ResponsibilitiesReportTableName;
Docflow.PublicFunctions.Module.DropReportTempTable(responsibilitiesReportTableName);
Docflow.PublicFunctions.Module.ExecuteSQLCommandFormat(Queries.ResponsibilitiesReport.CreateResponsibilitiesReportTable, new[] { responsibilitiesReportTableName });
}
/// <summary>
/// Создать хранимые процедуры.
/// </summary>
public static void CreateSorageProcedures()
{
var getHeadRecipientsByEmployeeProcedureName = Constants.Module.GetHeadRecipientsByEmployeeProcedureName;
Docflow.PublicFunctions.Module.ExecuteSQLCommandFormat(Queries.Module.CreateProcedureGetHeadRecipientsByEmployee, new[] { getHeadRecipientsByEmployeeProcedureName });
var getAllVisibleRecipientsProcedureName = Constants.Module.GetAllVisibleRecipientsProcedureName;
Docflow.PublicFunctions.Module.ExecuteSQLCommandFormat(Queries.Module.CreateProcedureGetAllVisibleRecipients, new[] { getAllVisibleRecipientsProcedureName, getHeadRecipientsByEmployeeProcedureName });
}
/// <summary>
/// Создать настройки видимости организационной структуры.
/// </summary>
public static void CreateVisibilitySettings()
{
var visibilitySettings = Functions.Module.GetVisibilitySettings();
if (visibilitySettings == null)
Functions.Module.CreateVisibilitySettings();
}
/// <summary>
/// Создать индексы для таблиц модуля.
/// </summary>
public static void CreateIndecies()
{
// Индексы для режима ограничения оргструктуры.
Logger.Debug("Create index for recipient visibility restriction.");
var command = string.Format(Queries.Module.CreateIndexForRecipientVisibility);
Sungero.Docflow.PublicFunctions.Module.ExecuteSQLCommand(command);
// Индексы для Sungero_Core_Recipient.
var tableName = Constants.Module.RecipientTableName;
Logger.DebugFormat("Create index for {0}.", tableName);
var indexName = "idx_Recipient_Discriminator_Parent_Id";
var indexQuery = string.Format(Queries.Module.CreateIndexDiscriminatorParentId, tableName, indexName);
Sungero.Docflow.PublicFunctions.Module.CreateIndexOnTable(tableName, indexName, indexQuery);
indexName = "idx_Recipient_Discriminator_BusinessUnit_Id";
indexQuery = string.Format(Queries.Module.CreateIndexDiscriminatorBusinessUnitId, tableName, indexName);
Sungero.Docflow.PublicFunctions.Module.CreateIndexOnTable(tableName, indexName, indexQuery);
indexName = "idx_Recipient_Discriminator_HeadOffice_Id";
indexQuery = string.Format(Queries.Module.CreateIndexDiscriminatorHeadOfficeId, tableName, indexName);
Sungero.Docflow.PublicFunctions.Module.CreateIndexOnTable(tableName, indexName, indexQuery);
}
}
}