public IHttpActionResult CancelRecurringGift([FromUri] int recurringGiftId, [FromUri(Name = "impersonateDonorId")] int?impersonateDonorId = null) { return(Authorized(token => { try { var impersonateUserId = impersonateDonorId == null ? string.Empty : _mpDonorService.GetEmailViaDonorId(impersonateDonorId.Value).Email; var result = (impersonateDonorId != null) ? _impersonationService.WithImpersonation(token, impersonateUserId, () => _donorService.CancelRecurringGift(token, recurringGiftId)) : _donorService.CancelRecurringGift(token, recurringGiftId); return (Ok()); } 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); } })); }