Skip to content

Commit

Permalink
Update CSC trophy check app
Browse files Browse the repository at this point in the history
  • Loading branch information
justinyoo committed Jul 10, 2024
1 parent a06026f commit 9ccb122
Show file tree
Hide file tree
Showing 3 changed files with 63 additions and 26 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,24 @@ namespace HackersGround.Csc.Trophies.ConsoleApp.Configs;
/// <summary>
/// This represents the settings entity for challenges.
/// </summary>
public class ChallengeSettings : Dictionary<string, List<string>>
public class ChallengeSettings : ChallengeSettings<ChallengeItemSettings>
{
/// <summary>
/// Defines the section name.
/// </summary>
public const string Name = "Challenges";
}

/// <summary>
/// This represents the settings entity for challenges.
/// </summary>
public class ChallengeSettings<T> : Dictionary<string, T>
{
}

/// <summary>
/// This represents the settings entity for challenge items.
/// </summary>
public class ChallengeItemSettings : Dictionary<int, List<string>>
{
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ public class TrophyCheckService(ChallengeSettings settings) : ITrophyCheckerServ
{
private readonly ChallengeSettings _settings = settings ?? throw new ArgumentNullException(nameof(settings));
#pragma warning disable IDE1006 // Naming Styles

private static readonly List<Exception> exceptions = new()
{
new ArgumentException("TEST: No challenge code identified. It MUST be either AZ-900 or AI-900"),
Expand All @@ -38,6 +39,7 @@ public class TrophyCheckService(ChallengeSettings settings) : ITrophyCheckerServ
new ArgumentException("TEST: No trophies found."),
new Exception("TEST: An error occurred."),
};

#pragma warning restore IDE1006 // Naming Styles

private static JsonSerializerOptions jso => new()
Expand All @@ -60,7 +62,9 @@ public async Task RunAsync(string[] args)

var payload = new ChallengeResultModel()
{
ChallengeCode = options.ChallengeCode.GetValueOrDefault()
ChallengeCode = options.ChallengeCode.GetValueOrDefault(),
ChallengeStatus = ChallengeStatusType.NotCompleted,
Message = "Not all modules are completed."
};

try
Expand Down Expand Up @@ -112,24 +116,27 @@ public async Task RunAsync(string[] args)
}

#pragma warning disable CS8604 // Possible null reference argument.
var modules = this._settings[options.ChallengeCode.ToString()];
var years = this._settings[options.ChallengeCode.ToString()];
#pragma warning restore CS8604 // Possible null reference argument.
List<string> complete = [];
foreach (var module in modules)
foreach (var year in years.Keys.OrderByDescending(p => p))
{
if (trophies.Contains(module) == true)
var modules = years[year];
foreach (var module in modules)
{
complete.Add(module);
if (trophies.Contains(module) == true)
{
complete.Add(module);
}
}
}

payload.ChallengeStatus = modules.Count == complete.Count
? ChallengeStatusType.Completed
: ChallengeStatusType.NotCompleted;

payload.Message = payload.ChallengeStatus == ChallengeStatusType.Completed
? "All modules are completed"
: $"Not all modules are completed. Missing modules: {string.Join(", ", modules.Except(complete))}";
if (complete.Count == modules.Count)
{
payload.ChallengeStatus = ChallengeStatusType.Completed;
payload.Message = "All modules are completed";
break;
}
}

Console.WriteLine(JsonSerializer.Serialize(payload, jso));
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,32 @@
{
"Challenges": {
"AZ_900": [
"Microsoft Azure 기본 사항: 클라우드 개념 설명",
"Microsoft Azure 기본 사항: Azure 아키텍처 및 서비스 설명",
"Microsoft Azure 기본 사항: Azure 관리 및 거버넌스 설명"
],
"AI_900": [
"Microsoft Azure AI 기본 사항: AI 개요",
"Microsoft Azure AI 기본 사항: Computer Vision",
"Microsoft Azure AI 기본 사항: 자연어 처리",
"Microsoft Azure AI 기본 사항: 문서 인텔리전스 및 지식 마이닝",
"Microsoft Azure AI 기본 사항: 생성 AI"
]
"AZ_900": {
"2024": [
"Microsoft Azure 기본 사항: 클라우드 개념 설명",
"Microsoft Azure 기본 사항: Azure 아키텍처 및 서비스 설명",
"Microsoft Azure 기본 사항: Azure 관리 및 거버넌스 설명"
],
"2023": [
"Microsoft Azure 기본 사항: 클라우드 개념 설명",
"Microsoft Azure 기본 사항: Azure 아키텍처 및 서비스 설명",
"Microsoft Azure 기본 사항: Azure 관리 및 거버넌스 설명"
]
},
"AI_900": {
"2024": [
"Microsoft Azure AI 기본 사항: AI 개요",
"Microsoft Azure AI 기본 사항: Computer Vision",
"Microsoft Azure AI 기본 사항: 자연어 처리",
"Microsoft Azure AI 기본 사항: 문서 인텔리전스 및 지식 마이닝",
"Microsoft Azure AI 기본 사항: 생성 AI"
],
"2023": [
"Microsoft Azure AI 기본 사항: AI 개요",
"Microsoft Azure AI 기본 사항: Computer Vision",
"Microsoft Azure AI 기본 사항: 자연어 처리",
"Microsoft Azure AI 기본 사항: 문서 인텔리전스 및 지식 마이닝",
"Microsoft Azure AI 기본 사항: 생성 AI"
]
}
}
}

0 comments on commit 9ccb122

Please sign in to comment.