diff --git a/src/main/java/de/dpunkt/myaktion/resources/CampaignResource.java b/src/main/java/de/dpunkt/myaktion/resources/CampaignResource.java index 93be80bd15352ab04be7eb1ce9973dfc36a142da..56da7c497663249879580509de995f34f592c730 100644 --- a/src/main/java/de/dpunkt/myaktion/resources/CampaignResource.java +++ b/src/main/java/de/dpunkt/myaktion/resources/CampaignResource.java @@ -7,6 +7,7 @@ import javax.ws.rs.Consumes; import javax.ws.rs.DELETE; import javax.ws.rs.GET; import javax.ws.rs.POST; +import javax.ws.rs.PUT; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; @@ -46,4 +47,22 @@ public class CampaignResource { public Campaign addCampaign(Campaign campaign) { return campaignService.addCampaign(campaign); } + + @PUT + @Path("/{campaignId}") + @Consumes(MediaType.APPLICATION_JSON) + @Produces(MediaType.APPLICATION_JSON) + public Campaign updateCampaign(@PathParam(value = "campaignId") Long campaignId, + Campaign newCampaign) { + Campaign campaign = campaignService.getCampaign(campaignId); + campaign.setName(newCampaign.getName()); + campaign.setDonationMinimum(newCampaign.getDonationMinimum()); + campaign.setTargetAmount(newCampaign.getTargetAmount()); + + newCampaign = campaignService.updateCampaign(campaign); + newCampaign.setDonations(null); + newCampaign.setOrganizer(null); + + return newCampaign; + } } \ No newline at end of file diff --git a/src/main/java/de/dpunkt/myaktion/resources/DonationResource.java b/src/main/java/de/dpunkt/myaktion/resources/DonationResource.java new file mode 100644 index 0000000000000000000000000000000000000000..36a92283b0e3d456dd5a7de6baff3d29b0443647 --- /dev/null +++ b/src/main/java/de/dpunkt/myaktion/resources/DonationResource.java @@ -0,0 +1,60 @@ +package de.dpunkt.myaktion.resources; + +import java.math.BigDecimal; +import java.util.List; + +import javax.inject.Inject; +import javax.ws.rs.Consumes; +import javax.ws.rs.FormParam; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import javax.ws.rs.core.MediaType; + +import de.dpunkt.myaktion.model.Account; +import de.dpunkt.myaktion.model.Donation; +import de.dpunkt.myaktion.model.Donation.Status; +import de.dpunkt.myaktion.services.DonationService; + +@Path("/") +public class DonationResource { + @Inject + private DonationService donationService; + + @GET + @Path("/organizer/donation/list/{campaignId}") + @Produces(MediaType.APPLICATION_JSON) + public List<Donation> getDonationList(@PathParam(value = "campaignId") Long campaignId) { + List<Donation> donations = donationService.getDonationList(campaignId); + donations.forEach(donation -> donation.setCampaign(null)); + + return donations; + } + + @POST + @Path("/donation/{campaignId}") + @Consumes(MediaType.APPLICATION_FORM_URLENCODED) + public void addDonation(@PathParam(value = "campaignId") Long campaignId, + @FormParam(value = "donorName") String donorName, + @FormParam(value = "amount") Double amount, + @FormParam(value = "iban") String iban, + @FormParam(value = "nameOfBank") String nameOfBank, + @FormParam(value = "receiptRequested") Boolean receiptRequested) { + Donation donation = new Donation(); + donation.setDonorName(donorName); + donation.setAmount(new BigDecimal(amount)); + + Account account = new Account(); + account.setIban(iban); + account.setName(donorName); + account.setNameOfBank(nameOfBank); + + donation.setAccount(account); + donation.setReceiptRequested(receiptRequested); + donation.setStatus(Status.IN_PROCESS); + + donationService.addDonation(campaignId, donation); + } +} diff --git a/src/main/java/de/dpunkt/myaktion/services/CampaignService.java b/src/main/java/de/dpunkt/myaktion/services/CampaignService.java index 2b7e2a04c118ece598b796d3af969e86e4fb2e24..9d1f69678b875c26321a397dc476e2b69bb409b6 100644 --- a/src/main/java/de/dpunkt/myaktion/services/CampaignService.java +++ b/src/main/java/de/dpunkt/myaktion/services/CampaignService.java @@ -23,8 +23,8 @@ public interface CampaignService { void deleteCampaign(Long campaignId); - void updateCampaign(Campaign campaign); - + Campaign updateCampaign(Campaign campaign); + Campaign getCampaign(Long campaignId); //---------------------------------------------------------------------------------------------- diff --git a/src/main/java/de/dpunkt/myaktion/services/CampaignServiceBean.java b/src/main/java/de/dpunkt/myaktion/services/CampaignServiceBean.java index e48beb356ae2a1db2d246ed49016dd13d4522b70..c17f355e171415b8c06e52739b9ee61a5e167dc8 100644 --- a/src/main/java/de/dpunkt/myaktion/services/CampaignServiceBean.java +++ b/src/main/java/de/dpunkt/myaktion/services/CampaignServiceBean.java @@ -64,15 +64,15 @@ public class CampaignServiceBean implements CampaignService { Organizer organizer = getLoggedinOrganizer(); campaign.setOrganizer(organizer); entityManager.persist(campaign); - + return campaign; } // ---------------------------------------------------------------------------------------------- @Override - public void updateCampaign(Campaign campaign) { - entityManager.merge(campaign); + public Campaign updateCampaign(Campaign campaign) { + return entityManager.merge(campaign); } // ---------------------------------------------------------------------------------------------- @@ -83,14 +83,16 @@ public class CampaignServiceBean implements CampaignService { entityManager.remove(managedCampaign); } + @Override public void deleteCampaign(Long campaignId) { Campaign managedCampaign = getCampaign(campaignId); entityManager.remove(managedCampaign); } + @Override public Campaign getCampaign(Long campaignId) { Campaign managedCampaign = entityManager.find(Campaign.class, campaignId); - + return managedCampaign; }