-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathExternalClientDataProvider.cs
62 lines (50 loc) · 2.07 KB
/
ExternalClientDataProvider.cs
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
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
namespace Gschwind.Lighthouse.Example;
/// <summary>
/// Ein Wertpapier aus externer Quelle
/// </summary>
/// <param name="Isin">Die ISIN</param>
/// <param name="Quantity">Die Stückzahl</param>
/// <param name="Quote">Der aktuelle Kurs</param>
/// <seealso cref="ExternalSecuritiesAccount"/>
record ExternalSecurity(string Isin, double Quantity, double Quote);
/// <summary>
/// Ein Wertpapierdepot aus externer Quelle
/// </summary>
/// <param name="AccountNumber">Die Depotnummer</param>
/// <param name="Securities">Der Inhalt des Depots</param>
/// <seealso cref="ExternalClientPortfolio"/>
record ExternalSecuritiesAccount(string AccountNumber, IEnumerable<ExternalSecurity> Securities);
/// <summary>
/// Ein Kundenportfolio aus externer Quelle
/// </summary>
/// <param name="ClientId">Die Kundennummer</param>
/// <param name="Accounts">Die Wertpapierdepots des Kunden</param>
record ExternalClientPortfolio(string ClientId, IEnumerable<ExternalSecuritiesAccount> Accounts);
/// <summary>
/// Deutet eine externe Quelle für Kundendaten an
/// </summary>
internal class ExternalClientDataProvider {
#region Abhängigkeiten
readonly JsonSerializerSettings _jsonSettings;
readonly ILogger<ExternalClientDataProvider> _logger;
public ExternalClientDataProvider(JsonSerializerSettings jsonSettings, ILogger<ExternalClientDataProvider> logger) =>
(_jsonSettings, _logger) = (jsonSettings, logger);
#endregion
/// <summary>
/// Wertpapierdepots auslesen
/// </summary>
/// <returns>
/// Eine <see cref="Task{TResult}"/>, die die Wertpapierdeopts enthält.
/// </returns>
internal async Task<IEnumerable<ExternalClientPortfolio>?> GetPortfoliosAsync() {
try {
var json = await File.ReadAllTextAsync("portfolios.json");
return JsonConvert.DeserializeObject<IEnumerable<ExternalClientPortfolio>>(json, _jsonSettings);
} catch (Exception e) {
_logger.LogError(e, "Plan konnte nicht geladen werden.");
}
return null;
}
}