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
@@ -21,106 +21,51 @@ using LogLevel = SPTarkov.Server.Core.Models.Spt.Logging.LogLevel;
namespace SPTarkov.Server.Core.Controllers;
[Injectable]
public class RagfairController
public class RagfairController(
ISptLogger<RagfairController> logger,
TimeUtil timeUtil,
JsonUtil jsonUtil,
HttpResponseUtil httpResponseUtil,
EventOutputHolder eventOutputHolder,
RagfairServer ragfairServer,
ItemHelper itemHelper,
InventoryHelper inventoryHelper,
RagfairSellHelper ragfairSellHelper,
HandbookHelper handbookHelper,
ProfileHelper profileHelper,
PaymentHelper paymentHelper,
RagfairHelper ragfairHelper,
RagfairSortHelper ragfairSortHelper,
RagfairOfferHelper ragfairOfferHelper,
TraderHelper traderHelper,
DatabaseService databaseService,
ServerLocalisationService localisationService,
RagfairTaxService ragfairTaxService,
RagfairOfferService ragfairOfferService,
PaymentService paymentService,
RagfairPriceService ragfairPriceService,
RagfairOfferGenerator ragfairOfferGenerator,
ConfigServer configServer
)
{
protected ConfigServer _configServer;
protected DatabaseService _databaseService;
protected EventOutputHolder _eventOutputHolder;
protected HandbookHelper _handbookHelper;
protected HttpResponseUtil _httpResponseUtil;
protected InventoryHelper _inventoryHelper;
protected ItemHelper _itemHelper;
protected JsonUtil _jsonUtil;
protected ServerLocalisationService _serverLocalisationService;
protected ISptLogger<RagfairController> _logger;
protected PaymentHelper _paymentHelper;
protected PaymentService _paymentService;
protected ProfileHelper _profileHelper;
protected RagfairConfig _ragfairConfig;
protected RagfairHelper _ragfairHelper;
protected RagfairOfferGenerator _ragfairOfferGenerator;
protected RagfairOfferHelper _ragfairOfferHelper;
protected RagfairOfferService _ragfairOfferService;
protected RagfairPriceService _ragfairPriceService;
protected RagfairSellHelper _ragfairSellHelper;
protected RagfairServer _ragfairServer;
protected RagfairSortHelper _ragfairSortHelper;
protected RagfairTaxService _ragfairTaxService;
protected TimeUtil _timeUtil;
protected TraderHelper _traderHelper;
public RagfairController(
ISptLogger<RagfairController> logger,
TimeUtil timeUtil,
JsonUtil jsonUtil,
HttpResponseUtil httpResponseUtil,
EventOutputHolder eventOutputHolder,
RagfairServer ragfairServer,
ItemHelper itemHelper,
InventoryHelper inventoryHelper,
RagfairSellHelper ragfairSellHelper,
HandbookHelper handbookHelper,
ProfileHelper profileHelper,
PaymentHelper paymentHelper,
RagfairHelper ragfairHelper,
RagfairSortHelper ragfairSortHelper,
RagfairOfferHelper ragfairOfferHelper,
TraderHelper traderHelper,
DatabaseService databaseService,
ServerLocalisationService localisationService,
RagfairTaxService ragfairTaxService,
RagfairOfferService ragfairOfferService,
PaymentService paymentService,
RagfairPriceService ragfairPriceService,
RagfairOfferGenerator ragfairOfferGenerator,
ConfigServer configServer
)
{
_logger = logger;
_timeUtil = timeUtil;
_jsonUtil = jsonUtil;
_httpResponseUtil = httpResponseUtil;
_eventOutputHolder = eventOutputHolder;
_ragfairServer = ragfairServer;
_itemHelper = itemHelper;
_inventoryHelper = inventoryHelper;
_ragfairSellHelper = ragfairSellHelper;
_handbookHelper = handbookHelper;
_profileHelper = profileHelper;
_paymentHelper = paymentHelper;
_ragfairHelper = ragfairHelper;
_ragfairSortHelper = ragfairSortHelper;
_ragfairOfferHelper = ragfairOfferHelper;
_traderHelper = traderHelper;
_databaseService = databaseService;
_serverLocalisationService = localisationService;
_ragfairTaxService = ragfairTaxService;
_ragfairOfferService = ragfairOfferService;
_paymentService = paymentService;
_ragfairPriceService = ragfairPriceService;
_ragfairOfferGenerator = ragfairOfferGenerator;
_configServer = configServer;
_ragfairConfig = _configServer.GetConfig<RagfairConfig>();
}
protected RagfairConfig _ragfairConfig = configServer.GetConfig<RagfairConfig>();
/// <summary>
/// Check all profiles and sell player offers / send player money for listing if it sold
/// </summary>
public void Update()
{
foreach (var (sessionId, profile) in _profileHelper.GetProfiles())
foreach (var (sessionId, profile) in profileHelper.GetProfiles())
{
// Check profile is capable of creating offers
var pmcProfile = profile.CharacterData.PmcData;
if (
pmcProfile.RagfairInfo is not null
&& pmcProfile.Info.Level
>= _databaseService.GetGlobals().Configuration.RagFair.MinUserLevel
>= databaseService.GetGlobals().Configuration.RagFair.MinUserLevel
)
{
_ragfairOfferHelper.ProcessOffersOnProfile(sessionId);
ragfairOfferHelper.ProcessOffersOnProfile(sessionId);
}
}
}
@@ -132,11 +77,11 @@ public class RagfairController
/// <param name="sessionID">Session/Player id</param>
/// <param name="searchRequest">Search request data from client</param>
/// <returns>Flea offers that match required search parameters</returns>
public GetOffersResult GetOffers(string sessionID, SearchRequestData searchRequest)
public GetOffersResult GetOffers(MongoId sessionID, SearchRequestData searchRequest)
{
var profile = _profileHelper.GetFullProfile(sessionID);
var itemsToAdd = _ragfairHelper.FilterCategories(sessionID, searchRequest);
var traderAssorts = _ragfairHelper.GetDisplayableAssorts(sessionID);
var profile = profileHelper.GetFullProfile(sessionID);
var itemsToAdd = ragfairHelper.FilterCategories(sessionID, searchRequest);
var traderAssorts = ragfairHelper.GetDisplayableAssorts(sessionID);
var result = new GetOffersResult
{
Offers = [],
@@ -166,7 +111,7 @@ public class RagfairController
AddIndexValueToOffers(result.Offers);
// Sort offers
result.Offers = _ragfairSortHelper.SortOffers(
result.Offers = ragfairSortHelper.SortOffers(
result.Offers,
searchRequest.SortType.GetValueOrDefault(RagfairSort.ID),
searchRequest.SortDirection.GetValueOrDefault(0)
@@ -184,13 +129,13 @@ public class RagfairController
// Update trader offers' values, Lock quest-linked offers + adjust offer buy limits
foreach (
var traderOffer in result.Offers.Where(offer =>
_ragfairOfferHelper.OfferIsFromTrader(offer)
ragfairOfferHelper.OfferIsFromTrader(offer)
)
)
{
// For the items, check the barter schemes. The method getDisplayableAssorts sets a flag sptQuestLocked
// to true if the quest is not completed yet
if (_ragfairOfferHelper.TraderOfferItemQuestLocked(traderOffer, traderAssorts))
if (ragfairOfferHelper.TraderOfferItemQuestLocked(traderOffer, traderAssorts))
{
traderOffer.Locked = true;
}
@@ -231,7 +176,7 @@ public class RagfairController
{
// Occurs when player edits "item count shown per page" value when on page near end of offer list
// The page no longer exists due to the larger number of items on each page, show them the very end of the offer list instead
_logger.Warning(_serverLocalisationService.GetText("ragfair-offer_page_doesnt_exist"));
logger.Warning(localisationService.GetText("ragfair-offer_page_doesnt_exist"));
startIndex = result.Offers.Count - perPageLimit;
endIndex = result.Offers.Count;
}
@@ -246,13 +191,13 @@ public class RagfairController
private void SetTraderOfferStackSize(RagfairOffer offer)
{
var firstItem = offer.Items[0];
var traderAssorts = _traderHelper.GetTraderAssortsByTraderId(offer.User.Id).Items;
var traderAssorts = traderHelper.GetTraderAssortsByTraderId(offer.User.Id).Items;
var assortPurchased = traderAssorts?.FirstOrDefault(x => x.Id == offer.Items.First().Id);
if (assortPurchased is null)
{
_logger.Warning(
_serverLocalisationService.GetText(
logger.Warning(
localisationService.GetText(
"ragfair-unable_to_adjust_stack_count_assort_not_found",
new { offerId = offer.Items.First().Id, traderId = offer.User.Id }
)
@@ -284,7 +229,7 @@ public class RagfairController
// Not purchased by player before, use value from assort data
// Find patching assort by its id
var traderAssorts = _traderHelper.GetTraderAssortsByTraderId(offer.User.Id).Items;
var traderAssorts = traderHelper.GetTraderAssortsByTraderId(offer.User.Id).Items;
var assortData = traderAssorts.FirstOrDefault(item => item.Id == assortId);
// Set restriction based on data found above
@@ -333,7 +278,7 @@ public class RagfairController
// Linked/required search categories
var playerHasFleaUnlocked =
pmcProfile.Info.Level
>= _databaseService.GetGlobals().Configuration.RagFair.MinUserLevel;
>= databaseService.GetGlobals().Configuration.RagFair.MinUserLevel;
List<RagfairOffer> offerPool = [];
if (IsLinkedSearch(searchRequest) || IsRequiredSearch(searchRequest))
{
@@ -342,20 +287,20 @@ public class RagfairController
else if (!(IsLinkedSearch(searchRequest) || IsRequiredSearch(searchRequest)))
{
// Get all categories
offerPool = _ragfairOfferService.GetOffers();
offerPool = ragfairOfferService.GetOffers();
}
else
{
_logger.Error(_serverLocalisationService.GetText("ragfair-unable_to_get_categories"));
if (_logger.IsLogEnabled(LogLevel.Debug))
logger.Error(localisationService.GetText("ragfair-unable_to_get_categories"));
if (logger.IsLogEnabled(LogLevel.Debug))
{
_logger.Debug(_jsonUtil.Serialize(searchRequest));
logger.Debug(jsonUtil.Serialize(searchRequest));
}
return [];
}
return _ragfairServer.GetAllActiveCategories(
return ragfairServer.GetAllActiveCategories(
playerHasFleaUnlocked,
searchRequest,
offerPool
@@ -400,7 +345,7 @@ public class RagfairController
// Searching for items in preset menu
if (searchRequest.BuildCount > 0)
{
return _ragfairOfferHelper.GetOffersForBuild(
return ragfairOfferHelper.GetOffersForBuild(
searchRequest,
itemsToAdd,
traderAssorts,
@@ -410,11 +355,11 @@ public class RagfairController
if (searchRequest.NeededSearchId?.Length > 0)
{
return _ragfairOfferHelper.GetOffersThatRequireItem(searchRequest, pmcProfile);
return ragfairOfferHelper.GetOffersThatRequireItem(searchRequest, pmcProfile);
}
// Searching for general items
return _ragfairOfferHelper.GetValidOffers(
return ragfairOfferHelper.GetValidOffers(
searchRequest,
itemsToAdd,
traderAssorts,
@@ -434,7 +379,7 @@ public class RagfairController
)
{
// Get all items of tpl
var offers = _ragfairOfferService.GetOffersOfType(getPriceRequest.TemplateId);
var offers = ragfairOfferService.GetOffersOfType(getPriceRequest.TemplateId);
// Offers exist for item, get averages of what's listed
if (offers?.Count > 0)
@@ -455,10 +400,10 @@ public class RagfairController
// No offers listed, get price from live ragfair price list prices.json
// No flea price, get handbook price
var fleaPrices = _databaseService.GetPrices();
var fleaPrices = databaseService.GetPrices();
if (!fleaPrices.TryGetValue(getPriceRequest.TemplateId, out var tplPrice))
{
tplPrice = _handbookHelper.GetTemplatePrice(getPriceRequest.TemplateId);
tplPrice = handbookHelper.GetTemplatePrice(getPriceRequest.TemplateId);
}
return new GetItemPriceResult
@@ -481,12 +426,12 @@ public class RagfairController
foreach (var offer in offers)
{
// Exclude barter items, they tend to have outrageous equivalent prices
if (offer.Requirements.Any(req => !_paymentHelper.IsMoneyTpl(req.TemplateId)))
if (offer.Requirements.Any(req => !paymentHelper.IsMoneyTpl(req.TemplateId)))
{
continue;
}
if (ignoreTraderOffers && _ragfairOfferHelper.OfferIsFromTrader(offer))
if (ignoreTraderOffers && ragfairOfferHelper.OfferIsFromTrader(offer))
{
continue;
}
@@ -529,15 +474,15 @@ public class RagfairController
public ItemEventRouterResponse AddPlayerOffer(
PmcData pmcData,
AddOfferRequestData offerRequest,
string sessionID
MongoId sessionID
)
{
var output = _eventOutputHolder.GetOutput(sessionID);
var fullProfile = _profileHelper.GetFullProfile(sessionID);
var output = eventOutputHolder.GetOutput(sessionID);
var fullProfile = profileHelper.GetFullProfile(sessionID);
if (!IsValidPlayerOfferRequest(offerRequest))
{
return _httpResponseUtil.AppendErrorToOutput(
return httpResponseUtil.AppendErrorToOutput(
output,
"Unable to add offer, check server for error"
);
@@ -546,7 +491,7 @@ public class RagfairController
var typeOfOffer = GetOfferType(offerRequest);
if (typeOfOffer == FleaOfferType.UNKNOWN)
{
return _httpResponseUtil.AppendErrorToOutput(
return httpResponseUtil.AppendErrorToOutput(
output,
$"Unknown offer type: {typeOfOffer}, cannot list item on flea"
);
@@ -562,7 +507,7 @@ public class RagfairController
return CreatePackOffer(sessionID, offerRequest, fullProfile, output);
case FleaOfferType.UNKNOWN:
default:
return _httpResponseUtil.AppendErrorToOutput(
return httpResponseUtil.AppendErrorToOutput(
output,
$"Unknown offer type: {typeOfOffer}, cannot list item on flea"
);
@@ -578,19 +523,15 @@ public class RagfairController
{
if (offerRequest?.Items is null || offerRequest.Items.Count == 0)
{
_logger.Error(
_serverLocalisationService.GetText("ragfair-invalid_player_offer_request")
);
logger.Error(localisationService.GetText("ragfair-invalid_player_offer_request"));
return false;
}
if (offerRequest.Requirements is null)
{
_logger.Error(
_serverLocalisationService.GetText(
"ragfair-unable_to_place_offer_with_no_requirements"
)
logger.Error(
localisationService.GetText("ragfair-unable_to_place_offer_with_no_requirements")
);
return false;
@@ -640,7 +581,7 @@ public class RagfairController
/// <param name="output">output Response to send to client</param>
/// <returns>ItemEventRouterResponse</returns>
protected ItemEventRouterResponse CreateMultiOffer(
string sessionID,
MongoId sessionID,
AddOfferRequestData offerRequest,
SptProfile fullProfile,
ItemEventRouterResponse output
@@ -661,11 +602,11 @@ public class RagfairController
var result = GetItemsToListOnFleaFromInventory(pmcData, offerRequest.Items);
if (result.Items is null || !string.IsNullOrEmpty(result.ErrorMessage))
{
_httpResponseUtil.AppendErrorToOutput(output, result.ErrorMessage);
httpResponseUtil.AppendErrorToOutput(output, result.ErrorMessage);
}
// Total count of items summed using their individual stack counts
var stackCountTotal = _ragfairOfferHelper.GetTotalStackCountSize(result.Items);
var stackCountTotal = ragfairOfferHelper.GetTotalStackCountSize(result.Items);
// When listing identical items on flea, condense separate items into one stack with a merged stack count
// e.g. 2 ammo items each with stackObjectCount = 3, will result in 1 stack of 6
@@ -698,7 +639,7 @@ public class RagfairController
}
// Get average of item+children quality
var qualityMultiplier = _itemHelper.GetItemQualityModifierForItems(offer.Items, true);
var qualityMultiplier = itemHelper.GetItemQualityModifierForItems(offer.Items, true);
// Multiply single item price by quality
averageOfferPrice *= qualityMultiplier;
@@ -707,14 +648,14 @@ public class RagfairController
var playerListedPriceInRub = CalculateRequirementsPriceInRub(offerRequest.Requirements);
// Roll sale chance
var sellChancePercent = _ragfairSellHelper.CalculateSellChance(
var sellChancePercent = ragfairSellHelper.CalculateSellChance(
averageOfferPrice.Value,
playerListedPriceInRub,
qualityMultiplier
);
// Create array of sell times for items listed
offer.SellResults = _ragfairSellHelper.RollForSale(sellChancePercent, (int)stackCountTotal);
offer.SellResults = ragfairSellHelper.RollForSale(sellChancePercent, (int)stackCountTotal);
// Subtract flea market fee from stash
if (_ragfairConfig.Sell.Fees)
@@ -741,7 +682,7 @@ public class RagfairController
// Remove items from inventory after creating offer
foreach (var itemToRemove in offerRequest.Items)
{
_inventoryHelper.RemoveItem(pmcData, itemToRemove, sessionID, output);
inventoryHelper.RemoveItem(pmcData, itemToRemove, sessionID, output);
}
return output;
@@ -758,7 +699,7 @@ public class RagfairController
/// <param name="output">Response to send to client</param>
/// <returns>ItemEventRouterResponse</returns>
protected ItemEventRouterResponse CreatePackOffer(
string sessionID,
MongoId sessionID,
AddOfferRequestData offerRequest,
SptProfile fullProfile,
ItemEventRouterResponse output
@@ -777,11 +718,11 @@ public class RagfairController
var result = GetItemsToListOnFleaFromInventory(pmcData, offerRequest.Items);
if (result.Items is null || !string.IsNullOrEmpty(result.ErrorMessage))
{
_httpResponseUtil.AppendErrorToOutput(output, result.ErrorMessage);
httpResponseUtil.AppendErrorToOutput(output, result.ErrorMessage);
}
// Total count of items summed using their stack counts
var stackCountTotal = _ragfairOfferHelper.GetTotalStackCountSize(result.Items);
var stackCountTotal = ragfairOfferHelper.GetTotalStackCountSize(result.Items);
// When listing identical items on flea, condense separate items into one stack with a merged stack count
// e.g. 2 ammo items, stackObjectCount = 3 for each, will result in 1 stack of 6
@@ -819,7 +760,7 @@ public class RagfairController
}
// Get average of item+children quality
var qualityMultiplier = _itemHelper.GetItemQualityModifierForItems(offer.Items, true);
var qualityMultiplier = itemHelper.GetItemQualityModifierForItems(offer.Items, true);
// Multiply single item price by quality
singleItemPrice *= qualityMultiplier;
@@ -828,14 +769,14 @@ public class RagfairController
var playerListedPriceInRub = CalculateRequirementsPriceInRub(offerRequest.Requirements);
// Roll sale chance
var sellChancePercent = _ragfairSellHelper.CalculateSellChance(
var sellChancePercent = ragfairSellHelper.CalculateSellChance(
singleItemPrice.Value * stackCountTotal,
playerListedPriceInRub,
qualityMultiplier
);
// Create array of sell times for items listed + sell all at once as it's a pack
offer.SellResults = _ragfairSellHelper.RollForSale(
offer.SellResults = ragfairSellHelper.RollForSale(
sellChancePercent,
(int)stackCountTotal,
true
@@ -866,7 +807,7 @@ public class RagfairController
// Remove items from inventory after creating offer
foreach (var itemToRemove in offerRequest.Items)
{
_inventoryHelper.RemoveItem(pmcData, itemToRemove, sessionID, output);
inventoryHelper.RemoveItem(pmcData, itemToRemove, sessionID, output);
}
return output;
@@ -882,7 +823,7 @@ public class RagfairController
/// <param name="output">Response to send to client</param>
/// <returns>ItemEventRouterResponse</returns>
protected ItemEventRouterResponse CreateSingleOffer(
string sessionID,
MongoId sessionID,
AddOfferRequestData offerRequest,
SptProfile fullProfile,
ItemEventRouterResponse output
@@ -898,15 +839,13 @@ public class RagfairController
|| !string.IsNullOrEmpty(inventoryItemsToSell.ErrorMessage)
)
{
_httpResponseUtil.AppendErrorToOutput(output, inventoryItemsToSell.ErrorMessage);
httpResponseUtil.AppendErrorToOutput(output, inventoryItemsToSell.ErrorMessage);
}
var firstItemToSell = inventoryItemsToSell.Items.FirstOrDefault().FirstOrDefault();
// Total count of items summed using their stack counts
var stackCountTotal = _ragfairOfferHelper.GetTotalStackCountSize(
inventoryItemsToSell.Items
);
var stackCountTotal = ragfairOfferHelper.GetTotalStackCountSize(inventoryItemsToSell.Items);
// Average offer price for single item (or whole weapon)
// MUST occur prior to CreatePlayerOffer(), otherwise offer ends up in averages calculation
@@ -927,7 +866,7 @@ public class RagfairController
var offerRootItem = offer.Items.FirstOrDefault(x => x.Id == offerRequest.Items[0]);
// Get average of items quality+children
var qualityMultiplier = _itemHelper.GetItemQualityModifierForItems(offer.Items, true);
var qualityMultiplier = itemHelper.GetItemQualityModifierForItems(offer.Items, true);
// Check for and apply item price modifer if it exists in config
if (
@@ -944,12 +883,12 @@ public class RagfairController
averageOfferPriceSingleItem *= qualityMultiplier;
// Packs are reduced to the average price of a single item in the pack vs the averaged single price of an item
var sellChancePercent = _ragfairSellHelper.CalculateSellChance(
var sellChancePercent = ragfairSellHelper.CalculateSellChance(
averageOfferPriceSingleItem.Value,
playerListedPriceInRub,
qualityMultiplier
);
offer.SellResults = _ragfairSellHelper.RollForSale(sellChancePercent, (int)stackCountTotal);
offer.SellResults = ragfairSellHelper.RollForSale(sellChancePercent, (int)stackCountTotal);
// Subtract flea market fee from stash
if (_ragfairConfig.Sell.Fees)
@@ -976,7 +915,7 @@ public class RagfairController
// Remove items from inventory after creating offer
foreach (var itemToRemove in offerRequest.Items)
{
_inventoryHelper.RemoveItem(pmcData, itemToRemove, sessionID, output);
inventoryHelper.RemoveItem(pmcData, itemToRemove, sessionID, output);
}
return output;
@@ -994,7 +933,7 @@ public class RagfairController
/// <param name="output">ItemEventRouterResponse</param>
/// <returns>True if charging tax to player failed</returns>
protected bool ChargePlayerTaxFee(
string sessionId,
MongoId sessionId,
Item rootItem,
PmcData pmcData,
double requirementsPriceInRub,
@@ -1004,12 +943,12 @@ public class RagfairController
)
{
// Get tax from cache hydrated earlier by client, if that's missing fall back to server calculation (inaccurate)
var storedClientTaxValue = _ragfairTaxService.GetStoredClientOfferTaxValueById(
var storedClientTaxValue = ragfairTaxService.GetStoredClientOfferTaxValueById(
offerRequest.Items[0]
);
var tax = storedClientTaxValue is not null
? storedClientTaxValue.Fee
: _ragfairTaxService.CalculateTax(
: ragfairTaxService.CalculateTax(
rootItem,
pmcData,
requirementsPriceInRub,
@@ -1017,23 +956,23 @@ public class RagfairController
offerRequest.SellInOnePiece.GetValueOrDefault(false)
);
if (_logger.IsLogEnabled(LogLevel.Debug))
if (logger.IsLogEnabled(LogLevel.Debug))
{
_logger.Debug(
logger.Debug(
$"Offer tax to charge: {tax}, pulled from client: {storedClientTaxValue.Count is not null}"
);
}
// cleanup of cache now we've used the tax value from it
_ragfairTaxService.ClearStoredOfferTaxById(offerRequest.Items.First());
ragfairTaxService.ClearStoredOfferTaxById(offerRequest.Items.First());
var buyTradeRequest = CreateBuyTradeRequestObject(CurrencyType.RUB, tax.Value);
_paymentService.PayMoney(pmcData, buyTradeRequest, sessionId, output);
paymentService.PayMoney(pmcData, buyTradeRequest, sessionId, output);
if (output.Warnings.Count > 0)
{
_httpResponseUtil.AppendErrorToOutput(
httpResponseUtil.AppendErrorToOutput(
output,
_serverLocalisationService.GetText("ragfair-unable_to_pay_commission_fee", tax)
localisationService.GetText("ragfair-unable_to_pay_commission_fee", tax)
);
return true;
}
@@ -1078,9 +1017,9 @@ public class RagfairController
OnlyFunctional = item.OnlyFunctional,
});
return _ragfairOfferGenerator.CreateAndAddFleaOffer(
return ragfairOfferGenerator.CreateAndAddFleaOffer(
sessionId,
_timeUtil.GetTimeStamp(),
timeUtil.GetTimeStamp(),
formattedItems.ToList(),
formattedRequirements.ToList(),
loyalLevel,
@@ -1107,9 +1046,9 @@ public class RagfairController
return 0;
}
return _paymentHelper.IsMoneyTpl(requirement.Template)
? _handbookHelper.InRUB(requirement.Count.Value, requirement.Template)
: _itemHelper.GetDynamicItemPrice(requirement.Template).Value
return paymentHelper.IsMoneyTpl(requirement.Template)
? handbookHelper.InRUB(requirement.Count.Value, requirement.Template)
: itemHelper.GetDynamicItemPrice(requirement.Template).Value
* requirement.Count.Value;
});
}
@@ -1134,11 +1073,11 @@ public class RagfairController
var rootItem = pmcData.Inventory?.Items?.FirstOrDefault(i => i.Id == itemId);
if (rootItem is null)
{
errorMessage = _serverLocalisationService.GetText(
errorMessage = localisationService.GetText(
"ragfair-unable_to_find_item_in_inventory",
new { id = itemId }
);
_logger.Error(errorMessage);
logger.Error(errorMessage);
return new GetItemsToListOnFleaFromInventoryResult
{
@@ -1154,10 +1093,10 @@ public class RagfairController
if (itemsToReturn?.Count == 0)
{
errorMessage = _serverLocalisationService.GetText(
errorMessage = localisationService.GetText(
"ragfair-unable_to_find_requested_items_in_inventory"
);
_logger.Error(errorMessage);
logger.Error(errorMessage);
return new GetItemsToListOnFleaFromInventoryResult { ErrorMessage = errorMessage };
}
@@ -1176,16 +1115,16 @@ public class RagfairController
/// <param name="offerId">Id of offer to remove</param>
/// <param name="sessionId">Session id of requesting player</param>
/// <returns>ItemEventRouterResponse</returns>
public ItemEventRouterResponse FlagOfferForRemoval(string offerId, string sessionId)
public ItemEventRouterResponse FlagOfferForRemoval(string offerId, MongoId sessionId)
{
var output = _eventOutputHolder.GetOutput(sessionId);
var output = eventOutputHolder.GetOutput(sessionId);
var pmcData = _profileHelper.GetPmcProfile(sessionId);
var pmcData = profileHelper.GetPmcProfile(sessionId);
var playerProfileOffers = pmcData?.RagfairInfo?.Offers;
if (playerProfileOffers is null)
{
_logger.Warning(
_serverLocalisationService.GetText(
logger.Warning(
localisationService.GetText(
"ragfair-unable_to_remove_offer_not_found_in_profile",
new { profileId = sessionId, offerId }
)
@@ -1197,29 +1136,26 @@ public class RagfairController
var playerOffer = playerProfileOffers?.FirstOrDefault(x => x.Id == offerId);
if (playerOffer is null)
{
_logger.Error(
_serverLocalisationService.GetText(
"ragfair-offer_not_found_in_profile",
new { offerId }
)
logger.Error(
localisationService.GetText("ragfair-offer_not_found_in_profile", new { offerId })
);
return _httpResponseUtil.AppendErrorToOutput(
return httpResponseUtil.AppendErrorToOutput(
output,
_serverLocalisationService.GetText("ragfair-offer_not_found_in_profile_short")
localisationService.GetText("ragfair-offer_not_found_in_profile_short")
);
}
// Only reduce time to end if time remaining is greater than what we would set it to
var differenceInSeconds = playerOffer.EndTime - _timeUtil.GetTimeStamp();
var differenceInSeconds = playerOffer.EndTime - timeUtil.GetTimeStamp();
if (differenceInSeconds > _ragfairConfig.Sell.ExpireSeconds)
{
// `expireSeconds` Default is 71 seconds
var newEndTime = _ragfairConfig.Sell.ExpireSeconds + _timeUtil.GetTimeStamp();
var newEndTime = _ragfairConfig.Sell.ExpireSeconds + timeUtil.GetTimeStamp();
playerOffer.EndTime = (long?)Math.Round((double)newEndTime);
}
_logger.Debug(
logger.Debug(
$"Flagged player offer: {offerId} for expiry in: {TimeSpan.FromTicks(playerOffer.EndTime.Value).ToString()}"
);
@@ -1234,27 +1170,27 @@ public class RagfairController
/// <returns>ItemEventRouterResponse</returns>
public ItemEventRouterResponse ExtendOffer(
ExtendOfferRequestData extendRequest,
string sessionId
MongoId sessionId
)
{
var output = _eventOutputHolder.GetOutput(sessionId);
var output = eventOutputHolder.GetOutput(sessionId);
var pmcData = _profileHelper.GetPmcProfile(sessionId);
var pmcData = profileHelper.GetPmcProfile(sessionId);
var playerOffers = pmcData.RagfairInfo.Offers;
var playerOfferIndex = playerOffers.FindIndex(offer => offer.Id == extendRequest.OfferId);
var secondsToAdd = extendRequest.RenewalTime * TimeUtil.OneHourAsSeconds;
if (playerOfferIndex == -1)
{
_logger.Warning(
_serverLocalisationService.GetText(
logger.Warning(
localisationService.GetText(
"ragfair-offer_not_found_in_profile",
new { offerId = extendRequest.OfferId }
)
);
return _httpResponseUtil.AppendErrorToOutput(
return httpResponseUtil.AppendErrorToOutput(
output,
_serverLocalisationService.GetText("ragfair-offer_not_found_in_profile_short")
localisationService.GetText("ragfair-offer_not_found_in_profile_short")
);
}
@@ -1271,7 +1207,7 @@ public class RagfairController
playerOffer.Items.Sum(offerItem => offerItem.Upd?.StackObjectsCount ?? 0);
}
var tax = _ragfairTaxService.CalculateTax(
var tax = ragfairTaxService.CalculateTax(
playerOffer.Items.First(),
pmcData,
playerOffer.RequirementsCost.Value,
@@ -1280,12 +1216,12 @@ public class RagfairController
);
var request = CreateBuyTradeRequestObject(CurrencyType.RUB, tax);
_paymentService.PayMoney(pmcData, request, sessionId, output);
paymentService.PayMoney(pmcData, request, sessionId, output);
if (output.Warnings.Count > 0)
{
return _httpResponseUtil.AppendErrorToOutput(
return httpResponseUtil.AppendErrorToOutput(
output,
_serverLocalisationService.GetText("ragfair-unable_to_pay_commission_fee")
localisationService.GetText("ragfair-unable_to_pay_commission_fee")
);
}
}
@@ -1328,17 +1264,17 @@ public class RagfairController
/// <returns>Dictionary of tpl and item price</returns>
public Dictionary<MongoId, double> GetAllFleaPrices()
{
return _ragfairPriceService.GetAllFleaPrices();
return ragfairPriceService.GetAllFleaPrices();
}
public Dictionary<MongoId, double> GetStaticPrices()
{
return _ragfairPriceService.GetAllStaticPrices();
return ragfairPriceService.GetAllStaticPrices();
}
public RagfairOffer? GetOfferByInternalId(string sessionId, GetRagfairOfferByIdRequest request)
{
var offers = _ragfairOfferService.GetOffers();
var offers = ragfairOfferService.GetOffers();
var offerToReturn = offers.FirstOrDefault(offer => offer.InternalId == request.Id);
return offerToReturn;