CurrencyHandlers.cs
2 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
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Commons.Currency;
using Sungero.Core;
using Sungero.CoreEntities;
namespace Sungero.Commons
{
partial class CurrencyServerHandlers
{
public override void BeforeDelete(Sungero.Domain.BeforeDeleteEventArgs e)
{
if (!Functions.Module.IsAllExternalEntityLinksDeleted(_obj))
throw AppliedCodeException.Create(Commons.Resources.HasLinkedExternalEntities);
}
public override void Created(Sungero.Domain.CreatedEventArgs e)
{
if (!_obj.State.IsCopied)
{
_obj.IsDefault = false;
}
}
public override void BeforeSave(Sungero.Domain.BeforeSaveEventArgs e)
{
var result = Functions.Currency.ValidateNumericCode(_obj.NumericCode);
if (!string.IsNullOrEmpty(result))
e.AddError(result);
if (Functions.Currency.HaveDuplicates(_obj))
e.AddError(Sungero.Commons.Resources.DuplicateDetected, _obj.Info.Actions.ShowDuplicates);
// Нельзя закрывать валюту по умолчанию.
if (_obj.Status == Status.Closed && _obj.IsDefault == true)
e.AddError(Currencies.Resources.ClosedCurrencyCannotBeDefault);
// Если установить для текущей валюты флаг валюты по умолчанию, то с другой валюты этот флаг снимается.
if (_obj.IsDefault == true)
{
var defaultCurrency = Functions.Currency.GetDefaultCurrency();
if (defaultCurrency != null && defaultCurrency != _obj)
{
var lockInfo = Locks.GetLockInfo(defaultCurrency);
if (lockInfo != null && lockInfo.IsLocked)
{
var error = Commons.Resources.LinkedEntityLockedFormat(
defaultCurrency.Name,
defaultCurrency.Id,
lockInfo.OwnerName);
e.AddError(error);
}
defaultCurrency.IsDefault = false;
}
}
}
}
}