git_bsmd/nsw/Source/bsmd.dakosy/Response.cs
Daniel Schick f4b3d3caf0 Stand nach Live-Schaltung (noch keine Übermittlung Richtung DBH/Dakosy)
Aktiv ist Herberg FormService und der Report Generator
30.Mai 2015
2015-05-30 18:56:16 +00:00

101 lines
3.6 KiB
C#

//
// Class: Response
// Current CLR: 4.0.30319.34209
// System: Microsoft Visual Studio 10.0
// Author: dani
// Created: 5/5/2015 8:13:01 AM
//
// Copyright (c) 2015 Informatikbüro Daniel Schick. All rights reserved.
using System;
using System.Collections.Generic;
using System.IO;
using System.Xml;
using System.Xml.Serialization;
using log4net;
using bsmd.database;
namespace bsmd.dakosy
{
public class Response
{
private static ILog _log = LogManager.GetLogger(typeof(Request));
public static bool Read(string fullPath)
{
bool retval = true;
try
{
XmlSerializer serializer = new XmlSerializer(typeof(EdiResponse));
FileStream fs = new FileStream(fullPath, FileMode.Open);
using (TextReader reader = new StreamReader(fs))
{
EdiResponse ediResponse = (EdiResponse)serializer.Deserialize(reader);
Guid localReferenceId, messageReferenceId;
if (!Guid.TryParseExact(ediResponse.LocalReferenceNumber, "N", out localReferenceId))
{
_log.ErrorFormat("unable to parse local reference number {0}", ediResponse.LocalReferenceNumber);
}
if(!Guid.TryParseExact(ediResponse.MessageHeader.MessageReferenceNumber, "N", out messageReferenceId))
{
_log.ErrorFormat("unable to parse message reference id {0}", ediResponse.MessageHeader.MessageReferenceNumber);
}
// passendes Objekt in der DB finden:
MessageCore core = DBManager.Instance.GetMessageCoreById(localReferenceId);
DatabaseEntity dbEntity = DBManager.Instance.GetMessageById(messageReferenceId);
// Objekte aktualisieren und speichern
Message aMessage = null;
if (dbEntity.GetType().IsAssignableFrom(typeof(Message)))
aMessage = (Message)dbEntity;
else
aMessage = dbEntity.MessageHeader;
//ediResponse.ResponseSubType == EdiResponseSubType.FUNCTIONAL // TECHNICAL
switch (ediResponse.ResponseType)
{
case EdiResponseType.ACCEPTED:
_log.Info("response message accepted");
break;
case EdiResponseType.ERROR:
_log.Info("response message error status");
break;
case EdiResponseType.PART_ACCEPTED:
_log.Info("response message part accepted");
break;
case EdiResponseType.RECEIVED:
_log.Info("response message received");
break;
}
//aMessage.Status = Message.MessageStatus.
aMessage.InternalStatus = Message.BSMDStatus.RESPONSE_RECEIVED;
DBManager.Instance.Save(aMessage);
}
fs.Close();
}
catch (Exception ex)
{
_log.ErrorFormat("error parsing response:{0}", ex.ToString());
retval = false;
}
return retval;
}
}
}