diff --git a/Mimante/App.xaml.cs b/Mimante/App.xaml.cs index 36a83a7..71252a8 100644 --- a/Mimante/App.xaml.cs +++ b/Mimante/App.xaml.cs @@ -23,7 +23,7 @@ namespace AutoBidder // Le impostazioni stanno nella radice fissa, quindi si possono leggere anche // prima di sapere dove finiranno gli altri dati. var settings = SettingsManager.Load(); - AppPaths.Configure(settings.DataFolder, settings.StatsFolder, settings.LogFolder); + AppPaths.Configure(settings.DataFolder, settings.StatsFolder, settings.LogFolder, settings.DatabasePath); AppPaths.EnsureFolders(); // Le versioni precedenti scrivevano parte dei dati in Roaming e parte in Local, @@ -36,8 +36,21 @@ namespace AutoBidder TextLogService.PurgeOldLogs(); TextLogService.App("INFO", $"[PERCORSI] configurazione in {AppPaths.ConfigRoot}, dati in {AppPaths.DataFolder}"); - // Le righe di registro delle aste confluiscono nei rispettivi dossier. - AuctionDossier.CaptureAuctionLogs(); + // Il database si apre per primo: da qui in poi ogni archivio ci scrive. + Data.AuctionDatabase.OnLog += m => TextLogService.App("INFO", m); + try + { + var db = Data.AuctionDatabase.Instance; + TextLogService.App("INFO", $"[DATABASE] {db.Path} (SQLite {Data.AuctionDatabase.LibraryVersion}, {db.SizeBytes / 1024:N0} KB)"); + db.Enqueue("INSERT INTO sessions(started_at, app_version) VALUES(?1, ?2)", Data.AuctionDatabase.Now(), AppInfo.Version); + } + catch (Exception ex) + { + TextLogService.App("ERROR", $"[DATABASE] Apertura non riuscita: {ex.Message}"); + } + + // Le righe di registro delle aste confluiscono nel database. + Data.AuctionRecorder.CaptureAuctionLogs(); // Lo storico e' cresciuto per mesi con versioni diverse dell'applicazione: // alcuni record hanno campi che allora non esistevano. Quelli deducibili si @@ -74,6 +87,14 @@ namespace AutoBidder TextLogService.SessionEnded(); FileLogWriter.DisposeAll(); + try + { + var db = Data.AuctionDatabase.Instance; + db.Enqueue("UPDATE sessions SET ended_at = ?1 WHERE session_id = (SELECT MAX(session_id) FROM sessions)", Data.AuctionDatabase.Now()); + Data.AuctionDatabase.CloseInstance(); + } + catch { /* all'uscita non c'è più nessuno a cui dirlo */ } + // L'icona di notifica sopravvive al processo se non la si rimuove: // resterebbe nell'area di notifica come icona fantasma. WindowsNotifier.Dispose(); diff --git a/Mimante/Controls/AuctionMonitorControl.xaml b/Mimante/Controls/AuctionMonitorControl.xaml index 39df607..ed86b24 100644 --- a/Mimante/Controls/AuctionMonitorControl.xaml +++ b/Mimante/Controls/AuctionMonitorControl.xaml @@ -66,6 +66,19 @@ + + + + + + + diff --git a/Mimante/Controls/AuctionMonitorControl.xaml.cs b/Mimante/Controls/AuctionMonitorControl.xaml.cs index 8a73e5c..4f82bc6 100644 --- a/Mimante/Controls/AuctionMonitorControl.xaml.cs +++ b/Mimante/Controls/AuctionMonitorControl.xaml.cs @@ -67,6 +67,20 @@ namespace AutoBidder.Controls RaiseEvent(new RoutedEventArgs(StopClickedEvent, this)); } + private void KillSwitchToggle_Changed(object sender, RoutedEventArgs e) + { + RaiseEvent(new RoutedEventArgs(KillSwitchChangedEvent, this)); + } + + public static readonly RoutedEvent KillSwitchChangedEvent = EventManager.RegisterRoutedEvent( + "KillSwitchChanged", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(AuctionMonitorControl)); + + public event RoutedEventHandler KillSwitchChanged + { + add { AddHandler(KillSwitchChangedEvent, value); } + remove { RemoveHandler(KillSwitchChangedEvent, value); } + } + private void AddUrlButton_Click(object sender, RoutedEventArgs e) { RaiseEvent(new RoutedEventArgs(AddUrlClickedEvent, this)); diff --git a/Mimante/Controls/LearningControl.xaml b/Mimante/Controls/LearningControl.xaml index 69ca0c7..35e8b9a 100644 --- a/Mimante/Controls/LearningControl.xaml +++ b/Mimante/Controls/LearningControl.xaml @@ -84,6 +84,12 @@ Content="Apri cartella" Margin="0,0,8,0" ToolTip="La cartella con modello, profilo, elenco dei dossier letti e ultima valutazione" Click="OpenFolderButton_Click"/> + + + + + + + + + + + + @@ -577,9 +600,9 @@ Dalla rigiocata di 2.095 aste concluse: con anticipo sotto il secondo serve in m + Content="Registra ogni asta seguita nel database (puntate di ogni utente, reset, mie puntate, decisioni)"/> @@ -671,6 +694,80 @@ Se il valore è maggiore di zero, il sistema non punta quando le puntate residue + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +