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; 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(); foreach (var item in request.Items) { pmcData.WishList.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, MongoId sessionId) { foreach (var itemId in request.Items) { pmcData.WishList.Remove(itemId); } return eventOutputHolder.GetOutput(sessionId); } /// /// Handle changeWishlistItemCategory event /// /// Players PMC profile /// /// Session/Player id /// public ItemEventRouterResponse ChangeWishListItemCategory(PmcData pmcData, ChangeWishlistItemCategoryRequest request, MongoId sessionId) { pmcData.WishList[request.Item] = request.Category.Value; return eventOutputHolder.GetOutput(sessionId); } }