using System;
using _0_Framework.Domain;
using Company.Domain.FinancialInvoiceAgg;
using CompanyManagment.App.Contracts.PaymentTransaction;
namespace Company.Domain.PaymentTransactionAgg;
///
/// نمایانگر یک تراکنش پرداخت شامل جزئیات طرف قرارداد، اطلاعات بانکی، وضعیت تراکنش و مبلغ.
///
public class PaymentTransaction:EntityBase
{
///
/// سازنده کلاس PaymentTransaction با دریافت اطلاعات تراکنش.
///
/// شناسه طرف قرارداد
/// مبلغ تراکنش
///
///
///
public PaymentTransaction(long contractingPartyId,
double amount,
string contractingPartyName,string callBackUrl,
PaymentTransactionGateWay gateway)
{
ContractingPartyId = contractingPartyId;
Status = PaymentTransactionStatus.Pending;
Amount = amount;
ContractingPartyName = contractingPartyName;
CallBackUrl = callBackUrl;
Gateway = gateway;
}
///
/// تاریخ و زمان انجام پرداخت
///
public DateTime TransactionDate { get; private set; }
///
/// شناسه طرف حساب
///
public long ContractingPartyId { get; private set; }
///
/// نام طرف حساب
///
public string ContractingPartyName { get; private set; }
///
/// نام بانک
///
public string BankName { get; private set; }
///
/// شماره کارت
///
public string CardNumber { get; private set; }
///
/// وضعیت تراکنش پرداخت
///
public PaymentTransactionStatus Status { get; private set; }
///
/// مبلغ تراکنش
///
public double Amount { get; private set; }
///
/// شناسه یکتای تراکنش
///
public string TransactionId { get; private set; }
public string CallBackUrl { get; private set; }
public PaymentTransactionGateWay Gateway { get; private set; }
public string Rrn { get; private set; }
public string DigitalReceipt { get; private set; }
public FinancialInvoice FinancialInvoice { get; set; }
public long? FinancialInvoiceId { get; set; }
public void SetPaid(string cardNumber,string bankName,string rrn,string digitalReceipt)
{
Status = PaymentTransactionStatus.Success;
TransactionDate = DateTime.Now;
CardNumber = cardNumber;
BankName = bankName;
Rrn = rrn;
DigitalReceipt = digitalReceipt;
}
public void SetFailed()
{
Status = PaymentTransactionStatus.Failed;
TransactionDate = DateTime.Now;
}
public void SetTransactionId(string transactionId)
{
TransactionId = transactionId;
}
}