Aggiunta pagina "Esplora Aste" per browser pubblico
Introdotta la funzionalità di esplorazione delle aste pubbliche di Bidoo senza login, accessibile dal menu principale. Aggiunti nuovi modelli (`BidooBrowserAuction`, `BidooCategoryInfo`) e servizio (`BidooBrowserService`) per scraping e polling delle aste e categorie. Creata la pagina Blazor `AuctionBrowser.razor` con griglia responsive, badge, filtri per categoria, caricamento incrementale e aggiornamento automatico degli stati. Aggiornati i servizi in `Program.cs` e aggiunti nuovi stili CSS per la UI moderna. Le aste possono essere aggiunte rapidamente al monitor personale. Parsing robusto e fallback su categorie predefinite in caso di errori.
This commit is contained in:
106
Mimante/Models/BidooBrowserAuction.cs
Normal file
106
Mimante/Models/BidooBrowserAuction.cs
Normal file
@@ -0,0 +1,106 @@
|
||||
using System;
|
||||
|
||||
namespace AutoBidder.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// Rappresenta un'asta visualizzata nel browser delle aste
|
||||
/// Contiene informazioni base per la visualizzazione nella griglia
|
||||
/// </summary>
|
||||
public class BidooBrowserAuction
|
||||
{
|
||||
/// <summary>
|
||||
/// ID univoco dell'asta
|
||||
/// </summary>
|
||||
public string AuctionId { get; set; } = "";
|
||||
|
||||
/// <summary>
|
||||
/// URL completo dell'asta
|
||||
/// </summary>
|
||||
public string Url { get; set; } = "";
|
||||
|
||||
/// <summary>
|
||||
/// Nome/titolo del prodotto
|
||||
/// </summary>
|
||||
public string Name { get; set; } = "";
|
||||
|
||||
/// <summary>
|
||||
/// URL dell'immagine del prodotto
|
||||
/// </summary>
|
||||
public string ImageUrl { get; set; } = "";
|
||||
|
||||
/// <summary>
|
||||
/// Prezzo attuale dell'asta in euro
|
||||
/// </summary>
|
||||
public decimal CurrentPrice { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Username dell'ultimo bidder
|
||||
/// </summary>
|
||||
public string LastBidder { get; set; } = "";
|
||||
|
||||
/// <summary>
|
||||
/// Tempo rimanente in secondi
|
||||
/// </summary>
|
||||
public int RemainingSeconds { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Timer formattato (es: "00:08")
|
||||
/// </summary>
|
||||
public string TimerDisplay => $"{RemainingSeconds / 60:00}:{RemainingSeconds % 60:00}";
|
||||
|
||||
/// <summary>
|
||||
/// Frequenza timer dell'asta (in secondi)
|
||||
/// </summary>
|
||||
public int TimerFrequency { get; set; } = 8;
|
||||
|
||||
/// <summary>
|
||||
/// Prezzo "Compralo Subito"
|
||||
/// </summary>
|
||||
public decimal BuyNowPrice { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Indica se l'asta è già stata aggiunta al monitor
|
||||
/// </summary>
|
||||
public bool IsMonitored { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Indica se l'asta è attiva (non chiusa)
|
||||
/// </summary>
|
||||
public bool IsActive { get; set; } = true;
|
||||
|
||||
/// <summary>
|
||||
/// Indica se l'asta è venduta
|
||||
/// </summary>
|
||||
public bool IsSold { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Indica se l'asta richiede solo puntate manuali (no autobid)
|
||||
/// </summary>
|
||||
public bool IsManualOnly { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Indica se è un'asta turbo (timer < 10 sec)
|
||||
/// </summary>
|
||||
public bool IsTurbo => TimerFrequency <= 8;
|
||||
|
||||
/// <summary>
|
||||
/// ID del prodotto
|
||||
/// </summary>
|
||||
public int ProductId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Indica se l'asta è un'asta di puntate/crediti
|
||||
/// </summary>
|
||||
public bool IsCreditAuction { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Valore crediti se è un'asta di puntate
|
||||
/// </summary>
|
||||
public int CreditValue { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Timestamp ultimo aggiornamento stato
|
||||
/// </summary>
|
||||
public DateTime LastUpdated { get; set; } = DateTime.UtcNow;
|
||||
}
|
||||
}
|
||||
40
Mimante/Models/BidooCategoryInfo.cs
Normal file
40
Mimante/Models/BidooCategoryInfo.cs
Normal file
@@ -0,0 +1,40 @@
|
||||
namespace AutoBidder.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// Rappresenta una categoria/scheda di aste su Bidoo
|
||||
/// </summary>
|
||||
public class BidooCategoryInfo
|
||||
{
|
||||
/// <summary>
|
||||
/// ID del tab (es: 1, 2, 3, 4, 5)
|
||||
/// </summary>
|
||||
public int TabId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// ID del tag per le categorie specifiche (es: 6=Buoni, 5=Smartphone)
|
||||
/// </summary>
|
||||
public int TagId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Slug della categoria (es: "buoni", "smartphone")
|
||||
/// </summary>
|
||||
public string Slug { get; set; } = "";
|
||||
|
||||
/// <summary>
|
||||
/// Nome visualizzato della categoria
|
||||
/// </summary>
|
||||
public string DisplayName { get; set; } = "";
|
||||
|
||||
/// <summary>
|
||||
/// Indica se questa categoria è una categoria speciale (preferite, tutte, puntate, manuali)
|
||||
/// </summary>
|
||||
public bool IsSpecialCategory { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Icona da mostrare (opzionale)
|
||||
/// </summary>
|
||||
public string? Icon { get; set; }
|
||||
|
||||
public override string ToString() => DisplayName;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user