Introdotta la possibilità di configurare un limite massimo di puntate visualizzabili nella scheda "Storia Puntate" tramite l'interfaccia utente. La nuova proprietà `MaxBidHistoryEntries` è stata aggiunta alle impostazioni e salvata in modo persistente. - Aggiunti controlli UI per configurare il limite. - Implementata persistenza della lista `RecentBids` con serializzazione JSON. - Introdotto il metodo `MergeBidHistory` per unire puntate evitando duplicati e mantenendo ordine cronologico decrescente. - Sincronizzate le statistiche utenti (`BidderStats`) con la lista `RecentBids`. - Ripristinata la proprietà `IsMyBid` al caricamento delle aste salvate. - Ottimizzate le performance con `HashSet` per deduplicazione e limite configurabile. - Creato il file `FIX_BID_HISTORY_PERSISTENCE.md` per documentare il problema e la soluzione. - Garantita compatibilità retroattiva con aste salvate. Questi aggiornamenti migliorano la gestione, la visualizzazione e la persistenza della storia delle puntate, offrendo un'esperienza utente più robusta e intuitiva.
64 lines
1.7 KiB
C#
64 lines
1.7 KiB
C#
using System;
|
|
using System.Text.Json.Serialization;
|
|
|
|
namespace AutoBidder.Models
|
|
{
|
|
/// <summary>
|
|
/// Rappresenta una singola puntata nella storia dell'asta
|
|
/// </summary>
|
|
public class BidHistoryEntry
|
|
{
|
|
/// <summary>
|
|
/// Prezzo dell'asta al momento della puntata
|
|
/// </summary>
|
|
[JsonPropertyName("Price")]
|
|
public decimal Price { get; set; }
|
|
|
|
/// <summary>
|
|
/// Tipo di puntata (Auto/Manuale)
|
|
/// </summary>
|
|
[JsonPropertyName("BidType")]
|
|
public string BidType { get; set; }
|
|
|
|
/// <summary>
|
|
/// Timestamp della puntata (Unix timestamp)
|
|
/// </summary>
|
|
[JsonPropertyName("Timestamp")]
|
|
public long Timestamp { get; set; }
|
|
|
|
/// <summary>
|
|
/// Nome utente che ha fatto la puntata
|
|
/// </summary>
|
|
[JsonPropertyName("Username")]
|
|
public string Username { get; set; }
|
|
|
|
/// <summary>
|
|
/// Orario formattato della puntata (HH:mm:ss)
|
|
/// </summary>
|
|
[JsonIgnore]
|
|
public string TimeFormatted
|
|
{
|
|
get
|
|
{
|
|
var dateTime = DateTimeOffset.FromUnixTimeSeconds(Timestamp).ToLocalTime();
|
|
return dateTime.ToString("HH:mm:ss");
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Prezzo formattato con 2 decimali
|
|
/// </summary>
|
|
[JsonIgnore]
|
|
public string PriceFormatted
|
|
{
|
|
get => Price.ToString("0.00");
|
|
}
|
|
|
|
/// <summary>
|
|
/// Indica se la puntata è stata fatta dall'utente corrente
|
|
/// </summary>
|
|
[JsonIgnore]
|
|
public bool IsMyBid { get; set; }
|
|
}
|
|
}
|