Update the position count and initiator

This commit is contained in:
2025-08-15 08:47:48 +07:00
parent 7528405845
commit b4a4656b3b
21 changed files with 1617 additions and 42 deletions

View File

@@ -12,7 +12,6 @@ using Managing.Domain.Scenarios;
using Managing.Domain.Statistics;
using Managing.Domain.Strategies;
using Managing.Domain.Strategies.Base;
using Managing.Domain.Trades;
using MediatR;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
@@ -411,9 +410,10 @@ public class DataController : ControllerBase
var userStrategies = await _mediator.Send(new GetUserStrategiesCommand(agentName));
// Convert to detailed view model with additional information
var result = userStrategies.Select(strategy => MapStrategyToViewModel(strategy)).ToList();
var tasks = userStrategies.Select(strategy => MapStrategyToViewModelAsync(strategy));
var result = await Task.WhenAll(tasks);
return Ok(result);
return Ok(result.ToList());
}
/// <summary>
@@ -434,7 +434,7 @@ public class DataController : ControllerBase
}
// Map the strategy to a view model using the shared method
var result = MapStrategyToViewModel(strategy);
var result = await MapStrategyToViewModelAsync(strategy);
return Ok(result);
}
@@ -444,7 +444,7 @@ public class DataController : ControllerBase
/// </summary>
/// <param name="strategy">The trading bot to map</param>
/// <returns>A view model with detailed strategy information</returns>
private UserStrategyDetailsViewModel MapStrategyToViewModel(Bot strategy)
private async Task<UserStrategyDetailsViewModel> MapStrategyToViewModelAsync(Bot strategy)
{
// Calculate ROI percentage based on PnL relative to account value
decimal pnl = strategy.Pnl;
@@ -464,6 +464,9 @@ public class DataController : ControllerBase
// Calculate ROI for last 24h
decimal roiLast24h = strategy.Roi;
// Fetch positions associated with this bot
var positions = await _tradingService.GetPositionsByInitiatorIdentifierAsync(strategy.Identifier);
return new UserStrategyDetailsViewModel
{
Name = strategy.Name,
@@ -477,7 +480,7 @@ public class DataController : ControllerBase
VolumeLast24H = volumeLast24h,
Wins = wins,
Losses = losses,
Positions = new List<Position>(),
Positions = positions.ToList(),
Identifier = strategy.Identifier,
WalletBalances = new Dictionary<DateTime, decimal>(),
};