Update controllers sessionIds

This commit is contained in:
Cj
2025-07-07 05:50:28 -04:00
parent 39e4a6e676
commit 1de6a75cbf
34 changed files with 1079 additions and 1178 deletions
@@ -20,24 +20,24 @@ namespace SPTarkov.Server.Core.Controllers;
[Injectable]
public class TradeController(
ISptLogger<TradeController> _logger,
DatabaseService _databaseService,
EventOutputHolder _eventOutputHolder,
TradeHelper _tradeHelper,
TimeUtil _timeUtil,
RandomUtil _randomUtil,
ItemHelper _itemHelper,
ProfileHelper _profileHelper,
RagfairOfferHelper _ragfairOfferHelper,
RagfairServer _ragfairServer,
HttpResponseUtil _httpResponseUtil,
ServerLocalisationService _serverLocalisationService,
MailSendService _mailSendService,
ConfigServer _configServer
ISptLogger<TradeController> logger,
DatabaseService databaseService,
EventOutputHolder eventOutputHolder,
TradeHelper tradeHelper,
TimeUtil timeUtil,
RandomUtil randomUtil,
ItemHelper itemHelper,
ProfileHelper profileHelper,
RagfairOfferHelper ragfairOfferHelper,
RagfairServer ragfairServer,
HttpResponseUtil httpResponseUtil,
ServerLocalisationService serverLocalisationService,
MailSendService mailSendService,
ConfigServer configServer
)
{
protected readonly RagfairConfig _ragfairConfig = _configServer.GetConfig<RagfairConfig>();
protected readonly TraderConfig _traderConfig = _configServer.GetConfig<TraderConfig>();
protected readonly RagfairConfig _ragfairConfig = configServer.GetConfig<RagfairConfig>();
protected readonly TraderConfig _traderConfig = configServer.GetConfig<TraderConfig>();
/// <summary>
/// Handle TradingConfirm event
@@ -49,17 +49,17 @@ public class TradeController(
public ItemEventRouterResponse ConfirmTrading(
PmcData pmcData,
ProcessBaseTradeRequestData request,
string sessionID
MongoId sessionID
)
{
var output = _eventOutputHolder.GetOutput(sessionID);
var output = eventOutputHolder.GetOutput(sessionID);
// Buying
if (request.Type == "buy_from_trader")
{
var foundInRaid = _traderConfig.PurchasesAreFoundInRaid;
var buyData = (ProcessBuyTradeRequestData)request;
_tradeHelper.BuyItem(pmcData, buyData, sessionID, foundInRaid, output);
tradeHelper.BuyItem(pmcData, buyData, sessionID, foundInRaid, output);
return output;
}
@@ -68,15 +68,15 @@ public class TradeController(
if (request.Type == "sell_to_trader")
{
var sellData = (ProcessSellTradeRequestData)request;
_tradeHelper.SellItem(pmcData, pmcData, sellData, sessionID, output);
tradeHelper.SellItem(pmcData, pmcData, sellData, sessionID, output);
return output;
}
var errorMessage = $"Unhandled trade event: {request.Type}";
_logger.Error(errorMessage);
logger.Error(errorMessage);
return _httpResponseUtil.AppendErrorToOutput(
return httpResponseUtil.AppendErrorToOutput(
output,
errorMessage,
BackendErrorCodes.RagfairUnavailable
@@ -93,17 +93,17 @@ public class TradeController(
public ItemEventRouterResponse ConfirmRagfairTrading(
PmcData pmcData,
ProcessRagfairTradeRequestData request,
string sessionID
MongoId sessionID
)
{
var output = _eventOutputHolder.GetOutput(sessionID);
var output = eventOutputHolder.GetOutput(sessionID);
foreach (var offer in request.Offers)
{
var fleaOffer = _ragfairServer.GetOffer(offer.Id);
var fleaOffer = ragfairServer.GetOffer(offer.Id);
if (fleaOffer is null)
{
return _httpResponseUtil.AppendErrorToOutput(
return httpResponseUtil.AppendErrorToOutput(
output,
$"Offer with ID {offer.Id} not found",
BackendErrorCodes.OfferNotFound
@@ -112,18 +112,18 @@ public class TradeController(
if (offer.Count == 0)
{
var errorMessage = _serverLocalisationService.GetText(
var errorMessage = serverLocalisationService.GetText(
"ragfair-unable_to_purchase_0_count_item",
_itemHelper.GetItem(fleaOffer.Items[0].Template).Value.Name
itemHelper.GetItem(fleaOffer.Items[0].Template).Value.Name
);
return _httpResponseUtil.AppendErrorToOutput(
return httpResponseUtil.AppendErrorToOutput(
output,
errorMessage,
BackendErrorCodes.OfferOutOfStock
);
}
if (_ragfairOfferHelper.OfferIsFromTrader(fleaOffer))
if (ragfairOfferHelper.OfferIsFromTrader(fleaOffer))
{
BuyTraderItemFromRagfair(sessionID, pmcData, fleaOffer, offer, output);
}
@@ -151,7 +151,7 @@ public class TradeController(
/// <param name="requestOffer">request data from client</param>
/// <param name="output">Output to send back to client</param>
protected void BuyTraderItemFromRagfair(
string sessionId,
MongoId sessionId,
PmcData pmcData,
RagfairOffer fleaOffer,
OfferRequest requestOffer,
@@ -163,12 +163,12 @@ public class TradeController(
{
var errorMessage =
$"Unable to buy item: {fleaOffer.Items[0].Template} from trader: {fleaOffer.User.Id} as loyalty level too low, skipping";
if (_logger.IsLogEnabled(LogLevel.Debug))
if (logger.IsLogEnabled(LogLevel.Debug))
{
_logger.Debug(errorMessage);
logger.Debug(errorMessage);
}
_httpResponseUtil.AppendErrorToOutput(
httpResponseUtil.AppendErrorToOutput(
output,
errorMessage,
BackendErrorCodes.RagfairUnavailable
@@ -188,7 +188,7 @@ public class TradeController(
SchemeId = 0,
SchemeItems = requestOffer.Items,
};
_tradeHelper.BuyItem(
tradeHelper.BuyItem(
pmcData,
buyData,
sessionId,
@@ -197,7 +197,7 @@ public class TradeController(
);
// Remove/lower offer quantity of item purchased from trader flea offer
_ragfairServer.ReduceOfferQuantity(fleaOffer.Id, requestOffer.Count ?? 0);
ragfairServer.ReduceOfferQuantity(fleaOffer.Id, requestOffer.Count ?? 0);
}
/// <summary>
@@ -209,7 +209,7 @@ public class TradeController(
/// <param name="requestOffer">request data from client</param>
/// <param name="output">Output to send back to client</param>
protected void BuyPmcItemFromRagfair(
string sessionId,
MongoId sessionId,
PmcData pmcData,
RagfairOffer fleaOffer,
OfferRequest requestOffer,
@@ -228,7 +228,7 @@ public class TradeController(
};
// buyItem() must occur prior to removing the offer stack, otherwise item inside offer doesn't exist for confirmTrading() to use
_tradeHelper.BuyItem(
tradeHelper.BuyItem(
pmcData,
buyData,
sessionId,
@@ -247,13 +247,13 @@ public class TradeController(
if (IsPlayerOffer(fleaOffer.Id, fleaOffer.User?.Id))
{
// Complete selling the offer now it has been purchased
_ragfairOfferHelper.CompleteOffer(offerOwnerId, fleaOffer, offerBuyCount ?? 0);
ragfairOfferHelper.CompleteOffer(offerOwnerId, fleaOffer, offerBuyCount ?? 0);
return;
}
// Remove/lower offer quantity of item purchased from PMC flea offer
_ragfairServer.ReduceOfferQuantity(fleaOffer.Id, requestOffer.Count ?? 0);
ragfairServer.ReduceOfferQuantity(fleaOffer.Id, requestOffer.Count ?? 0);
}
/// <summary>
@@ -262,7 +262,7 @@ public class TradeController(
/// <param name="offerId">id of the offer</param>
/// <param name="offerOwnerId">Owner id</param>
/// <returns>true if offer was made by a player</returns>
protected bool IsPlayerOffer(string offerId, string? offerOwnerId)
protected bool IsPlayerOffer(string offerId, MongoId? offerOwnerId)
{
// No ownerId, not player offer
if (offerOwnerId is null)
@@ -270,7 +270,7 @@ public class TradeController(
return false;
}
var offerCreatorProfile = _profileHelper.GetPmcProfile(offerOwnerId);
var offerCreatorProfile = profileHelper.GetPmcProfile(offerOwnerId.Value);
if (offerCreatorProfile is null || offerCreatorProfile.RagfairInfo.Offers?.Count == 0)
// No profile or no offers
{
@@ -302,10 +302,10 @@ public class TradeController(
public ItemEventRouterResponse SellScavItemsToFence(
PmcData pmcData,
SellScavItemsToFenceRequestData request,
string sessionId
MongoId sessionId
)
{
var output = _eventOutputHolder.GetOutput(sessionId);
var output = eventOutputHolder.GetOutput(sessionId);
MailMoneyToPlayer(sessionId, (int)request.TotalValue, Traders.FENCE);
@@ -318,11 +318,11 @@ public class TradeController(
/// <param name="sessionId">Session id</param>
/// <param name="roublesToSend">amount of roubles to send</param>
/// <param name="trader">Trader to sell items to</param>
protected void MailMoneyToPlayer(string sessionId, int roublesToSend, string trader)
protected void MailMoneyToPlayer(MongoId sessionId, int roublesToSend, MongoId trader)
{
if (_logger.IsLogEnabled(LogLevel.Debug))
if (logger.IsLogEnabled(LogLevel.Debug))
{
_logger.Debug($"Selling scav items to fence for {roublesToSend} roubles");
logger.Debug($"Selling scav items to fence for {roublesToSend} roubles");
}
// Create single currency item with all currency on it
@@ -334,20 +334,20 @@ public class TradeController(
};
// Ensure money is properly split to follow its max stack size limit
var curencyReward = _itemHelper.SplitStackIntoSeparateItems(rootCurrencyReward);
var curencyReward = itemHelper.SplitStackIntoSeparateItems(rootCurrencyReward);
// Send mail from trader
_mailSendService.SendLocalisedNpcMessageToPlayer(
mailSendService.SendLocalisedNpcMessageToPlayer(
sessionId,
trader,
MessageType.MessageWithItems,
_randomUtil.GetArrayValue(
_databaseService.GetTrader(trader).Dialogue.TryGetValue("soldItems", out var items)
randomUtil.GetArrayValue(
databaseService.GetTrader(trader).Dialogue.TryGetValue("soldItems", out var items)
? items
: new List<string>()
),
curencyReward.SelectMany(x => x).ToList(),
_timeUtil.GetHoursAsSeconds(72)
timeUtil.GetHoursAsSeconds(72)
);
}
@@ -360,9 +360,9 @@ public class TradeController(
/// <param name="traderDetails">Trader being sold to, to perform buy category check against</param>
/// <returns>Rouble price</returns>
protected int GetPriceOfItemAndChildren(
string parentItemId,
MongoId parentItemId,
List<Item> items,
Dictionary<string, int?> handbookPrices,
Dictionary<MongoId, int?> handbookPrices,
TraderBase traderDetails
)
{
@@ -371,11 +371,11 @@ public class TradeController(
var totalPrice = 0;
foreach (var itemToSell in itemWithChildren)
{
var itemDetails = _itemHelper.GetItem(itemToSell.Template);
var itemDetails = itemHelper.GetItem(itemToSell.Template);
if (
!(
itemDetails.Key
&& _itemHelper.IsOfBaseclasses(
&& itemHelper.IsOfBaseclasses(
itemDetails.Value.Id,
traderDetails.ItemsBuy.Category
)