Commit be85a7a1 by Juho Salli

Merge branch 'placegiverest' into 'master'

Place giving rest api

/rest/user/giveplace/{placeId}

takes form parameter 'action' with allowed values: 'give' and 'ungive'

See merge request !223
2 parents 4c15d6c4 e908f55b
...@@ -50,8 +50,8 @@ public interface PlaceGroupBeanLocal { ...@@ -50,8 +50,8 @@ public interface PlaceGroupBeanLocal {
boolean associateToToken(EventUser user, String token); boolean associateToToken(EventUser user, String token);
void markGrouMembershipEntered(GroupMembership row); GroupMembership markGroupMembershipEntered(GroupMembership membership);
void markGrouMembershipNotEntered(GroupMembership row); GroupMembership markGroupMembershipNotEntered(GroupMembership membership);
} }
...@@ -30,6 +30,7 @@ import javax.ejb.EJBAccessException; ...@@ -30,6 +30,7 @@ import javax.ejb.EJBAccessException;
import javax.ejb.Stateless; import javax.ejb.Stateless;
import fi.codecrew.moya.model.*; import fi.codecrew.moya.model.*;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -157,12 +158,10 @@ public class PlaceGroupBean implements PlaceGroupBeanLocal { ...@@ -157,12 +158,10 @@ public class PlaceGroupBean implements PlaceGroupBeanLocal {
public void getGroupMembershipPdf(EventUser usr, OutputStream ostream) { public void getGroupMembershipPdf(EventUser usr, OutputStream ostream) {
List<GroupMembership> memberships = getMembershipsAndCreations(usr); List<GroupMembership> memberships = getMembershipsAndCreations(usr);
boolean placecodeFromUser = eventbean.getPropertyBoolean(LanEventPropertyKey.PLACECODE_FROM_USER); boolean placecodeFromUser = eventbean.getPropertyBoolean(LanEventPropertyKey.PLACECODE_FROM_USER);
boolean printOnlyOwn = eventbean.getPropertyBoolean(LanEventPropertyKey.PLACECODE_PRINT_ONLY_OWN); boolean printOnlyOwn = eventbean.getPropertyBoolean(LanEventPropertyKey.PLACECODE_PRINT_ONLY_OWN);
try { try {
PDF pdf = new PDF(ostream); PDF pdf = new PDF(ostream);
Font font = new Font(pdf, CoreFont.TIMES_ROMAN); Font font = new Font(pdf, CoreFont.TIMES_ROMAN);
...@@ -279,13 +278,13 @@ public class PlaceGroupBean implements PlaceGroupBeanLocal { ...@@ -279,13 +278,13 @@ public class PlaceGroupBean implements PlaceGroupBeanLocal {
@Override @Override
@RolesAllowed({ SpecialPermission.S_USER, MapPermission.S_MANAGE_MAPS }) @RolesAllowed({ SpecialPermission.S_USER, MapPermission.S_MANAGE_MAPS })
public void releaseAndGenerateToken(GroupMembership gmem) { public void releaseAndGenerateToken(GroupMembership gmem) {
if(gmem.getEnteredEvent() != null && !permbean.hasPermission(MapPermission.MANAGE_OTHERS)) { if (gmem.getEnteredEvent() != null && !permbean.hasPermission(MapPermission.MANAGE_OTHERS)) {
throw new EJBAccessException("Token already entered to event, Not enough rights to release token."); throw new EJBAccessException("Token already entered to event, Not enough rights to release token.");
} }
gmem = gmemfacade.reload(gmem); gmem = gmemfacade.reload(gmem);
if (!(permbean.getCurrentUser().getId().equals(gmem.getPlaceGroup().getCreator().getId()) || permbean.hasPermission(MapPermission.MANAGE_OTHERS))) { if (!(permbean.getCurrentUser().getId().equals(gmem.getPlaceGroup().getCreator().getId()) || permbean.hasPermission(MapPermission.MANAGE_OTHERS))) {
loggerbean.sendMessage(MoyaEventType.PLACE_ERROR, permbean.getCurrentUser(), "User tried to release and generate group membership: " + gmem); loggerbean.sendMessage(MoyaEventType.PLACE_ERROR, permbean.getCurrentUser(), "User tried to release and generate group membership: " + gmem);
throw new EJBAccessException("Not enough rights to release token"); throw new EJBAccessException("Not enough rights to release token");
...@@ -304,17 +303,17 @@ public class PlaceGroupBean implements PlaceGroupBeanLocal { ...@@ -304,17 +303,17 @@ public class PlaceGroupBean implements PlaceGroupBeanLocal {
} }
@Override @Override
public void markGrouMembershipEntered(GroupMembership membership) { public GroupMembership markGroupMembershipEntered(GroupMembership membership) {
membership.setEnteredEvent(Calendar.getInstance()); membership.setEnteredEvent(Calendar.getInstance());
membership = gmemfacade.merge(membership); membership = gmemfacade.merge(membership);
return membership;
} }
@Override @Override
public void markGrouMembershipNotEntered(GroupMembership membership) { public GroupMembership markGroupMembershipNotEntered(GroupMembership membership) {
membership.setEnteredEvent(null); membership.setEnteredEvent(null);
membership = gmemfacade.merge(membership); membership = gmemfacade.merge(membership);
return membership;
} }
} }
...@@ -64,6 +64,20 @@ public class PlaceFacade extends IntegerPkGenericFacade<Place> { ...@@ -64,6 +64,20 @@ public class PlaceFacade extends IntegerPkGenericFacade<Place> {
super(Place.class); super(Place.class);
} }
@Override
public Place find(Integer id) {
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<Place> cq = cb.createQuery(Place.class);
Root<Place> root = cq.from(Place.class);
cq.where(
cb.equal(root.get(Place_.id), id),
cb.equal(root.get(Place_.map).get(EventMap_.event), eventBean.getCurrentEvent())
);
return super.getSingleNullableResult(getEm().createQuery(cq));
}
public void timeoutPlaces() { public void timeoutPlaces() {
CriteriaBuilder cb = getEm().getCriteriaBuilder(); CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<Place> cq = cb.createQuery(Place.class); CriteriaQuery<Place> cq = cb.createQuery(Place.class);
...@@ -114,7 +128,6 @@ public class PlaceFacade extends IntegerPkGenericFacade<Place> { ...@@ -114,7 +128,6 @@ public class PlaceFacade extends IntegerPkGenericFacade<Place> {
return q.getResultList(); return q.getResultList();
} }
public List<Place> findUsersUnlocketSelected(EventUser user) { public List<Place> findUsersUnlocketSelected(EventUser user) {
CriteriaBuilder cb = getEm().getCriteriaBuilder(); CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<Place> cq = cb.createQuery(Place.class); CriteriaQuery<Place> cq = cb.createQuery(Place.class);
...@@ -127,14 +140,12 @@ public class PlaceFacade extends IntegerPkGenericFacade<Place> { ...@@ -127,14 +140,12 @@ public class PlaceFacade extends IntegerPkGenericFacade<Place> {
cb.equal(root.get(Place_.map).get(EventMap_.event), user.getEvent()), cb.equal(root.get(Place_.map).get(EventMap_.event), user.getEvent()),
cb.equal(root.get(Place_.currentUser), user), cb.equal(root.get(Place_.currentUser), user),
cb.isNull(root.get(Place_.group)) cb.isNull(root.get(Place_.group))
)); ));
TypedQuery<Place> q = getEm().createQuery(cq); TypedQuery<Place> q = getEm().createQuery(cq);
return q.getResultList(); return q.getResultList();
} }
public int setBuyable(EventMap map, String like, boolean b) { public int setBuyable(EventMap map, String like, boolean b) {
CriteriaBuilder cb = getEm().getCriteriaBuilder(); CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<Place> cq = cb.createQuery(Place.class); CriteriaQuery<Place> cq = cb.createQuery(Place.class);
...@@ -236,8 +247,7 @@ public class PlaceFacade extends IntegerPkGenericFacade<Place> { ...@@ -236,8 +247,7 @@ public class PlaceFacade extends IntegerPkGenericFacade<Place> {
// TKwtf lisäsi: // TKwtf lisäsi:
cb.isTrue(root.get(Place_.buyable)) cb.isTrue(root.get(Place_.buyable))
); );
return getSingleNullableResult(getEm().createQuery(cq)); return getSingleNullableResult(getEm().createQuery(cq));
...@@ -303,7 +313,7 @@ public class PlaceFacade extends IntegerPkGenericFacade<Place> { ...@@ -303,7 +313,7 @@ public class PlaceFacade extends IntegerPkGenericFacade<Place> {
subq.where( subq.where(
placeJoin.get(Place_.id).isNotNull(), placeJoin.get(Place_.id).isNotNull(),
cb.equal(placeJoin.get(Place_.map).get(EventMap_.event), eventBean.getCurrentEvent()) cb.equal(placeJoin.get(Place_.map).get(EventMap_.event), eventBean.getCurrentEvent())
); );
cq.where(root.get(Product_.id).in(subq)); cq.where(root.get(Product_.id).in(subq));
......
...@@ -50,12 +50,14 @@ import com.wordnik.swagger.annotations.ApiParam; ...@@ -50,12 +50,14 @@ import com.wordnik.swagger.annotations.ApiParam;
import fi.codecrew.moya.beans.CardTemplateBeanLocal; import fi.codecrew.moya.beans.CardTemplateBeanLocal;
import fi.codecrew.moya.beans.EventBeanLocal; import fi.codecrew.moya.beans.EventBeanLocal;
import fi.codecrew.moya.beans.PermissionBeanLocal; import fi.codecrew.moya.beans.PermissionBeanLocal;
import fi.codecrew.moya.beans.PlaceBeanLocal;
import fi.codecrew.moya.beans.PlaceGroupBeanLocal; import fi.codecrew.moya.beans.PlaceGroupBeanLocal;
import fi.codecrew.moya.beans.ReaderBeanLocal; import fi.codecrew.moya.beans.ReaderBeanLocal;
import fi.codecrew.moya.beans.TicketBeanLocal; import fi.codecrew.moya.beans.TicketBeanLocal;
import fi.codecrew.moya.beans.UserBeanLocal; import fi.codecrew.moya.beans.UserBeanLocal;
import fi.codecrew.moya.model.EventUser; import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.GroupMembership; import fi.codecrew.moya.model.GroupMembership;
import fi.codecrew.moya.model.Place;
import fi.codecrew.moya.model.ReaderEvent; import fi.codecrew.moya.model.ReaderEvent;
import fi.codecrew.moya.rest.pojo.userinfo.v1.EventUserRestPojo; import fi.codecrew.moya.rest.pojo.userinfo.v1.EventUserRestPojo;
import fi.codecrew.moya.rest.pojo.userinfo.v1.PrintedCardRestPojo; import fi.codecrew.moya.rest.pojo.userinfo.v1.PrintedCardRestPojo;
...@@ -95,6 +97,50 @@ public class UserRestView { ...@@ -95,6 +97,50 @@ public class UserRestView {
@EJB @EJB
private TicketBeanLocal ticketbean; private TicketBeanLocal ticketbean;
@EJB
private PlaceBeanLocal placebean;
@POST
@Path("/giveplace/{placeId}")
public Response setPlacesGivenStatus(
@PathParam("placeId") Integer id,
@FormParam("action") String status) {
Place place = placebean.find(id);
if (place == null) {
ResponseBuilder resp = Response.status(Status.BAD_REQUEST);
resp.entity("Place not found with id: " + id);
return resp.build();
}
GroupMembership gm = place.getPlaceReserver();
if (gm == null) {
ResponseBuilder resp = Response.status(Status.BAD_REQUEST);
resp.entity("No group membership for place: " + id);
return resp.build();
}
ResponseBuilder resp = Response.ok();
switch (status) {
case "give":
gm = placegroupbean.markGroupMembershipEntered(gm);
break;
case "ungive":
gm = placegroupbean.markGroupMembershipNotEntered(gm);
break;
default:
resp = Response.status(Status.BAD_REQUEST);
resp.status(Status.BAD_REQUEST);
resp.entity("Unknown status" + status + " possible values: 'give' and 'ungive'");
return resp.build();
}
resp.entity(PojoUtils.initUserReservationPlace(gm));
return resp.build();
}
@GET @GET
@Path("/reservationswithcode/{code}") @Path("/reservationswithcode/{code}")
public Response getPlacesWithCode(@PathParam("code") String code) { public Response getPlacesWithCode(@PathParam("code") String code) {
......
...@@ -145,7 +145,7 @@ public class CardlessIncomingView extends GenericCDIView { ...@@ -145,7 +145,7 @@ public class CardlessIncomingView extends GenericCDIView {
public void givePlace() { public void givePlace() {
GroupMembership row = memberlist.getRowData(); GroupMembership row = memberlist.getRowData();
if (row != null) { if (row != null) {
placegroupBean.markGrouMembershipEntered(row); placegroupBean.markGroupMembershipEntered(row);
memberlist = null; memberlist = null;
} }
} }
...@@ -153,7 +153,7 @@ public class CardlessIncomingView extends GenericCDIView { ...@@ -153,7 +153,7 @@ public class CardlessIncomingView extends GenericCDIView {
public void ungivePlace() { public void ungivePlace() {
GroupMembership row = memberlist.getRowData(); GroupMembership row = memberlist.getRowData();
if (row != null) { if (row != null) {
placegroupBean.markGrouMembershipNotEntered(row); placegroupBean.markGroupMembershipNotEntered(row);
memberlist = null; memberlist = null;
} }
} }
...@@ -165,7 +165,7 @@ public class CardlessIncomingView extends GenericCDIView { ...@@ -165,7 +165,7 @@ public class CardlessIncomingView extends GenericCDIView {
int count = 0; int count = 0;
for(GroupMembership gm : memberships) { for(GroupMembership gm : memberships) {
if(gm.getEnteredEvent() == null) { if(gm.getEnteredEvent() == null) {
placegroupBean.markGrouMembershipEntered(gm); placegroupBean.markGroupMembershipEntered(gm);
count++; count++;
} }
} }
......
...@@ -29,7 +29,6 @@ import javax.inject.Inject; ...@@ -29,7 +29,6 @@ import javax.inject.Inject;
import javax.inject.Named; import javax.inject.Named;
import javax.json.JsonObject; import javax.json.JsonObject;
import org.primefaces.event.SelectEvent;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -302,7 +301,7 @@ public class IncomingView extends GenericCDIView { ...@@ -302,7 +301,7 @@ public class IncomingView extends GenericCDIView {
public String givePlace() { public String givePlace() {
GroupMembership row = memberlist.getRowData(); GroupMembership row = memberlist.getRowData();
if (row != null) { if (row != null) {
placegroupBean.markGrouMembershipEntered(row); placegroupBean.markGroupMembershipEntered(row);
memberlist = null; memberlist = null;
} }
return null; return null;
...@@ -311,7 +310,7 @@ public class IncomingView extends GenericCDIView { ...@@ -311,7 +310,7 @@ public class IncomingView extends GenericCDIView {
public String ungivePlace() { public String ungivePlace() {
GroupMembership row = memberlist.getRowData(); GroupMembership row = memberlist.getRowData();
if (row != null) { if (row != null) {
placegroupBean.markGrouMembershipNotEntered(row); placegroupBean.markGroupMembershipNotEntered(row);
memberlist = null; memberlist = null;
} }
return null; return null;
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!