From 56934660c13a23c4ff81f0ec74afcefaf587f242 Mon Sep 17 00:00:00 2001 From: Daniel Schick Date: Fri, 27 Sep 2024 10:42:27 +0200 Subject: [PATCH] small bugfixes regarding failsave moving of files and setting core state after receiving dbh messages --- bsmd.dbh/ResponseUtil.cs | 17 +++++++++++++++-- bsmd.hisnord/Response.cs | 8 +++++--- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/bsmd.dbh/ResponseUtil.cs b/bsmd.dbh/ResponseUtil.cs index 9ea7139b..3bc5ff16 100644 --- a/bsmd.dbh/ResponseUtil.cs +++ b/bsmd.dbh/ResponseUtil.cs @@ -4,6 +4,7 @@ using bsmd.database; using log4net; using System; +using System.Collections.Generic; using System.IO; using System.Text.RegularExpressions; using System.Xml.Serialization; @@ -186,9 +187,21 @@ namespace bsmd.dbh DBManager.Instance.Save(sentMessage); - if (!(aCore.Cancelled ?? false)) + // das hier ist too easy, der Core kann nur auf RESPONDED gehen wenn nichts mehr auf TOSEND + // oder error steht + List messages = DBManager.Instance.GetMessagesForCore(aCore, DBManager.MessageLoad.ALL); + bool somethingStillInToSend = false; + foreach (Message message in messages) + { + if((message.InternalStatus == Message.BSMDStatus.TOSEND) || + (message.InternalStatus == Message.BSMDStatus.SENT)) + somethingStillInToSend = true; + } + + if (!(aCore.Cancelled ?? false) && !somethingStillInToSend) aCore.BSMDStatusInternal = MessageCore.BSMDStatus.RESPONDED; - + + _log.InfoFormat("Core {0} set to status {1}", aCore.DisplayId, aCore.BSMDStatusInternal); DBManager.Instance.Save(aCore); result = true; } diff --git a/bsmd.hisnord/Response.cs b/bsmd.hisnord/Response.cs index 753baf99..e7f46571 100644 --- a/bsmd.hisnord/Response.cs +++ b/bsmd.hisnord/Response.cs @@ -1,4 +1,4 @@ -// Copyright (c) 2015-2017 schick Informatik +// Copyright (c) 2015- schick Informatik // Description: Bearbeitung von Antworten (dateibasiert..) using bsmd.database; @@ -300,10 +300,12 @@ namespace bsmd.hisnord { // archive file string answerArchiveDir = Path.Combine(Properties.Settings.Default.TransmitterRoot, Properties.Settings.Default.AnswerArchiveDir); - + string archiveFile = Path.Combine(answerArchiveDir, Path.GetFileName(answerFile)); try { - File.Move(answerFile, Path.Combine(answerArchiveDir, Path.GetFileName(answerFile))); + if(File.Exists(archiveFile)) + File.Delete(archiveFile); + File.Move(answerFile, archiveFile); } catch(Exception ex) {