Sitelet https://github.com/Altinn/app-lib-dotnet/commit/7d37da579341a4768428988d32141b83320991f5
Skip to content

Commit 7d37da5

Browse files
fixed null references and warnings
1 parent 66787d2 commit 7d37da5

3 files changed

Lines changed: 42 additions & 36 deletions

File tree

‎src/Altinn.App.Core/Implementation/PrefillSI.cs‎

Lines changed: 25 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -222,30 +222,34 @@ when await systemUser.LoadDetails() is { } details && details.Party.PartyId == p
222222
{
223223
foreach (var dataset in datasetList)
224224
{
225-
var datasetName = dataset.SelectToken("name").ToString();
226-
225+
var datasetName = dataset.SelectToken("name")?.ToString();
227226
var subject = !string.IsNullOrWhiteSpace(party.SSN) ? party.SSN : party.OrgNumber;
228-
229227
var fields = dataset.SelectToken("mappings");
230-
var danPrefill = fields
231-
.SelectMany(obj => obj.Children<JProperty>())
232-
.ToDictionary(prop => prop.Name, prop => prop.Value.ToString());
233-
234-
var danDataset = await _danClient.GetDataset(datasetName, subject, fields.ToString());
235-
if (danDataset.Count > 0)
236-
{
237-
JObject danJsonObject = JObject.FromObject(danDataset);
238-
_logger.LogInformation($"Started prefill from {_danKey}");
239-
LoopThroughDictionaryAndAssignValuesToDataModel(
240-
SwapKeyValuesForPrefill(danPrefill),
241-
danJsonObject,
242-
dataModel
243-
);
244-
}
245-
else
228+
if (fields != null)
246229
{
247-
string errorMessage = $"Could not prefill from {_danKey}, data is not defined.";
248-
_logger.LogError(errorMessage);
230+
var danPrefill = fields
231+
.SelectMany(obj => obj.Children<JProperty>())
232+
.ToDictionary(prop => prop.Name, prop => prop.Value.ToString());
233+
234+
if (datasetName != null)
235+
{
236+
var danDataset = await _danClient.GetDataset(datasetName, subject, fields.ToString());
237+
if (danDataset.Count > 0)
238+
{
239+
JObject danJsonObject = JObject.FromObject(danDataset);
240+
_logger.LogInformation($"Started prefill from {_danKey}");
241+
LoopThroughDictionaryAndAssignValuesToDataModel(
242+
SwapKeyValuesForPrefill(danPrefill),
243+
danJsonObject,
244+
dataModel
245+
);
246+
}
247+
else
248+
{
249+
string errorMessage = $"Could not prefill from {_danKey}, data is not defined.";
250+
_logger.LogError(errorMessage);
251+
}
252+
}
249253
}
250254
}
251255
}

‎src/Altinn.App.Core/Infrastructure/Clients/Dan/DanClient.cs‎

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public DanClient(HttpClient httpClient, IOptions<DanSettings> settings, IService
4343
/// </summary>
4444
/// <param name="dataset">Dataset from Dan</param>
4545
/// <param name="subject">Usually ssn or orgNumber</param>
46-
/// <param name="jmesPath">jmesPath - usd to filter out just the fields we need</param>
46+
/// <param name="fields">The fields we fetch from the api</param>
4747
/// <returns></returns>
4848
public async Task<Dictionary<string, string>> GetDataset(string dataset, string subject, string fields)
4949
{
@@ -74,7 +74,7 @@ public async Task<Dictionary<string, string>> GetDataset(string dataset, string
7474
var dictionary = new Dictionary<string, string>();
7575
var resultJson = result.Content.ReadAsStringAsync().Result;
7676

77-
//some datasets might return an array. The array need to be serialized differently than a single object
77+
//some datasets might return an array. The array needs to be serialized differently than a single object
7878
if (IsJsonArray(resultJson))
7979
{
8080
dictionary = await ConvertListToDictionary(resultJson);
@@ -98,18 +98,20 @@ private async Task<JwtToken> GetMaskinportenToken()
9898
return token;
9999
}
100100

101-
private async Task<Dictionary<string, string>> ConvertListToDictionary(string jsonString)
101+
private static Task<Dictionary<string, string>> ConvertListToDictionary(string jsonString)
102102
{
103103
var list = JsonConvert.DeserializeObject<List<Dictionary<string, string>>>(jsonString);
104-
105-
var mergedDictionary = list.SelectMany(d => d)
106-
.GroupBy(kvp => kvp.Key)
107-
.ToDictionary(g => g.Key, g => string.Join(",", g.Select(x => x.Value)));
108-
109-
return mergedDictionary;
104+
if (list != null)
105+
return Task.FromResult(
106+
list.SelectMany(d => d)
107+
.GroupBy(kvp => kvp.Key)
108+
.ToDictionary(g => g.Key, g => string.Join(",", g.Select(x => x.Value)))
109+
);
110+
111+
return Task.FromResult(new Dictionary<string, string>());
110112
}
111113

112-
private bool IsJsonArray(string jsonString)
114+
private static bool IsJsonArray(string jsonString)
113115
{
114116
try
115117
{
@@ -122,11 +124,11 @@ private bool IsJsonArray(string jsonString)
122124
}
123125
}
124126

125-
private List<string> GetQuery(string json)
127+
private static List<string> GetQuery(string json)
126128
{
127129
var list = JsonSerializer.Deserialize<List<Dictionary<string, string>>>(json);
128-
129-
var keys = list.Where(l => l.Any()).Select(l => l.Keys.First()).ToList();
130-
return keys;
130+
if (list != null)
131+
return list.Where(l => l.Count != 0).Select(l => l.Keys.First()).ToList();
132+
return new List<string>();
131133
}
132134
}

‎src/Altinn.App.Core/Internal/Dan/IDanClient.cs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ public interface IDanClient
1010
/// </summary>
1111
/// <param name="dataset">Name of the dataset</param>
1212
/// <param name="subject">Usually ssn or OrgNumber</param>
13-
/// <param name="jmesPathExpression">jmesPathExpression</param>
13+
/// <param name="fields">fields to fetch from endpoint</param>
1414
/// <returns></returns>
1515
public Task<Dictionary<string, string>> GetDataset(string dataset, string subject, string fields);
1616
}

0 commit comments

Comments
 (0)