public PaymentTransactionVM(PaymentTransactionDTO paymentTransaction)
 {
     Id          = paymentTransaction.Id;
     WalletId    = paymentTransaction.WalletId;
     Wallet      = paymentTransaction.Wallet != null ? new WalletVM(paymentTransaction.Wallet) : null;
     Amount      = paymentTransaction.Amount;
     DateCreated = paymentTransaction.DateCreated;
     Type        = paymentTransaction.Type;
 }
        public static PaymentTransactionVM ToPaymentTransactionVM(this PaymentTransactionDTO paymentTransaction)
        {
            switch (paymentTransaction.Type)
            {
            case PaymentTransactionType.DEPOSIT:
                return(new DepositPaymentTransactionVM((DepositPaymentTransactionDTO)paymentTransaction));

            case PaymentTransactionType.WITHDRAWAL:
                return(new WithdrawalPaymentTransactionVM((WithdrawalPaymentTransactionDTO)paymentTransaction));

            case PaymentTransactionType.INTERNAL_TRANSFER_DEPOSIT:
                return(new DepositInternalTransferPaymentTransactionVM((DepositInternalTransferPaymentTransactionDTO)paymentTransaction));

            case PaymentTransactionType.INTERNAL_TRANSFER_WITHDRAWAL:
                return(new WithdrawalInternalTransferPaymentTransactionVM((WithdrawalInternalTransferPaymentTransactionDTO)paymentTransaction));

            case PaymentTransactionType.FEE:
                return(new FeeInternalTransferPaymentTransactionVM((FeeInternalTransferPaymentTransactionDTO)paymentTransaction));
            }

            return(null);
        }