diff --git a/src/main/java/com/commafeed/backend/dao/FeedSubscriptionService.java b/src/main/java/com/commafeed/backend/dao/FeedSubscriptionService.java index 9d55a741..50c9543d 100644 --- a/src/main/java/com/commafeed/backend/dao/FeedSubscriptionService.java +++ b/src/main/java/com/commafeed/backend/dao/FeedSubscriptionService.java @@ -100,6 +100,16 @@ public class FeedSubscriptionService extends GenericDAO { return criteria.getResultList(); } + public List findByCategory(User user, + FeedCategory category) { + EasyCriteria criteria = EasyCriteriaFactory + .createQueryCriteria(em, getType()); + criteria.andEquals(MF.i(proxy().getUser()), user); + criteria.andEquals(MF.i(proxy().getCategory()), category); + return criteria.getResultList(); + + } + public List findWithoutCategories(User user) { EasyCriteria criteria = EasyCriteriaFactory .createQueryCriteria(em, getType()); diff --git a/src/main/java/com/commafeed/frontend/rest/resources/SubscriptionsREST.java b/src/main/java/com/commafeed/frontend/rest/resources/SubscriptionsREST.java index 35484876..ed6b734a 100644 --- a/src/main/java/com/commafeed/frontend/rest/resources/SubscriptionsREST.java +++ b/src/main/java/com/commafeed/frontend/rest/resources/SubscriptionsREST.java @@ -81,8 +81,14 @@ public class SubscriptionsREST extends AbstractREST { @GET @Path("unsubscribe") public Response unsubscribe(@QueryParam("id") Long subscriptionId) { - feedSubscriptionService.deleteById(subscriptionId); - return Response.ok(Status.OK).build(); + FeedSubscription sub = feedSubscriptionService.findById(getUser(), + subscriptionId); + if (sub != null) { + feedSubscriptionService.delete(sub); + return Response.ok(Status.OK).build(); + } else { + return Response.status(Status.NOT_FOUND).build(); + } } @GET @@ -137,8 +143,19 @@ public class SubscriptionsREST extends AbstractREST { @GET @Path("deleteCategory") public Response deleteCategory(@QueryParam("id") Long id) { - feedCategoryService.deleteById(id); - return Response.ok().build(); + FeedCategory cat = feedCategoryService.findById(getUser(), id); + if (cat != null) { + List subs = feedSubscriptionService + .findByCategory(getUser(), cat); + for (FeedSubscription sub : subs) { + sub.setCategory(null); + } + feedSubscriptionService.update(subs); + feedCategoryService.delete(cat); + return Response.ok().build(); + } else { + return Response.status(Status.NOT_FOUND).build(); + } } @POST diff --git a/src/main/webapp/directives/category.html b/src/main/webapp/directives/category.html index d438a2f8..92eba773 100644 --- a/src/main/webapp/directives/category.html +++ b/src/main/webapp/directives/category.html @@ -1,5 +1,5 @@
  • -