using System;
namespace GoodBooks.PAY.PAYDAL.DTO.Webhook
{
///
/// Maps to TPAYWEBHOOKEVENT — an append-only log table.
/// No Version/Status/SortOrder: this table is a raw event log, not a master entity.
/// PAYWEBHOOKEVENTID is an IDENTITY column — never set it from application code on insert.
///
public class PayWebhookEventDTO
{
#region PrivateMembers
private int paywebhookeventid;
private int paygatewayid;
private string idempotencykey;
private string eventtype;
private string? gatewaypayorderid;
private string? gatewaytxnid;
private string rawpayload;
private byte signaturevalid;
private byte isprocessed;
private DateTime? processedon;
private string? processingerror;
private int createdbyid;
private DateTime createdon;
private int tenantid;
#endregion
#region PublicProperties
/// IDENTITY PK — do NOT include in INSERT statements.
public int PayWebhookEventId
{
get { return paywebhookeventid; }
set { paywebhookeventid = value; }
}
public int PayGatewayId
{
get { return paygatewayid; }
set { paygatewayid = value; }
}
public string IdempotencyKey
{
get { return idempotencykey; }
set { idempotencykey = value; }
}
public string EventType
{
get { return eventtype; }
set { eventtype = value; }
}
/// Gateway's own order/payment reference. Nullable — not all events carry one.
public string? GatewayPayOrderId
{
get { return gatewaypayorderid; }
set { gatewaypayorderid = value; }
}
/// Gateway transaction ID. Nullable — may not be present on initial events.
public string? GatewayTxnId
{
get { return gatewaytxnid; }
set { gatewaytxnid = value; }
}
/// Full JSON body received from the gateway. Stored verbatim.
public string RawPayload
{
get { return rawpayload; }
set { rawpayload = value; }
}
/// 0=Unverified, 1=Valid, 2=Invalid
public byte SignatureValid
{
get { return signaturevalid; }
set { signaturevalid = value; }
}
/// 0=No, 1=Yes, 2=Failed
public byte IsProcessed
{
get { return isprocessed; }
set { isprocessed = value; }
}
public DateTime? ProcessedOn
{
get { return processedon; }
set { processedon = value; }
}
public string? ProcessingError
{
get { return processingerror; }
set { processingerror = value; }
}
public int CreatedById
{
get { return createdbyid; }
set { createdbyid = value; }
}
public DateTime CreatedOn
{
get { return createdon; }
set { createdon = value; }
}
public int TenantId
{
get { return tenantid; }
set { tenantid = value; }
}
#endregion
}
}