From e41002dc01b110650387a270d875ef3e8f249a40 Mon Sep 17 00:00:00 2001 From: Chomp Date: Wed, 21 May 2025 10:41:24 +0100 Subject: [PATCH] improved readability of `GetQuestFromDb()` Added nullguards Flagged return as nullable --- .../Helpers/QuestRewardHelper.cs | 33 ++++++++----------- 1 file changed, 13 insertions(+), 20 deletions(-) diff --git a/Libraries/SPTarkov.Server.Core/Helpers/QuestRewardHelper.cs b/Libraries/SPTarkov.Server.Core/Helpers/QuestRewardHelper.cs index f34a817a..6a5838fa 100644 --- a/Libraries/SPTarkov.Server.Core/Helpers/QuestRewardHelper.cs +++ b/Libraries/SPTarkov.Server.Core/Helpers/QuestRewardHelper.cs @@ -81,30 +81,23 @@ public class QuestRewardHelper( ); } - /** - * Get quest by id from database (repeatables are stored in profile, check there if questId not found) - * @param questId Id of quest to find - * @param pmcData Player profile - * @returns IQuest object - */ - protected Quest GetQuestFromDb(string questId, PmcData pmcData) + /// + /// Get quest by id from database (repeatable quests are stored in profile, check there if questId not found) + /// + /// Id of quest to find + /// Player profile + /// IQuest object + protected Quest? GetQuestFromDb(string questId, PmcData pmcData) { - // May be a repeatable quest - var quest = _databaseService.GetQuests().FirstOrDefault(x => x.Key == questId).Value; - if (quest == null) - // Check daily/weekly objects + // Look for quest in db + if (_databaseService.GetQuests().TryGetValue(questId, out var quest)) { - foreach (var repeatableQuest in pmcData.RepeatableQuests) - { - quest = repeatableQuest.ActiveQuests.FirstOrDefault(r => r.Id == questId); - if (quest != null) - { - break; - } - } + return quest; } - return quest; + // Group daily/weekly/scav repeatable subtypes into one collection and find first that matched desired quest id + return pmcData.RepeatableQuests?.SelectMany(repeatableQuestSubType => repeatableQuestSubType.ActiveQuests) + .FirstOrDefault(repeatableQuest => repeatableQuest.Id == questId); } ///