Skip to content

Commit 69165f4

Browse files
authored
Merge pull request #317 from dagstuan/pvlAsEmergency
Show persistent weak layer as emergency in the API.
2 parents 55e653d + 6aeabd3 commit 69165f4

File tree

3 files changed

+34
-8
lines changed

3 files changed

+34
-8
lines changed

SkredvarselGarminWeb/SkredvarselGarminWeb/Endpoints/Mappers/DetailedAvalancheWarningMapper.cs

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ public static class DetailedAvalancheWarningMapper
1212
varsomWarning.ValidFrom,
1313
varsomWarning.ValidTo,
1414
],
15-
HasEmergency = !string.IsNullOrWhiteSpace(varsomWarning.EmergencyWarning?.ToEmergencyWarning(langKey)),
15+
HasEmergency = !string.IsNullOrWhiteSpace(varsomWarning.EmergencyWarning?.ToEmergencyWarning(langKey, varsomWarning.AvalancheProblems)),
1616
};
1717

1818
public static DetailedAvalancheWarning ToDetailedAvalancheWarning(this VarsomDetailedAvalancheWarning varsomWarning, string langKey) => new()
@@ -39,16 +39,29 @@ public static class DetailedAvalancheWarningMapper
3939
Propagation = problem.AvalPropagationId,
4040
}).OrderByDescending(x => x.DangerLevel),
4141
IsTendency = varsomWarning.IsTendency,
42-
EmergencyWarning = varsomWarning.EmergencyWarning?.ToEmergencyWarning(langKey)
42+
EmergencyWarning = varsomWarning.EmergencyWarning?.ToEmergencyWarning(langKey, varsomWarning.AvalancheProblems)
4343
};
4444

45-
private static string? ToEmergencyWarning(this string emergencyWarning, string langKey)
45+
private static string? ToEmergencyWarning(this string emergencyWarning, string langKey, IEnumerable<VarsomAvalancheProblem>? avalancheProblems)
4646
{
47-
var notGivenText = langKey == "1" ? "ikke gitt" : "not given";
47+
const string langKeyNorwegian = "1";
48+
const string langKeyEnglish = "2";
49+
const string notGivenNorwegian = "ikke gitt";
50+
const string notGivenEnglish = "not given";
4851

49-
return !string.IsNullOrWhiteSpace(emergencyWarning) &&
50-
!emergencyWarning.Equals(notGivenText, StringComparison.CurrentCultureIgnoreCase)
51-
? emergencyWarning
52-
: null;
52+
var hasPersistentWeakLayer = avalancheProblems?.Any(problem => problem.AvalancheProblemTypeId == AvalancheProblemType.PersistentWeakLayerSlabAvalanches) ?? false;
53+
54+
var persistentWeakLayerWarning = hasPersistentWeakLayer ? langKey == langKeyNorwegian ? "Vedvarende svakt lag" : "Persistent weak layer" : null;
55+
56+
return (langKey, emergencyWarning.ToLower(), persistentWeakLayerWarning) switch
57+
{
58+
(langKeyNorwegian, notGivenNorwegian, null) => null,
59+
(langKeyEnglish, notGivenEnglish, null) => null,
60+
(langKeyNorwegian, _, null) => emergencyWarning,
61+
(langKeyEnglish, _, null) => emergencyWarning,
62+
(langKeyNorwegian, notGivenNorwegian, _) => $"{persistentWeakLayerWarning}.",
63+
(langKeyEnglish, notGivenEnglish, _) => $"{persistentWeakLayerWarning}.",
64+
(_, _, _) => $"{persistentWeakLayerWarning}. {emergencyWarning}.",
65+
};
5366
}
5467
}

SkredvarselGarminWeb/SkredvarselGarminWeb/VarsomApi/Models/Enums.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,17 @@
11
namespace SkredvarselGarminWeb.VarsomApi.Models;
22

3+
public enum AvalancheProblemType
4+
{
5+
NotGiven = 0,
6+
NewSnowLooseSnowAvalanches = 3,
7+
WetSnowLooseSnowAvalanches = 5,
8+
NewSnowSlabAvalanches = 7,
9+
WindDriftedSnowSlabAvalanches = 10,
10+
PersistentWeakLayerSlabAvalanches = 30,
11+
WetSnowSlabAvalanches = 45,
12+
GlidingSnowAvalanches = 50,
13+
}
14+
315
public enum DestructiveSizeExt
416
{
517
NotGiven = 0,

SkredvarselGarminWeb/SkredvarselGarminWeb/VarsomApi/Models/VarsomDetailedAvalancheWarning.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ public class VarsomDetailedAvalancheWarning
1515
public class VarsomAvalancheProblem
1616
{
1717
public required string AvalancheProblemTypeName { get; init; }
18+
public required AvalancheProblemType AvalancheProblemTypeId { get; init; }
1819
public required int ExposedHeight1 { get; init; }
1920
public required int ExposedHeight2 { get; init; }
2021
public required int ExposedHeightFill { get; init; }

0 commit comments

Comments
 (0)