Files
2020-07-13 18:37:12 +00:00

205 lines
6.8 KiB
C#

///////////////////////////////////////////////////////////
// NotifyDeliveryLog.cs
// Implementation of Class NotifyDeliveryLog
// CSLA type: Editable Root
// Created on: 17-Oct-2005
// Object design: John
// Coded: John 17-Oct-2005
///////////////////////////////////////////////////////////
using System;
using System.Data;
using CSLA.Data;
using GZTW.Data;
using CSLA;
using System.Threading;
using CSLA.Security;
namespace GZTW.AyaNova.BLL
{
#pragma warning disable 1591
/// <summary>
/// AyaNova NotifyDeliveryLog used to insert new
/// notification delivery events in the database.
///
/// Also removes all delivery log entries more than 30 days old
/// </summary>
[Serializable]
public class NotifyDeliveryLog /*Case 255 no need to derive bb : BusinessBase*/
{
#region Attributes
private Guid _RootObjectID;
private RootObjectTypes _RootObjectType;
private int _EventType;
private Guid _ToUserID;
private Guid _GuidValue;
private bool _Delivered;
private NotifyDeliveryMethods _DeliveryMethod;
private string _ErrorMessage;
private DateTime _DeliveryDate;
//case 53
private Guid _ToClientID;
#endregion
#region Constructor
//Case 255 changed to public
/// <summary>
///
///
/// </summary>
public NotifyDeliveryLog(RootObjectTypes RootObjectType,Guid RootObjectID,
int EventType,Guid ToUserID,bool Delivered,Guid GuidValue,
NotifyDeliveryMethods DeliveryMethod, string ErrorMessage,DateTime DeliveryDate,Guid ToClientID )
{
_RootObjectType=RootObjectType;
_RootObjectID=RootObjectID;
_EventType=EventType;
_ToUserID=ToUserID;
_Delivered=Delivered;
_GuidValue=GuidValue;
_DeliveryMethod=DeliveryMethod;
_DeliveryDate=DeliveryDate;
_ToClientID = ToClientID;
if(ErrorMessage.Length>500)
_ErrorMessage=ErrorMessage.Substring(0,500);
else
_ErrorMessage=ErrorMessage;
}
#endregion
#region Static methods
public static void LogDelivery(RootObjectTypes RootObjectType,Guid RootObjectID,
int EventType,Guid ToUserID,bool Delivered,Guid GuidValue,
NotifyDeliveryMethods DeliveryMethod, string ErrorMessage,DateTime DeliveryDate)
{
//case 1608
if (ErrorMessage.Length > 500) ErrorMessage = ErrorMessage.Substring(ErrorMessage.Length - 500);
DataPortal.Update(new NotifyDeliveryLog(
RootObjectType,RootObjectID,
EventType, ToUserID, Delivered, GuidValue,
DeliveryMethod, ErrorMessage,DeliveryDate,Guid.Empty
));
}
public static void LogClientDelivery(Guid ClientID, bool Delivered, string ErrorMessage)
{
//case 1608
if (ErrorMessage.Length > 500) ErrorMessage = ErrorMessage.Substring(ErrorMessage.Length - 500);
DataPortal.Update(new NotifyDeliveryLog(
RootObjectTypes.Client, ClientID,
0, User.CurrentThreadUserID, Delivered, Guid.Empty,
NotifyDeliveryMethods.SMTP, ErrorMessage, DBUtil.CurrentWorkingDateTime, ClientID
));
}
public static void LogSMTPConnectFailure(string ErrorMessage)
{
//case 1608
if (ErrorMessage.Length > 500) ErrorMessage = ErrorMessage.Substring(ErrorMessage.Length - 500);
DataPortal.Update(new NotifyDeliveryLog(
RootObjectTypes.Nothing, Guid.NewGuid(),
0, User.AdministratorID, false, Guid.Empty,
NotifyDeliveryMethods.SMTP, ErrorMessage, DBUtil.CurrentWorkingDateTime, Guid.Empty));
}
//case 3808
public static void LogSMTPDeliveryMessage(string Message)
{
if (Message.Length > 500) Message = Message.Substring(Message.Length - 500);
//not a delivery or not necessarily so setting delivered to true just so it
//doesn't appear as an error
DataPortal.Update(new NotifyDeliveryLog(
RootObjectTypes.Nothing, Guid.NewGuid(),
0, User.AdministratorID, true, Guid.Empty,
NotifyDeliveryMethods.SMTP, Message, DBUtil.CurrentWorkingDateTime, Guid.Empty));
}
public static void LogClientSMTPConnectFailure(string ErrorMessage)
{
//case 1608
if (ErrorMessage.Length > 500) ErrorMessage = ErrorMessage.Substring(ErrorMessage.Length - 500);
DataPortal.Update(new NotifyDeliveryLog(
RootObjectTypes.Nothing, Guid.NewGuid(),
0, User.AdministratorID, false, Guid.Empty,
NotifyDeliveryMethods.SMTP, ErrorMessage, DBUtil.CurrentWorkingDateTime, Guid.Empty
));
}
#endregion
#region DAL DATA ACCESS
//Case 255 change to public
/// <summary>
/// Called by DataPortal to delete/add/update data into the database
/// </summary>
///
public void DataPortal_Update()
{
//Update: 18-Nov-2006 was removing if older than 30 days
//too excessive, changed to 7 days
//Remove any entries older than 7 days
DBCommandWrapper cmTrim = DBUtil.GetCommandFromSQL(
"DELETE FROM aNotifyDeliveryLog " +
"WHERE (aDeliveryDate < @SEVENDAYSAGO)"
);
cmTrim.AddInParameter("@SEVENDAYSAGO", DbType.DateTime, DBUtil.ToUTC(DBUtil.CurrentWorkingDateTime.AddDays(-7)));
DBUtil.DB.ExecuteNonQuery(cmTrim);
//Insert log entry
DBCommandWrapper cm = DBUtil.GetCommandFromSQL(
"INSERT INTO aNotifyDeliveryLog (aRootObjectType, aRootObjectID, aEventType,aGuidValue, " +
"aDeliveryDate, aToUserID, aDeliveryMethod, aDelivered, aErrorMessage, aToClientID ) " +
"VALUES (@RootObjectType,@RootObjectID,@EventType,@GuidValue, " +
"@DeliveryDate, @ToUserID, @DeliveryMethod, @Delivered, @ErrorMessage, @ToClientID )"
);
cm.AddInParameter("@RootObjectID",DbType.Guid,this._RootObjectID);
cm.AddInParameter("@GuidValue",DbType.Guid,this._GuidValue);
cm.AddInParameter("@RootObjectType",DbType.Int16,(int)this._RootObjectType);
cm.AddInParameter("@EventType",DbType.Int16,this._EventType);
cm.AddInParameter("@ToUserID",DbType.Guid,this._ToUserID);
cm.AddInParameter("@DeliveryDate",DbType.DateTime, DBUtil.ToUTC(this._DeliveryDate));
cm.AddInParameter("@Delivered",DbType.Boolean,this._Delivered);
cm.AddInParameter("@DeliveryMethod",DbType.Int16,(int)this._DeliveryMethod);
cm.AddInParameter("@ErrorMessage",DbType.String,this._ErrorMessage);
cm.AddInParameter("@ToClientID", DbType.Guid, this._ToClientID);
DBUtil.DB.ExecuteNonQuery(cm);
}
#endregion
}//end NotifyDeliveryLog
#pragma warning restore 1591
}//end Subjectspace GZTW.AyaNova.BLL