/// <summary>
        /// Update a collection of donations with a new payment status
        /// </summary>
        /// <param name="donationTrans">Donation to update</param>
        /// <param name="paymentProcessStatus">Status to update transactions with</param>
        /// <param name="statusUpdateDateTime">Date/time of update</param>
        /// <param name="statusUpdateBy">Person updating status</param>
        public void SetDonationTransactionsStatus(TransactionDetail donationTrans, PaymentGatewayProcessing.Helpers.Enums.PaymentProcessStatus paymentProcessStatus, DateTime statusUpdateDateTime, string statusUpdateBy)
        {
            try
            {
                //update process status or set 'do not process' flag
                if (paymentProcessStatus == PaymentGatewayProcessing.Helpers.Enums.PaymentProcessStatus.DoNotProcess)
                {
                    donationTrans.DoNotProcess = true;
                }
                else
                {
                    donationTrans.DoNotProcess            = false;
                    donationTrans.ProcessStatusId         = (byte)paymentProcessStatus;
                    donationTrans.HasProcessStatusChanged = true; //acknowledge that we have updated process status
                }

                donationTrans.LastProcessedDateTime = statusUpdateDateTime;
                donationTrans.LastModifiedDateTime  = statusUpdateDateTime;
                donationTrans.LastModifiedBy        = statusUpdateBy;

                if (paymentProcessStatus == PaymentGatewayProcessing.Helpers.Enums.PaymentProcessStatus.Approved)
                {
                    donationTrans.Processed_DonationFinalisedDateTime = DateTime.Now;
                }
                //for DD when ABA file is generated the transaction status is set to awaiting clearance and we set donation submitted date time to current date time
                else if (paymentProcessStatus == PaymentGatewayProcessing.Helpers.Enums.PaymentProcessStatus.AwaitingClearance)
                {
                    donationTrans.Processed_DonationSubmittedDateTime = DateTime.Now;
                }
                else if (paymentProcessStatus == PaymentGatewayProcessing.Helpers.Enums.PaymentProcessStatus.ReProcess)
                {
                    donationTrans.ProcessRetryCounter = Convert.ToByte((donationTrans.ProcessRetryCounter ?? 0) + 1);

                    //allow the transaction to be re-processed after a certain period of time
                    donationTrans.ProcessDateTime = DateTime.Today.AddDays(RetryPeriodInDays);
                }
                else if (paymentProcessStatus == PaymentGatewayProcessing.Helpers.Enums.PaymentProcessStatus.Declined)
                {
                    // Do nothing
                }

                _transactionDetailsBS.UpdateTransactionRecord(donationTrans);
            }
            catch (Exception ex)
            {
                //Common.Helper.LogException(ex);
            }
        }
Example #2
0
        /// <summary>
        /// Get a collection of donation transactions
        /// </summary>
        /// <param name="dateTimeToBeProcessed">Date/time when transaction is being processed</param>
        /// <param name="paymentProcessStatus">Enum process status</param>
        /// <param name="paymentMethod">Enum of payment type (credit card, direct debit)</param>
        /// <returns>Collection of donation transaction details</returns>
        public IEnumerable <TransactionDetail> GetDonationTransactionsByStatus_ForProcessing(DateTime dateTimeToBeProcessed, PaymentGatewayProcessing.Helpers.Enums.PaymentProcessStatus status, PaymentGatewayProcessing.Helpers.Enums.PaymentMethod method)
        {
            byte statusValue = (byte)status;
            byte methodValue = (byte)method;

            using (var db = new GenerousAPIEntities())
            {
                var donationTransactionList = from trans in db.TransactionDetails
                                              where
                                              trans.ProcessDateTime <= dateTimeToBeProcessed &&
                                              trans.ProcessStatusId == statusValue &&
                                              trans.PaymentMethodId == methodValue &&
                                              trans.DoNotProcess == false
                                              select trans;

                return(donationTransactionList.ToList <TransactionDetail>());
            }
        }
 /// <summary>
 /// Get a collection of donation transactions
 /// </summary>
 /// <param name="dateTimeToBeProcessed">Date/time when transaction is being processed</param>
 /// <param name="paymentProcessStatus">Enum process status</param>
 /// <param name="paymentMethod">Enum of payment type (credit card, direct debit)</param>
 /// <returns>Collection of donation transaction details</returns>
 public IEnumerable <TransactionDetail> GetDonationTransactionsByStatus_ForProcessing(DateTime dateTimeToBeProcessed, PaymentGatewayProcessing.Helpers.Enums.PaymentProcessStatus processStatus, PaymentGatewayProcessing.Helpers.Enums.PaymentMethod PaymentMethod)
 {
     return(_ITransactionDetailsDAL.GetDonationTransactionsByStatus_ForProcessing(dateTimeToBeProcessed, processStatus, PaymentMethod));
 }
        /// <summary>
        /// Update a collection of donations with a new payment status
        /// </summary>
        /// <param name="donationTransList">Collection of donations to update</param>
        /// <param name="paymentProcessStatus">Status to update transactions with</param>
        /// <param name="statusUpdateDateTime">Date/time of update</param>
        /// <param name="statusUpdateBy">Person updating status</param>
        public void SetDonationTransactionsStatus(List <TransactionDetail> donationTransList, PaymentGatewayProcessing.Helpers.Enums.PaymentProcessStatus paymentProcessStatus, DateTime statusUpdateDateTime, string statusUpdateBy)
        {
            foreach (TransactionDetail trans in donationTransList)
            {
                try
                {
                    SetDonationTransactionsStatus(trans, paymentProcessStatus, statusUpdateDateTime, statusUpdateBy);
                }
                catch (Exception ex)
                {
                    //Common.Helper.LogException(ex);
                }
            }

            //if (donationTransList.Count() > 0)
            //_transactionDetailsBS.UpdateDonationTransactionList(donationTransList);
        }