public IHttpActionResult GetDonations(string donationYear = null,
                                              int?limit           = null,
                                              [FromUri(Name = "softCredit")] bool?softCredit = null,
                                              [FromUri(Name = "impersonateDonorId")] int?impersonateDonorId = null,
                                              bool?includeRecurring = true)
        {
            return(Authorized(token =>
            {
                var impersonateUserId = impersonateDonorId == null ? string.Empty : _mpDonorService.GetEmailViaDonorId(impersonateDonorId.Value).Email;
                try
                {
                    var donations = (impersonateDonorId != null)
                        ? _impersonationService.WithImpersonation(token,
                                                                  impersonateUserId,
                                                                  () =>
                                                                  _gatewayDonationService.GetDonationsForAuthenticatedUser(token, donationYear, limit, softCredit, includeRecurring))
                        : _gatewayDonationService.GetDonationsForAuthenticatedUser(token, donationYear, limit, softCredit, includeRecurring);
                    if (donations == null || !donations.HasDonations)
                    {
                        return (RestHttpActionResult <ApiErrorDto> .WithStatus(HttpStatusCode.NotFound, new ApiErrorDto("No matching donations found")));
                    }

                    return (Ok(donations));
                }
                catch (UserImpersonationException e)
                {
                    return (e.GetRestHttpActionResult());
                }
            }));
        }
예제 #2
0
        public IHttpActionResult CreateRecurringGift([FromBody] RecurringGiftDto recurringGiftDto, [FromUri(Name = "impersonateDonorId")] int?impersonateDonorId = null)
        {
            return(Authorized(token =>
            {
                var impersonateUserId = impersonateDonorId == null ? string.Empty : _mpDonorService.GetEmailViaDonorId(impersonateDonorId.Value).Email;

                try
                {
                    var contactDonor = (impersonateDonorId != null)
                        ? _impersonationService.WithImpersonation(token,
                                                                  impersonateUserId,
                                                                  () =>
                                                                  _donorService.GetContactDonorForAuthenticatedUser(token))
                        : _donorService.GetContactDonorForAuthenticatedUser(token);
                    var donor = _donorService.CreateOrUpdateContactDonor(contactDonor, string.Empty, string.Empty, string.Empty, string.Empty);
                    var recurringGift = !string.IsNullOrWhiteSpace(impersonateUserId)
                        ? _impersonationService.WithImpersonation(token,
                                                                  impersonateUserId,
                                                                  () =>
                                                                  _donorService.CreateRecurringGift(token, recurringGiftDto, donor))
                        : _donorService.CreateRecurringGift(token, recurringGiftDto, donor);

                    recurringGiftDto.EmailAddress = donor.Email;
                    recurringGiftDto.RecurringGiftId = recurringGift;

                    _analyticsService.Track(donor.ContactId.ToString(), "PaymentSucceededServerSide", new EventProperties()
                    {
                        { "Url", recurringGiftDto.SourceUrl }, { "FundingMethod", recurringGiftDto.Source }, { "Email", "" }, { "CheckoutType", "Registered" }, { "Amount", recurringGiftDto.PlanAmount }
                    });

                    return Ok(recurringGiftDto);
                }
                catch (PaymentProcessorException stripeException)
                {
                    return (stripeException.GetStripeResult());
                }
                catch (ApplicationException applicationException)
                {
                    var apiError = new ApiErrorDto("Error calling Ministry Platform " + applicationException.Message, applicationException);
                    throw new HttpResponseException(apiError.HttpResponseMessage);
                }
            }));
        }
예제 #3
0
        public IHttpActionResult CreateRecurringGift([FromBody] RecurringGiftDto recurringGiftDto, [FromUri(Name = "impersonateDonorId")] int?impersonateDonorId = null)
        {
            return(Authorized(token =>
            {
                var impersonateUserId = impersonateDonorId == null ? string.Empty : _mpDonorService.GetEmailViaDonorId(impersonateDonorId.Value).Email;

                try
                {
                    var contactDonor = (impersonateDonorId != null)
                        ? _impersonationService.WithImpersonation(token,
                                                                  impersonateUserId,
                                                                  () =>
                                                                  _donorService.GetContactDonorForAuthenticatedUser(token))
                        : _donorService.GetContactDonorForAuthenticatedUser(token);
                    var donor = _donorService.CreateOrUpdateContactDonor(contactDonor, string.Empty, string.Empty, string.Empty, string.Empty);
                    var recurringGift = !string.IsNullOrWhiteSpace(impersonateUserId)
                        ? _impersonationService.WithImpersonation(token,
                                                                  impersonateUserId,
                                                                  () =>
                                                                  _donorService.CreateRecurringGift(token, recurringGiftDto, donor))
                        : _donorService.CreateRecurringGift(token, recurringGiftDto, donor);

                    recurringGiftDto.EmailAddress = donor.Email;
                    recurringGiftDto.RecurringGiftId = recurringGift;
                    return Ok(recurringGiftDto);
                }
                catch (PaymentProcessorException stripeException)
                {
                    return (stripeException.GetStripeResult());
                }
                catch (ApplicationException applicationException)
                {
                    var apiError = new ApiErrorDto("Error calling Ministry Platform " + applicationException.Message, applicationException);
                    throw new HttpResponseException(apiError.HttpResponseMessage);
                }
            }));
        }
예제 #4
0
        public DonationsDTO GetDonationsForDonor(int donorId, string donationYear = null, bool softCredit = false)
        {
            var donor = _mpDonorRepository.GetEmailViaDonorId(donorId);

            return(GetDonationsForDonor(donor, donationYear, softCredit));
        }
예제 #5
0
 public MpContactDonor GetContactDonorForDonorId(int donorId)
 {
     return(_mpDonorService.GetEmailViaDonorId(donorId));
 }