Aggiornamento alla versione 4.0.0
- Aggiunta proprietà `MaxClicks` per limitare le puntate per asta. - Migliorata gestione dei log con livelli di severità e colori. - Sostituzione di `TextBox` con `RichTextBox` per log avanzati. - Aggiunto pulsante per cancellare il log globale. - Migliorata gestione dei pulsanti globali (Avvia, Pausa, Ferma). - Ottimizzato il monitoraggio per aste in pausa e polling ridotto. - Aggiunto controllo per mettere in pausa aste al raggiungimento di `MaxClicks`. - Aggiunti nuovi stili per pulsanti e miglioramenti visivi in UI. - Aggiunto convertitore `StartButtonOpacityConverter`. - Aggiunta icona dell'applicazione (`app.ico`) come risorsa WPF.
This commit is contained in:
@@ -150,10 +150,10 @@ namespace AutoBidder.Services
|
||||
lock (_auctions)
|
||||
{
|
||||
// Filtra aste che devono ancora essere monitorate
|
||||
// Esclude: pausa manuale, chiuse definitivamente, vinte, perse
|
||||
// Include aste attive anche se messe in pausa: vogliamo continuare a monitorarle
|
||||
// ma non inviare puntate per quelle in pausa.
|
||||
activeAuctions = _auctions.Where(a =>
|
||||
a.IsActive &&
|
||||
!a.IsPaused &&
|
||||
!IsAuctionTerminated(a)
|
||||
).ToList();
|
||||
}
|
||||
@@ -168,13 +168,13 @@ namespace AutoBidder.Services
|
||||
var pollTasks = activeAuctions.Select(a => PollAndProcessAuction(a, token));
|
||||
await Task.WhenAll(pollTasks);
|
||||
|
||||
// Ottimizzazione polling aste in pausa
|
||||
// Ottimizzazione polling per aste in pausa
|
||||
bool anyPaused = false;
|
||||
DateTime now = DateTime.Now;
|
||||
int pauseDelayMs = 1000; // default
|
||||
foreach (var a in activeAuctions)
|
||||
{
|
||||
if (a.BidHistory.LastOrDefault()?.Notes?.Contains("PAUSA") == true)
|
||||
if (a.IsPaused)
|
||||
{
|
||||
anyPaused = true;
|
||||
// Se tra le 00:00 e le 09:55 polling ogni 60s
|
||||
@@ -306,8 +306,8 @@ namespace AutoBidder.Services
|
||||
UpdateAuctionHistory(auction, state);
|
||||
|
||||
// Verifica se puntare (solo se asta Running, NON se in pausa)
|
||||
if (state.Status == AuctionStatus.Running && ShouldBid(auction, state))
|
||||
{
|
||||
if (state.Status == AuctionStatus.Running && ShouldBid(auction, state) && !auction.IsPaused)
|
||||
{
|
||||
auction.AddLog($"[TRIGGER] CONDIZIONI OK - Timer {state.Timer:F2}s <= {auction.TimerClick}s");
|
||||
auction.AddLog($"[BID] Invio puntata...");
|
||||
OnLog?.Invoke($"[BID] [{auction.AuctionId}] PUNTATA a {state.Timer:F2}s!");
|
||||
@@ -355,6 +355,14 @@ namespace AutoBidder.Services
|
||||
Success = result.Success,
|
||||
Notes = result.Success ? $"EUR{result.NewPrice:F2}" : result.Error
|
||||
});
|
||||
|
||||
// Se abbiamo raggiunto il numero massimo di click per l'asta, metti in pausa le puntate (ma continua il monitor)
|
||||
if (auction.MaxClicks > 0 && auction.MyClicks >= auction.MaxClicks)
|
||||
{
|
||||
auction.IsPaused = true;
|
||||
auction.AddLog($"[PAUSA] Massimo click ({auction.MaxClicks}) raggiunto - Puntate disabilitate");
|
||||
OnLog?.Invoke($"[PAUSA] [{auction.AuctionId}] MaxClicks raggiunti");
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
@@ -385,6 +393,10 @@ namespace AutoBidder.Services
|
||||
return false;
|
||||
}
|
||||
|
||||
// Max clicks per auction
|
||||
if (auction.MaxClicks > 0 && auction.MyClicks >= auction.MaxClicks)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user