- Rimosse funzionalità legacy legate a WebView2. - Introdotto uno stile globale per i pulsanti. - Semplificata l'interfaccia con gestione tramite griglia unica. - Aggiunti comandi per avviare, mettere in pausa e fermare aste. - Introdotta gestione manuale dei cookie tramite dialog. - Aggiunti dialog per configurare sessione e aggiungere aste. - Migliorata la persistenza con salvataggio sicuro (DPAPI). - Rifattorizzate statistiche per utilizzare `BidHistory` e `BidderStats`. - Ottimizzato il polling per ridurre il carico di sistema. - Aggiornata esportazione CSV con dati più dettagliati. - Introdotti nuovi modelli dati per utente e banner aste. - Rimossi file di test manuale e codice obsoleto. - Aggiornata documentazione per riflettere le modifiche. - Aggiunta nuova icona dell'applicazione. - Migliorata la sicurezza eliminando il salvataggio in chiaro dei cookie.
67 lines
2.5 KiB
C#
67 lines
2.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text.Json.Serialization;
|
|
|
|
namespace AutoBidder.Models
|
|
{
|
|
/// <summary>
|
|
/// Informazioni base di un'asta monitorata
|
|
/// Solo HTTP, nessuna modalità, browser o multi-click
|
|
/// </summary>
|
|
public class AuctionInfo
|
|
{
|
|
public string AuctionId { get; set; } = "";
|
|
public string Name { get; set; } = ""; // Opzionale, può essere lasciato vuoto
|
|
public string OriginalUrl { get; set; } = ""; // URL completo dell'asta (per referer)
|
|
|
|
// Configurazione asta
|
|
public int TimerClick { get; set; } = 0; // Secondo del timer per click (default 0)
|
|
public int DelayMs { get; set; } = 50; // Ritardo aggiuntivo in ms (per compensare latenza)
|
|
public double MinPrice { get; set; } = 0;
|
|
public double MaxPrice { get; set; } = 0;
|
|
public int MinResets { get; set; } = 0; // Numero minimo reset prima di puntare
|
|
public int MaxResets { get; set; } = 0; // Numero massimo reset (0 = illimitati)
|
|
[JsonPropertyName("MaxClicks")]
|
|
public int MaxClicks { get; set; } = 0; // Numero massimo di puntate consentite (0 = illimitato)
|
|
|
|
// Stato asta
|
|
public bool IsActive { get; set; } = true;
|
|
public bool IsPaused { get; set; } = false;
|
|
|
|
// Contatori
|
|
public int ResetCount { get; set; } = 0;
|
|
|
|
// Timestamp
|
|
public DateTime AddedAt { get; set; } = DateTime.UtcNow;
|
|
public DateTime? LastClickAt { get; set; }
|
|
|
|
// Storico
|
|
public List<BidHistory> BidHistory { get; set; } = new List<BidHistory>();
|
|
public Dictionary<string, BidderInfo> BidderStats { get; set; } = new(StringComparer.OrdinalIgnoreCase);
|
|
|
|
// Legacy (deprecato) - removed `Bidders` dictionary; use `BidderStats` instead
|
|
|
|
// Log per-asta (non serializzato)
|
|
[System.Text.Json.Serialization.JsonIgnore]
|
|
public List<string> AuctionLog { get; set; } = new();
|
|
|
|
/// <summary>
|
|
/// Aggiunge una voce al log dell'asta
|
|
/// </summary>
|
|
public void AddLog(string message)
|
|
{
|
|
var entry = $"{DateTime.Now:HH:mm:ss} - {message}";
|
|
AuctionLog.Add(entry);
|
|
|
|
// Mantieni solo ultimi 500 log
|
|
if (AuctionLog.Count > 500)
|
|
{
|
|
AuctionLog.RemoveAt(0);
|
|
}
|
|
}
|
|
|
|
public int PollingLatencyMs { get; set; } = 0; // Ultima latenza polling ms
|
|
}
|
|
}
|