QRBee/QRBeeApi/Services/Database/TransactionInfo.cs
2022-03-13 17:38:18 +00:00

48 lines
1.3 KiB
C#

using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
using QRBee.Core.Data;
namespace QRBee.Api.Services.Database
{
public record TransactionInfo
{
#pragma warning disable CS8618
public TransactionInfo()
#pragma warning restore CS8618
{
}
public TransactionInfo(PaymentRequest request, DateTime serverTimeStamp)
{
//TODO This is a side effect. The original request will be modified.
request.ClientResponse.EncryptedClientCardData = null;
ServerTimeStamp = serverTimeStamp;
Request = request;
Id = $"{request.ClientResponse.MerchantRequest.MerchantId}-{request.ClientResponse.MerchantRequest.MerchantTransactionId}";
}
/// <summary>
/// Never use directly. Use <see cref="TransactionId"/> instead.
/// </summary>
[BsonId] public string Id { get; set; }
[BsonIgnore] public string? TransactionId => Id;
public DateTime ServerTimeStamp { get; set; }
public PaymentRequest Request { get; set; }
public enum TransactionStatus
{
Pending = 0,
Rejected = 1,
Succeeded = 2,
}
public TransactionStatus Status { get; set; } = TransactionStatus.Pending;
public string? RejectReason { get; set; }
}
}