ContactHandlers.cs
2.74 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
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
using Sungero.Parties.Contact;
namespace Sungero.Parties
{
partial class ContactServerHandlers
{
public override void AfterDelete(Sungero.Domain.AfterDeleteEventArgs e)
{
// Удаление из индекса Elasticsearch, если он сконфигурирован.
if (Commons.PublicFunctions.Module.IsElasticsearchConfigured())
Commons.PublicFunctions.Module.CreateRemoveEntityFromIndexAsyncHandler(Contacts.Info.Name, _obj.Id);
}
public override void AfterSave(Sungero.Domain.AfterSaveEventArgs e)
{
// Запуск индексации, если Elasticsearch сконфигурирован и изменились индексируемые поля.
if (Commons.PublicFunctions.Module.IsElasticsearchConfigured() && e.Params.Contains(Sungero.Commons.PublicConstants.Module.IsIndexedEntityInsertedParamKey))
{
var allowCreateRecord = false;
e.Params.TryGetValue(Sungero.Commons.PublicConstants.Module.IsIndexedEntityInsertedParamKey, out allowCreateRecord);
e.Params.Remove(Sungero.Commons.PublicConstants.Module.IsIndexedEntityInsertedParamKey);
Sungero.Commons.PublicFunctions.Module.CreateIndexEntityAsyncHandler(Contacts.Info.Name, _obj.Id, Functions.Contact.GetIndexingJson(_obj), allowCreateRecord);
}
}
public override void BeforeSave(Sungero.Domain.BeforeSaveEventArgs e)
{
if (Functions.Contact.HaveDuplicates(_obj))
e.AddWarning(Sungero.Commons.Resources.DuplicateDetected, _obj.Info.Actions.ShowDuplicates);
// Выставить параметр необходимости индексации сущности, при изменении индексируемых полей.
var props = _obj.State.Properties;
if (props.Name.IsChanged || props.Company.IsChanged || props.Status.IsChanged)
e.Params.AddOrUpdate(Sungero.Commons.PublicConstants.Module.IsIndexedEntityInsertedParamKey, _obj.State.IsInserted);
}
public override void BeforeDelete(Sungero.Domain.BeforeDeleteEventArgs e)
{
if (!Commons.PublicFunctions.Module.IsAllExternalEntityLinksDeleted(_obj))
throw AppliedCodeException.Create(Commons.Resources.HasLinkedExternalEntities);
}
public override void Created(Sungero.Domain.CreatedEventArgs e)
{
ICompanyBase company;
if (CallContext.CalledFrom(CompanyBases.Info))
{
company = CompanyBases.Get(CallContext.GetCallerEntityId(CompanyBases.Info));
_obj.Company = company;
}
if (Contacts.Info.Properties.Company.TryGetFilter(out company))
{
_obj.Company = company;
}
}
}
}