-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathPaymentConfigurationAppService.cs
More file actions
99 lines (81 loc) · 4.55 KB
/
PaymentConfigurationAppService.cs
File metadata and controls
99 lines (81 loc) · 4.55 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
using System.Threading.Tasks;
using Unity.Payments.Domain.AccountCodings;
using Unity.Payments.Domain.Exceptions;
using Unity.Payments.Domain.PaymentConfigurations;
using Volo.Abp.Features;
namespace Unity.Payments.PaymentConfigurations
{
[RequiresFeature("Unity.Payments")]
public class PaymentConfigurationAppService : PaymentsAppService, IPaymentConfigurationAppService
{
private readonly IPaymentConfigurationRepository _paymentConfigurationRepository;
public PaymentConfigurationAppService(IPaymentConfigurationRepository paymentConfigurationRepository)
{
_paymentConfigurationRepository = paymentConfigurationRepository;
}
public virtual async Task<PaymentConfigurationDto?> GetAsync()
{
PaymentConfiguration? paymentConfiguration = await FindPaymentConfigurationAsync();
if (paymentConfiguration == null) { return null; }
return ObjectMapper.Map<PaymentConfiguration, PaymentConfigurationDto>(paymentConfiguration);
}
public virtual async Task<string?> GetAccountDistributionCodeAsync()
{
PaymentConfiguration? paymentConfiguration = await FindPaymentConfigurationAsync();
string accountDistributionCode = "";
if (paymentConfiguration != null
&& paymentConfiguration.Responsibility != null
&& paymentConfiguration.ServiceLine != null
&& paymentConfiguration.Stob != null
&& paymentConfiguration.MinistryClient != null
&& paymentConfiguration.ProjectNumber != null)
{
string accountDistributionPostFix = "000000.0000";
accountDistributionCode =
$"{paymentConfiguration.MinistryClient}.{paymentConfiguration.Responsibility}.{paymentConfiguration.ServiceLine}.{paymentConfiguration.Stob}.{paymentConfiguration.ProjectNumber}.{accountDistributionPostFix}";
}
return accountDistributionCode;
}
public virtual async Task<PaymentConfigurationDto> CreateAsync(CreatePaymentConfigurationDto createPaymentConfigurationDto)
{
PaymentConfiguration? paymentConfiguration = await FindPaymentConfigurationAsync();
if (paymentConfiguration != null)
{
throw new ConfigurationExistsException(L[ErrorConsts.ConfigurationExists]);
}
var newPaymentConfiguration = await _paymentConfigurationRepository.InsertAsync(new PaymentConfiguration
(
createPaymentConfigurationDto.PaymentThreshold,
createPaymentConfigurationDto.PaymentIdPrefix,
AccountCoding.Create(
createPaymentConfigurationDto.MinistryClient,
createPaymentConfigurationDto.Responsibility,
createPaymentConfigurationDto.ServiceLine,
createPaymentConfigurationDto.Stob,
createPaymentConfigurationDto.ProjectNumber
)
));
return ObjectMapper.Map<PaymentConfiguration, PaymentConfigurationDto>(newPaymentConfiguration);
}
public virtual async Task<PaymentConfigurationDto> UpdateAsync(UpdatePaymentConfigurationDto updatePaymentConfigurationDto)
{
PaymentConfiguration? paymentConfiguration = await FindPaymentConfigurationAsync() ??
throw new ConfigurationExistsException(L[ErrorConsts.ConfigurationDoesNotExist]);
paymentConfiguration.PaymentThreshold = updatePaymentConfigurationDto.PaymentThreshold;
paymentConfiguration.PaymentIdPrefix = updatePaymentConfigurationDto.PaymentIdPrefix;
paymentConfiguration.SetAccountCoding(AccountCoding.Create(updatePaymentConfigurationDto.MinistryClient,
updatePaymentConfigurationDto.Responsibility,
updatePaymentConfigurationDto.ServiceLine,
updatePaymentConfigurationDto.Stob,
updatePaymentConfigurationDto.ProjectNumber));
var updatedConfiguration = await _paymentConfigurationRepository.UpdateAsync(paymentConfiguration);
return ObjectMapper.Map<PaymentConfiguration, PaymentConfigurationDto>(updatedConfiguration);
}
protected virtual async Task<PaymentConfiguration?> FindPaymentConfigurationAsync()
{
var paymentConfigurations = await _paymentConfigurationRepository.GetListAsync();
var paymentConfiguration = paymentConfigurations.Count > 0 ? paymentConfigurations[0] : null;
return paymentConfiguration;
}
}
}