MinutesServerFunctions.cs
5.89 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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
using Sungero.Domain.Shared;
using Sungero.Meetings.Minutes;
using Sungero.Metadata;
namespace Sungero.Meetings.Server
{
partial class MinutesFunctions
{
/// <summary>
/// Заполнение свойств поручения, созданного по документу.
/// </summary>
/// <param name="actionItem">Поручение, созданное по документу.</param>
public override void FillActionItemExecutionTaskOnCreatedFromDocument(RecordManagement.IActionItemExecutionTask actionItem)
{
var currentEmployee = Company.Employees.Current;
if (_obj.Meeting != null)
{
actionItem.AssignedBy = currentEmployee;
if (_obj.Meeting.President != null)
{
var secretary = Docflow.PublicFunctions.Module.GetSecretary(_obj.Meeting.President);
var substitutedEmployees = Substitutions.ActiveSubstitutedUsers.Where(asu => Company.Employees.Is(asu))
.Select(asu => Company.Employees.As(asu))
.ToList();
if (Equals(secretary, currentEmployee) || substitutedEmployees.Contains(_obj.Meeting.President))
actionItem.AssignedBy = _obj.Meeting.President;
else if (!Equals(_obj.Meeting.President, currentEmployee) && !Equals(_obj.Meeting.President, actionItem.Assignee) &&
!actionItem.CoAssignees.Any(x => Equals(_obj.Meeting.President, x.Assignee)))
actionItem.ActionItemObservers.AddNew().Observer = _obj.Meeting.President;
}
}
}
/// <summary>
/// Создать протокол.
/// </summary>
/// <returns>Протокол.</returns>
[Public, Remote]
public static IMinutes CreateMinutes()
{
return Minuteses.Create();
}
/// <summary>
/// Получить список участников совещания для краткого протокола.
/// </summary>
/// <param name="minutes">Протокол.</param>
/// <returns>Список участников совещания.</returns>
[Converter("GetMeetingMembersShortMinutes")]
public static string GetMeetingMembersShortMinutes(IMinutes minutes)
{
if (minutes.Meeting == null)
return null;
return PublicFunctions.Meeting.Remote.GetMeetingMembersString(minutes.Meeting, false, false);
}
/// <summary>
/// Получить список участников совещания для полного протокола.
/// </summary>
/// <param name="minutes">Протокол.</param>
/// <returns>Список участников совещания.</returns>
[Converter("GetMeetingMembersFullMinutes")]
public static string GetMeetingMembersFullMinutes(IMinutes minutes)
{
if (minutes.Meeting == null)
return null;
return PublicFunctions.Meeting.Remote.GetMeetingMembersString(minutes.Meeting, true, false);
}
/// <summary>
/// Получить список из председателя, секретаря и участников совещания с должностями.
/// </summary>
/// <param name="minutes">Протокол.</param>
/// <returns>Список из председателя, секретаря и участников совещания с должностями.</returns>
[Converter("GetMeetingChairpersonSecretaryMembersWithJobTitle")]
public static string GetMeetingChairpersonSecretaryMembersWithJobTitle(IMinutes minutes)
{
if (minutes.Meeting == null)
return null;
return PublicFunctions.Meeting.Remote.GetMeetingMembersString(minutes.Meeting, false, true);
}
/// <summary>
/// Получить список участников совещания с должностями.
/// </summary>
/// <param name="minutes">Протокол.</param>
/// <returns>Список участников совещания с должностями.</returns>
[Converter("GetMeetingMembersWithJobTitle")]
public static string GetMeetingMembersWithJobTitle(IMinutes minutes)
{
if (minutes.Meeting == null)
return null;
return PublicFunctions.Meeting.Remote.GetMeetingMembersString(minutes.Meeting, true, true);
}
/// <summary>
/// Получить председателя совещания.
/// </summary>
/// <param name="minutes">Протокол.</param>
/// <returns>Председатель совещания.</returns>
[Converter("GetMeetingPresident")]
public static Company.IEmployee GetMeetingPresident(IMinutes minutes)
{
if (minutes.Meeting != null && minutes.Meeting.President != null)
return minutes.Meeting.President;
return minutes.OurSignatory;
}
/// <summary>
/// Получить секретаря совещания.
/// </summary>
/// <param name="minutes">Протокол.</param>
/// <returns>Секретарь совещания.</returns>
[Converter("GetMeetingSecretary")]
public static Company.IEmployee GetMeetingSecretary(IMinutes minutes)
{
if (minutes.Meeting != null && minutes.Meeting.Secretary != null)
return minutes.Meeting.Secretary;
return minutes.PreparedBy;
}
/// <summary>
/// Получить наименование совещания.
/// </summary>
/// <param name="minutes">Протокол.</param>
/// <returns>Наименование совещания.</returns>
[Converter("GetMeetingName")]
public static string GetMeetingName(IMinutes minutes)
{
if (minutes.Meeting != null)
return minutes.Meeting.Name.Trim();
if (!string.IsNullOrEmpty(minutes.Subject))
return minutes.Subject;
return minutes.Name.Trim();
}
}
}