private IHttpActionResult CreateDonorForUnauthenticatedUser(CreateDonorDTO dto) { ContactDonor donor; try { donor = _donorService.GetContactDonorForEmail(dto.email_address); } catch (Exception e) { var msg = "Error getting donor for email " + dto.email_address; logger.Error(msg, e); var apiError = new ApiErrorDto(msg, e); throw new HttpResponseException(apiError.HttpResponseMessage); } int existingDonorId = (donor == null) ? 0 : donor.DonorId; try { donor = _donorService.CreateOrUpdateContactDonor(donor, String.Empty, dto.email_address, dto.stripe_token_id, DateTime.Now); } catch (PaymentProcessorException e) { return (e.GetStripeResult()); } catch (Exception e) { var msg = "Error creating donor for email " + dto.email_address; logger.Error(msg, e); var apiError = new ApiErrorDto(msg, e); throw new HttpResponseException(apiError.HttpResponseMessage); } var responseBody = new DonorDTO { Id = donor.DonorId, ProcessorId = donor.ProcessorId, RegisteredUser = false, Email = donor.Email }; // HTTP StatusCode should be 201 (Created) if we created a donor, or 200 (Ok) if returning an existing donor var statusCode = (existingDonorId == donor.DonorId) ? HttpStatusCode.OK : HttpStatusCode.Created; return (ResponseMessage(Request.CreateResponse(statusCode, responseBody))); }
private IHttpActionResult UpdateDonor(string token, UpdateDonorDTO dto) { ContactDonor contactDonor; SourceData sourceData; try { contactDonor = token == null ? _donorService.GetContactDonorForEmail(dto.EmailAddress) : _donorService.GetContactDonorForAuthenticatedUser(token); sourceData = _stripePaymentService.UpdateCustomerSource(contactDonor.ProcessorId, dto.StripeTokenId); } 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); } //return donor var donor = new DonorDTO { Id = contactDonor.DonorId, ProcessorId = contactDonor.ProcessorId, DefaultSource = new DefaultSourceDTO { credit_card = new CreditCardDTO { brand = sourceData.brand, last4 = sourceData.last4, address_zip = sourceData.address_zip, exp_date = sourceData.exp_month + sourceData.exp_year }, bank_account = new BankAccountDTO { last4 = sourceData.bank_last4, routing = sourceData.routing_number } }, RegisteredUser = contactDonor.RegisteredUser, Email = contactDonor.Email }; return Ok(donor); }
private IHttpActionResult GetDonorForAuthenticatedUser(string token) { try { var donor = _donorService.GetContactDonorForAuthenticatedUser(token); if (donor == null || !donor.HasPaymentProcessorRecord) { return (NotFound()); } else { var defaultSource = _stripePaymentService.GetDefaultSource(donor.ProcessorId); var response = new DonorDTO() { Id = donor.DonorId, ProcessorId = donor.ProcessorId, DefaultSource = new DefaultSourceDTO { credit_card = new CreditCardDTO { last4 = defaultSource.last4, brand = defaultSource.brand, address_zip = defaultSource.address_zip, exp_date = defaultSource.exp_month + defaultSource.exp_year }, bank_account = new BankAccountDTO { last4 = defaultSource.bank_last4, routing = defaultSource.routing_number } }, RegisteredUser = donor.RegisteredUser, Email = donor.Email }; return Ok(response); } } catch (PaymentProcessorException stripeException) { return (stripeException.GetStripeResult()); } catch (Exception exception) { var apiError = new ApiErrorDto("Donor Get Failed", exception); throw new HttpResponseException(apiError.HttpResponseMessage); } }
private IHttpActionResult GetDonorForUnauthenticatedUser(string email) { try { var donor = _donorService.GetContactDonorForEmail(email); if (donor == null || !donor.HasPaymentProcessorRecord) { return NotFound(); } else { var response = new DonorDTO { Id = donor.DonorId, ProcessorId = donor.ProcessorId, RegisteredUser = donor.RegisteredUser, Email = donor.Email }; return Ok(response); } } catch (PaymentProcessorException stripeException) { return (stripeException.GetStripeResult()); } catch (Exception exception) { var apiError = new ApiErrorDto("Donor Get Failed", exception); throw new HttpResponseException(apiError.HttpResponseMessage); } }
private IHttpActionResult CreateDonorForAuthenticatedUser(string authToken, CreateDonorDTO dto) { try { var donor = _donorService.GetContactDonorForAuthenticatedUser(authToken); donor = _donorService.CreateOrUpdateContactDonor(donor, string.Empty, string.Empty, dto.stripe_token_id, DateTime.Now); var response = new DonorDTO { Id = donor.DonorId, ProcessorId = donor.ProcessorId, RegisteredUser = true, Email = donor.Email }; return Ok(response); } catch (PaymentProcessorException e) { return (e.GetStripeResult()); } catch (Exception exception) { var apiError = new ApiErrorDto("Donor Post Failed", exception); throw new HttpResponseException(apiError.HttpResponseMessage); } }