From 683496ae0a8a0ba7d5147c568a791d645a7e793e Mon Sep 17 00:00:00 2001 From: CWX Date: Sat, 18 Jan 2025 15:37:30 +0000 Subject: [PATCH] use prim ctor and fixed warnings: BuildController --- Core/Controllers/BuildController.cs | 57 +++++++++++++---------------- 1 file changed, 26 insertions(+), 31 deletions(-) diff --git a/Core/Controllers/BuildController.cs b/Core/Controllers/BuildController.cs index f9939942..a0358ae7 100644 --- a/Core/Controllers/BuildController.cs +++ b/Core/Controllers/BuildController.cs @@ -3,56 +3,50 @@ using Core.Helpers; using Core.Models.Eft.Builds; using Core.Models.Eft.PresetBuild; using Core.Models.Eft.Profile; -using Core.Models.Enums; using Core.Services; using Core.Utils.Cloners; namespace Core.Controllers; [Injectable] -public class BuildController +public class BuildController( + ProfileHelper _profileHelper, + DatabaseService _databaseService, + ICloner _cloner +) { - protected ProfileHelper _profileHelper; - protected DatabaseService _databaseService; - protected ICloner _cloner; - - public BuildController( - ProfileHelper profileHelper, - DatabaseService databaseService, - ICloner cloner) - { - _profileHelper = profileHelper; - _databaseService = databaseService; - _cloner = cloner; - } - /// /// Handle client/handbook/builds/my/list /// /// /// - public UserBuilds GetUserBuilds(string sessionID) + public UserBuilds? GetUserBuilds(string sessionID) { - var secureContainerSlotId = "SecuredContainer"; + const string secureContainerSlotId = "SecuredContainer"; var profile = _profileHelper.GetFullProfile(sessionID); - if (profile.UserBuildData is null) + if (profile is not null && profile.UserBuildData is null) { - profile.UserBuildData = new UserBuilds{ EquipmentBuilds = [], WeaponBuilds = [], MagazineBuilds = [] }; + profile.UserBuildData = new UserBuilds { EquipmentBuilds = [], WeaponBuilds = [], MagazineBuilds = [] }; } // Ensure the secure container in the default presets match what the player has equipped var defaultEquipmentPresetsClone = _cloner.Clone( - _databaseService.GetTemplates().DefaultEquipmentPresets); - var playerSecureContainer = profile.CharacterData.PmcData.Inventory.Items?.FirstOrDefault( - (x) => x.SlotId == secureContainerSlotId); - var firstDefaultItemsSecureContainer = defaultEquipmentPresetsClone[0]?.Items?.FirstOrDefault( - (x) => x.SlotId == secureContainerSlotId); - if (playerSecureContainer is not null && playerSecureContainer?.Template != firstDefaultItemsSecureContainer?.Template) + _databaseService.GetTemplates().DefaultEquipmentPresets + ); + var playerSecureContainer = profile?.CharacterData?.PmcData?.Inventory?.Items?.FirstOrDefault( + x => x.SlotId == secureContainerSlotId + ); + var firstDefaultItemsSecureContainer = defaultEquipmentPresetsClone?.FirstOrDefault() + ?.Items?.FirstOrDefault( + x => x.SlotId == secureContainerSlotId + ); + if (playerSecureContainer is not null && playerSecureContainer.Template != firstDefaultItemsSecureContainer?.Template) { // Default equipment presets' secure container tpl doesn't match players secure container tpl - foreach (var defaultPreset in defaultEquipmentPresetsClone) { + foreach (var defaultPreset in defaultEquipmentPresetsClone ?? []) + { // Find presets secure container - var secureContainer = defaultPreset.Items.FirstOrDefault((item) => item.SlotId == secureContainerSlotId); + var secureContainer = defaultPreset.Items?.FirstOrDefault(item => item.SlotId == secureContainerSlotId); if (secureContainer is not null) { secureContainer.Template = playerSecureContainer.Template; @@ -61,8 +55,8 @@ public class BuildController } // Clone player build data from profile and append the above defaults onto end - var userBuildsClone = _cloner.Clone(profile.UserBuildData); - userBuildsClone.EquipmentBuilds.AddRange(defaultEquipmentPresetsClone); + var userBuildsClone = _cloner.Clone(profile?.UserBuildData); + userBuildsClone?.EquipmentBuilds?.AddRange(defaultEquipmentPresetsClone ?? []); return userBuildsClone; } @@ -94,7 +88,8 @@ public class BuildController /// public void RemoveBuild(string sessionId, RemoveBuildRequestData request) { - RemovePlayerBuild(request.Id, sessionId); + if (request.Id is not null) + RemovePlayerBuild(request.Id, sessionId); } ///