コード例 #1
0
        public ProcessedTransaction CalculateFee(Transaction transaction)
        {
            bool monthlyFeeWasPaid = true;

            var processedTransaction = new ProcessedTransaction(transaction);

            processedTransaction.Fee = processedTransaction.RelatedTransaction.Amount
                                       * ((1 - (processedTransaction.RelatedTransaction.Owner.DiscountPercentage / 100)) * (processedTransaction.RelatedTransaction.Owner.FeeAsPercentage / 100));
            string stringifiedMonthAndYear = processedTransaction.RelatedTransaction.DoneOn.ToString("YYYYMM");

            if (!monthlyFeePaid.ContainsKey(stringifiedMonthAndYear))
            {
                monthlyFeePaid[stringifiedMonthAndYear] = new List <string>();
                monthlyFeePaid[stringifiedMonthAndYear].Add(processedTransaction.RelatedTransaction.Owner.Name);
                monthlyFeeWasPaid = false;
            }
            else
            {
                var merchantListInGivenMonth = monthlyFeePaid[stringifiedMonthAndYear];
                if (!merchantListInGivenMonth.Contains(processedTransaction.RelatedTransaction.Owner.Name))
                {
                    monthlyFeePaid[stringifiedMonthAndYear].Add(processedTransaction.RelatedTransaction.Owner.Name);
                    monthlyFeeWasPaid = false;
                }
            }

            if (!monthlyFeeWasPaid && processedTransaction.Fee > 0)
            {
                processedTransaction.Fee += monthlyFee;
            }

            return(processedTransaction);
        }
        public string ConvertTransactionToTextEntry(ProcessedTransaction transaction)
        {
            var stringifiedFee  = transaction.Fee.ToString("0.00");
            var stringifiedDate = transaction.RelatedTransaction.DoneOn.ToString("yyyy-MM-dd");

            return($"{stringifiedDate,10} {transaction.RelatedTransaction.Owner.Name,8} {stringifiedFee,3}");
        }
コード例 #3
0
ファイル: Util.cs プロジェクト: BSNDA/PCNGateway-CSharp-SDK
        /// <summary>
        ///  convert CharacterString to ProcessedTransaction
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        public static ProcessedTransaction ProcessedTransactionConvert(string str)
        {
            ProcessedTransaction msg = new ProcessedTransaction();

            using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
            {
                var b = Convert.FromBase64String(str);
                ms.Write(b, 0, b.Length);
                ms.Position = 0;
                msg         = ProcessedTransaction.Parser.ParseFrom(b, 0, b.Length);
            }
            return(msg);
        }
コード例 #4
0
        public void TransactionWriter_ShouldWriteTransaction_WhenCorrectDataProvided()
        {
            // Arrange
            var writer = new ProcessedTransactionWriter();
            ProcessedTransaction processedTransaction = new ProcessedTransaction(new Transaction()
            {
                Amount = 100, Owner = new Merchant()
                {
                    Name = "7-ELEVEN"
                }, DoneOn = new DateTime(2018, 9, 1)
            });
            var transaction = processedTransaction;

            transaction.Fee = 30;

            // Act
            var stringifiedTransaction = writer.ConvertTransactionToTextEntry(transaction);

            // Assert
            Assert.Equal("2018-09-01 7-ELEVEN 30.00", stringifiedTransaction);
        }
コード例 #5
0
 public TransactionInfo(string txID, ProcessedTransaction processedTransaction)
 {
     TransactionID        = txID;
     ProcessedTransaction = processedTransaction;
 }