139 lines
4.9 KiB
C#
139 lines
4.9 KiB
C#
using System;
|
|
using System.Data;
|
|
using System.Data.SqlClient;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace bsmd.database
|
|
{
|
|
/// <summary>
|
|
/// Basisklasse aller Nachrichtentypen, zentrale Klasse für die NSW App
|
|
/// </summary>
|
|
public class Message : IDatabaseEntity
|
|
{
|
|
private Guid messageHeaderId;
|
|
private MessageCore messageCore;
|
|
private ReportingParty reportingParty;
|
|
|
|
#region Enumerations
|
|
|
|
public enum NotificationClass
|
|
{
|
|
VISIT, TRANSIT, NOA_NOD, ATA, ATD, SEC, POBA, POBD, NAME, TIEFA, TIEFD,
|
|
BKRA, BKRD, STAT, LADG, INFO, SERV, PRE72H, MDH, WAS, CREW, PAS, BPOL, TOWA, TOWD, HAZA, HAZD
|
|
}
|
|
|
|
public enum MessageStatus
|
|
{ ACCEPTED, REJECTED }
|
|
|
|
#endregion
|
|
|
|
#region Properties
|
|
|
|
/// <summary>
|
|
/// Primärschlüssel
|
|
/// </summary>
|
|
public Guid MessageHeaderId { get { return this.messageHeaderId; } }
|
|
|
|
/// <summary>
|
|
/// Dieser Wert wird vom NSW / HIS vergeben
|
|
/// </summary>
|
|
public string ClientRequestId { set; get; }
|
|
|
|
/// <summary>
|
|
/// Referenz zur eigentlichen Schiffankunft
|
|
/// </summary>
|
|
public MessageCore MessageCore { get { return this.messageCore; } }
|
|
|
|
public Guid? MessageId { get; set; }
|
|
|
|
public DateTime? SentAt { get; set; }
|
|
|
|
public DateTime? ReceivedAt { get; set; }
|
|
|
|
public DateTime? RequestedAt { get; set; }
|
|
|
|
public bool Reset { get; set; }
|
|
|
|
public bool Cancel { get; set; }
|
|
|
|
public MessageStatus? Status { get; set; }
|
|
|
|
/// <summary>
|
|
/// Nachrichtentyp der abgeleiteten Meldeklassen
|
|
/// </summary>
|
|
public NotificationClass MessageNotificationClass { get; set; }
|
|
|
|
/// <summary>
|
|
/// Der Meldende
|
|
/// </summary>
|
|
public ReportingParty ReportingParty { get { return this.reportingParty; } }
|
|
|
|
#endregion
|
|
|
|
#region public virtual methods
|
|
|
|
|
|
#endregion
|
|
|
|
#region IDatabaseEntity implementation
|
|
|
|
public bool IsNew
|
|
{
|
|
get { throw new NotImplementedException(); }
|
|
}
|
|
|
|
public void Save(System.Data.IDbConnection connection)
|
|
{
|
|
SqlConnection sqlCon = connection as SqlConnection;
|
|
if (sqlCon == null) return;
|
|
if (this.IsNew)
|
|
{
|
|
string query = "INSERT INTO MessageHeader (ClientRequestId, MessageCoreId, MessageId, SentAt, ReceivedAt, RequestedAt, NotificationClass, Reset, Cancel, Status, ReportingPartyId) " +
|
|
"VALUES (@CLIENTREQUESTID, @MESSAGECOREID, @MESSAGEID, @SENTAT, @RECEIVEDAT, @REQUESTEDAT, @NOTIFICATIONCLASS, @RESET, @CANCEL, @STATUS, @REPORTINGPARTYID)";
|
|
SqlCommand cmd = new SqlCommand(query, sqlCon);
|
|
if (this.ClientRequestId != null)
|
|
cmd.Parameters.AddWithValue("@CLIENTREQUESTID", this.ClientRequestId);
|
|
else
|
|
cmd.Parameters.AddWithValue("@CLIENTREQUESTID", DBNull.Value);
|
|
cmd.Parameters.AddWithValue("@MESSAGECOREID", this.MessageCore.Id);
|
|
if (this.MessageId.HasValue)
|
|
cmd.Parameters.AddWithValue("@MESSAGEID", this.MessageId.Value);
|
|
else
|
|
cmd.Parameters.AddWithValue("@MESSAGEID", DBNull.Value);
|
|
if (this.SentAt.HasValue)
|
|
cmd.Parameters.AddWithValue("@SENTAT", this.SentAt.Value);
|
|
else
|
|
cmd.Parameters.AddWithValue("@SENTAT", DBNull.Value);
|
|
if (this.ReceivedAt.HasValue)
|
|
cmd.Parameters.AddWithValue("@RECEIVEDAT", this.ReceivedAt.Value);
|
|
else
|
|
cmd.Parameters.AddWithValue("@RECEIVEDAT", DBNull.Value);
|
|
if (this.RequestedAt.HasValue)
|
|
cmd.Parameters.AddWithValue("@REQUESTEDAT", this.RequestedAt.Value);
|
|
else
|
|
cmd.Parameters.AddWithValue("@REQUESTEDAT", DBNull.Value);
|
|
cmd.Parameters.AddWithValue("@NOTIFICATIONCLASS", (int) this.MessageNotificationClass);
|
|
cmd.Parameters.AddWithValue("@RESET", this.Reset);
|
|
cmd.Parameters.AddWithValue("@CANCEL", this.Cancel);
|
|
if (this.Status.HasValue)
|
|
cmd.Parameters.AddWithValue("@STATUS", (int)this.Status.Value);
|
|
else
|
|
cmd.Parameters.AddWithValue("@STATUS", DBNull.Value);
|
|
cmd.Parameters.AddWithValue("@REPORTINGPARTYID", this.ReportingParty.Id);
|
|
|
|
}
|
|
}
|
|
|
|
public void Delete(System.Data.IDbConnection connection)
|
|
{
|
|
throw new NotImplementedException();
|
|
}
|
|
|
|
#endregion
|
|
|
|
}
|
|
}
|