public MpDonation Update(MpDonation donation)
        {
            var token = ApiUserRepository.GetDefaultApiUserToken();

            return(MpRestBuilder.NewRequestBuilder()
                   .WithAuthenticationToken(token)
                   .Build()
                   .Update(donation));
        }
Exemple #2
0
        private MpDonation GetDonationByProcessorPaymentId(string processorPaymentId, string apiToken, bool retrieveDistributions)
        {
            var result = _ministryPlatformService.GetRecordsDict(_donationsPageId, apiToken,
                                                                 string.Format(",,,,,,,\"{0}\"", processorPaymentId));

            if (result.Count == 0 || (result.Last().ToNullableInt("dp_RecordID")) == null)
            {
                throw (new DonationNotFoundException(processorPaymentId));
            }

            var dictionary = result.First();

            var d = new MpDonation()
            {
                donationId     = dictionary.ToInt("dp_RecordID"),
                donorId        = dictionary.ToInt("Donor_ID"),
                donationDate   = dictionary.ToDate("Donation_Date"),
                donationAmt    = (int)((dictionary["Donation_Amount"] as decimal? ?? 0M) * Constants.StripeDecimalConversionValue),
                paymentTypeId  = PaymentType.GetPaymentType(dictionary.ToString("Payment_Type")).id,
                donationNotes  = dictionary.ToString("Donation_Status_Notes"),
                batchId        = dictionary.ToNullableInt("Batch_ID"),
                donationStatus = dictionary.ToInt("Donation_Status_ID")
            };

            if (!retrieveDistributions)
            {
                return(d);
            }

            var distributions = _ministryPlatformService.GetSubpageViewRecords(_donationDistributionsSubPage, d.donationId, apiToken);

            if (distributions == null || !distributions.Any())
            {
                return(d);
            }

            foreach (var dist in distributions)
            {
                d.Distributions.Add(new MpDonationDistribution
                {
                    donationId = d.donationId,
                    donationDistributionAmt     = (int)((dist["Amount"] as decimal? ?? 0M) * Constants.StripeDecimalConversionValue),
                    donationDistributionId      = dist.ToInt("Donation_Distribution_ID"),
                    donationDistributionProgram = dist.ToString("Program_ID"),
                    PledgeId = dist.ToNullableInt("Pledge_ID")
                });
            }
            return(d);
        }
Exemple #3
0
        private static MpDonation GetDonationFromMap(Dictionary <int, MpDonation> donationMap,
                                                     Dictionary <string, Object> record,
                                                     int donationId,
                                                     List <MpDonationStatus> statuses)
        {
            if (donationMap.ContainsKey(donationId))
            {
                return(donationMap[donationId]);
            }

            var donation = new MpDonation
            {
                donationDate          = record["Donation_Date"] as DateTime? ?? DateTime.Now,
                batchId               = null,
                donationId            = record["Donation_ID"] as int? ?? 0,
                donationNotes         = record["Notes"] as string,
                donationStatus        = record["Donation_Status_ID"] as int? ?? 0,
                donationStatusDate    = record["Donation_Status_Date"] as DateTime? ?? DateTime.Now,
                donorId               = record["Donor_ID"] as int? ?? 0,
                paymentTypeId         = record["Payment_Type_ID"] as int? ?? 0,
                transactionCode       = record["Transaction_Code"] as string,
                softCreditDonorId     = record["Soft_Credit_Donor_ID"] as int? ?? 0,
                donorDisplayName      = record["Donor_Display_Name"] as string,
                itemNumber            = record["Item_Number"] as string,
                recurringGift         = record["Is_Recurring_Gift"] as bool? ?? false,
                AccountingCompanyName = record["Company_Name"] as string,
                AccountingCompanyIncludeOnPrintedStatement = record["Show_Online"] as bool? ?? false
            };

            var status = statuses.Find(x => x.Id == donation.donationStatus) ?? new MpDonationStatus();

            donation.IncludeOnGivingHistory    = status.DisplayOnGivingHistory;
            donation.IncludeOnPrintedStatement = status.DisplayOnStatement && donation.AccountingCompanyIncludeOnPrintedStatement;

            // Determine whether this payment was processed by Forte (i.e., previous processor before Stripe).
            // If it's legacy, clear out the transaction code so that we don't try to call stripe later with
            // an invalid (from Stripe's perspective) payment ID.
            object legacy;

            if (record.TryGetValue("Is_Legacy", out legacy) && legacy.ToString() == "True")
            {
                donation.transactionCode = null;
            }

            return(donation);
        }
Exemple #4
0
        public void ShouldGetDonationByTransactionCode()
        {
            // Arrange
            var transactionCode = "111aaa222bbb";

            var donationDto = new DonationDto
            {
            };

            var mpDonation = new MpDonation()
            {
            };

            _mapper.Setup(m => m.Map <MpDonation>(It.IsAny <DonationDto>())).Returns(mpDonation);
            _mapper.Setup(m => m.Map <DonationDto>(It.IsAny <MpDonation>())).Returns(donationDto);
            _donationRepository.Setup(m => m.GetDonationByTransactionCode(It.IsAny <string>())).Returns(mpDonation);

            // Act
            var result = _fixture.GetDonationByTransactionCode(transactionCode);

            // Assert
            Assert.NotNull(result);
        }
Exemple #5
0
        private static MpDonation GetDonationFromMap(Dictionary <int, MpDonation> donationMap,
                                                     Dictionary <string, Object> record,
                                                     int donationId,
                                                     List <MpDonationStatus> statuses)
        {
            if (donationMap.ContainsKey(donationId))
            {
                return(donationMap[donationId]);
            }

            var donation = new MpDonation
            {
                donationDate          = record["Donation_Date"] as DateTime? ?? DateTime.Now,
                batchId               = null,
                donationId            = record["Donation_ID"] as int? ?? 0,
                donationNotes         = record["Notes"] as string,
                donationStatus        = record["Donation_Status_ID"] as int? ?? 0,
                donationStatusDate    = record["Donation_Status_Date"] as DateTime? ?? DateTime.Now,
                donorId               = record["Donor_ID"] as int? ?? 0,
                paymentTypeId         = record["Payment_Type_ID"] as int? ?? 0,
                transactionCode       = record["Transaction_Code"] as string,
                softCreditDonorId     = record["Soft_Credit_Donor_ID"] as int? ?? 0,
                donorDisplayName      = record["Donor_Display_Name"] as string,
                itemNumber            = record["Item_Number"] as string,
                recurringGift         = record["Is_Recurring_Gift"] as bool? ?? false,
                AccountingCompanyName = record["Company_Name"] as string,
                AccountingCompanyIncludeOnPrintedStatement = record["Show_Online"] as bool? ?? false
            };

            var status = statuses.Find(x => x.Id == donation.donationStatus) ?? new MpDonationStatus();

            donation.IncludeOnGivingHistory    = status.DisplayOnGivingHistory;
            donation.IncludeOnPrintedStatement = status.DisplayOnStatement && donation.AccountingCompanyIncludeOnPrintedStatement;

            return(donation);
        }
Exemple #6
0
        private static void AddDistributionToDonation(Dictionary <string, Object> record, MpDonation donation)
        {
            var amount = Convert.ToInt32((record["Amount"] as decimal? ?? 0) * Constants.StripeDecimalConversionValue);

            donation.donationAmt += amount;

            donation.Distributions.Add(new MpDonationDistribution
            {
                donationDistributionProgram = record["dp_RecordName"] as string,
                donationDistributionAmt     = amount
            });
        }