small bugfixes regarding failsave moving of files and setting core state after receiving dbh messages

This commit is contained in:
Daniel Schick 2024-09-27 10:42:27 +02:00
parent 259fe00f43
commit 56934660c1
2 changed files with 20 additions and 5 deletions

View File

@ -4,6 +4,7 @@
using bsmd.database; using bsmd.database;
using log4net; using log4net;
using System; using System;
using System.Collections.Generic;
using System.IO; using System.IO;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using System.Xml.Serialization; using System.Xml.Serialization;
@ -186,9 +187,21 @@ namespace bsmd.dbh
DBManager.Instance.Save(sentMessage); 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<Message> 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; aCore.BSMDStatusInternal = MessageCore.BSMDStatus.RESPONDED;
_log.InfoFormat("Core {0} set to status {1}", aCore.DisplayId, aCore.BSMDStatusInternal);
DBManager.Instance.Save(aCore); DBManager.Instance.Save(aCore);
result = true; result = true;
} }

View File

@ -1,4 +1,4 @@
// Copyright (c) 2015-2017 schick Informatik // Copyright (c) 2015- schick Informatik
// Description: Bearbeitung von Antworten (dateibasiert..) // Description: Bearbeitung von Antworten (dateibasiert..)
using bsmd.database; using bsmd.database;
@ -300,10 +300,12 @@ namespace bsmd.hisnord
{ {
// archive file // archive file
string answerArchiveDir = Path.Combine(Properties.Settings.Default.TransmitterRoot, Properties.Settings.Default.AnswerArchiveDir); string answerArchiveDir = Path.Combine(Properties.Settings.Default.TransmitterRoot, Properties.Settings.Default.AnswerArchiveDir);
string archiveFile = Path.Combine(answerArchiveDir, Path.GetFileName(answerFile));
try try
{ {
File.Move(answerFile, Path.Combine(answerArchiveDir, Path.GetFileName(answerFile))); if(File.Exists(archiveFile))
File.Delete(archiveFile);
File.Move(answerFile, archiveFile);
} }
catch(Exception ex) catch(Exception ex)
{ {