using SPTarkov.DI.Annotations; using SPTarkov.Server.Core.Models.Common; using SPTarkov.Server.Core.Models.Eft.Common; using SPTarkov.Server.Core.Models.Eft.ItemEvent; using SPTarkov.Server.Core.Models.Eft.Wishlist; using SPTarkov.Server.Core.Routers; using SPTarkov.Server.Core.Utils.Json; namespace SPTarkov.Server.Core.Controllers; [Injectable] public class WishlistController(EventOutputHolder _eventOutputHolder) { /// /// Handle AddToWishList /// /// Players PMC profile /// /// Session/Player id /// public ItemEventRouterResponse AddToWishList( PmcData pmcData, AddToWishlistRequest request, MongoId sessionId ) { pmcData.WishList ??= new DictionaryOrList(new Dictionary(), []); foreach (var item in request.Items) { pmcData.WishList.Dictionary.Add(item.Key, item.Value); } return _eventOutputHolder.GetOutput(sessionId); } /// /// Handle RemoveFromWishList event /// /// Players PMC profile /// /// Session/Player id /// public ItemEventRouterResponse RemoveFromWishList( PmcData pmcData, RemoveFromWishlistRequest request, string sessionId ) { foreach (var itemId in request.Items) { pmcData.WishList.Dictionary.Remove(itemId); } return _eventOutputHolder.GetOutput(sessionId); } /// /// Handle changeWishlistItemCategory event /// /// Players PMC profile /// /// Session/Player id /// public ItemEventRouterResponse ChangeWishListItemCategory( PmcData pmcData, ChangeWishlistItemCategoryRequest request, string sessionId ) { pmcData.WishList.Dictionary[request.Item] = request.Category.Value; return _eventOutputHolder.GetOutput(sessionId); } }