Files
Mimante/Mimante/Models/BidHistoryEntry.cs
Alberto Balbo c199e542ba Aggiunto limite configurabile storia puntate
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.
2025-11-26 10:44:04 +01:00

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; }
}
}