IncomingDocumentBaseHandlers.cs
2.88 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
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
using Sungero.Docflow.IncomingDocumentBase;
namespace Sungero.Docflow
{
partial class IncomingDocumentBaseAddresseesSharedHandlers
{
public virtual void AddresseesAddresseeChanged(Sungero.Docflow.Shared.IncomingDocumentBaseAddresseesAddresseeChangedEventArgs e)
{
if (e.NewValue != null && e.NewValue.Department != null)
_obj.Department = e.NewValue.Department;
}
}
partial class IncomingDocumentBaseAddresseesSharedCollectionHandlers
{
public virtual void AddresseesAdded(Sungero.Domain.Shared.CollectionPropertyAddedEventArgs e)
{
_added.Number = (_obj.Addressees.Max(a => a.Number) ?? 0) + 1;
}
}
partial class IncomingDocumentBaseSharedHandlers
{
public virtual void IsManyAddresseesChanged(Sungero.Domain.Shared.BooleanPropertyChangedEventArgs e)
{
if (e.NewValue == true)
{
Functions.IncomingDocumentBase.ClearAndFillFirstAddressee(_obj);
Functions.IncomingDocumentBase.SetManyAddresseesPlaceholder(_obj);
}
else if (e.NewValue == false)
{
Functions.IncomingDocumentBase.FillAddresseeFromAddressees(_obj);
Functions.IncomingDocumentBase.ClearAndFillFirstAddressee(_obj);
}
}
public virtual void CorrespondentChanged(Sungero.Docflow.Shared.IncomingDocumentBaseCorrespondentChangedEventArgs e)
{
if (e.NewValue != null && !Equals(e.NewValue, e.OldValue) && _obj.InResponseTo != null &&
!_obj.InResponseTo.Addressees.Any(a => Equals(a.Correspondent, _obj.Correspondent)))
_obj.InResponseTo = null;
}
public virtual void InResponseToChanged(Sungero.Docflow.Shared.IncomingDocumentBaseInResponseToChangedEventArgs e)
{
if (Equals(e.NewValue, e.OldValue))
return;
_obj.Relations.AddFromOrUpdate(Constants.Module.ResponseRelationName, e.OldValue, e.NewValue);
if (e.NewValue == null)
return;
var correspondents = e.NewValue.Addressees.Select(a => a.Correspondent).ToList();
if (!correspondents.Contains(_obj.Correspondent))
_obj.Correspondent = e.NewValue.IsManyAddressees.Value ? null : correspondents.FirstOrDefault();
Functions.OfficialDocument.CopyProjects(e.NewValue, _obj);
}
public virtual void AddresseeChanged(Sungero.Docflow.Shared.IncomingDocumentBaseAddresseeChangedEventArgs e)
{
if (e.NewValue != null && !Equals(e.NewValue, e.OldValue) && _obj.BusinessUnit == null)
{
// Не чистить, если указан адресат с пустой НОР.
if (e.NewValue.Department.BusinessUnit != null)
_obj.BusinessUnit = e.NewValue.Department.BusinessUnit;
}
if (_obj.IsManyAddressees == false)
Functions.IncomingDocumentBase.ClearAndFillFirstAddressee(_obj);
}
}
}