/// <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); } }
/// <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); }