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 {
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;
import javax.ejb.Stateless;
import fi.codecrew.moya.model.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......@@ -157,12 +158,10 @@ public class PlaceGroupBean implements PlaceGroupBeanLocal {
public void getGroupMembershipPdf(EventUser usr, OutputStream ostream) {
List<GroupMembership> memberships = getMembershipsAndCreations(usr);
boolean placecodeFromUser = eventbean.getPropertyBoolean(LanEventPropertyKey.PLACECODE_FROM_USER);
boolean printOnlyOwn = eventbean.getPropertyBoolean(LanEventPropertyKey.PLACECODE_PRINT_ONLY_OWN);
try {
PDF pdf = new PDF(ostream);
Font font = new Font(pdf, CoreFont.TIMES_ROMAN);
......@@ -279,13 +278,13 @@ public class PlaceGroupBean implements PlaceGroupBeanLocal {
@Override
@RolesAllowed({ SpecialPermission.S_USER, MapPermission.S_MANAGE_MAPS })
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.");
}
gmem = gmemfacade.reload(gmem);
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);
throw new EJBAccessException("Not enough rights to release token");
......@@ -304,17 +303,17 @@ public class PlaceGroupBean implements PlaceGroupBeanLocal {
}
@Override
public void markGrouMembershipEntered(GroupMembership membership) {
public GroupMembership markGroupMembershipEntered(GroupMembership membership) {
membership.setEnteredEvent(Calendar.getInstance());
membership = gmemfacade.merge(membership);
return membership;
}
@Override
public void markGrouMembershipNotEntered(GroupMembership membership) {
public GroupMembership markGroupMembershipNotEntered(GroupMembership membership) {
membership.setEnteredEvent(null);
membership = gmemfacade.merge(membership);
return membership;
}
}
......@@ -64,6 +64,20 @@ public class PlaceFacade extends IntegerPkGenericFacade<Place> {
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() {
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<Place> cq = cb.createQuery(Place.class);
......@@ -114,7 +128,6 @@ public class PlaceFacade extends IntegerPkGenericFacade<Place> {
return q.getResultList();
}
public List<Place> findUsersUnlocketSelected(EventUser user) {
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<Place> cq = cb.createQuery(Place.class);
......@@ -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_.currentUser), user),
cb.isNull(root.get(Place_.group))
));
));
TypedQuery<Place> q = getEm().createQuery(cq);
return q.getResultList();
}
public int setBuyable(EventMap map, String like, boolean b) {
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<Place> cq = cb.createQuery(Place.class);
......@@ -236,8 +247,7 @@ public class PlaceFacade extends IntegerPkGenericFacade<Place> {
// TKwtf lisäsi:
cb.isTrue(root.get(Place_.buyable))
);
);
return getSingleNullableResult(getEm().createQuery(cq));
......@@ -303,7 +313,7 @@ public class PlaceFacade extends IntegerPkGenericFacade<Place> {
subq.where(
placeJoin.get(Place_.id).isNotNull(),
cb.equal(placeJoin.get(Place_.map).get(EventMap_.event), eventBean.getCurrentEvent())
);
);
cq.where(root.get(Product_.id).in(subq));
......
......@@ -50,12 +50,14 @@ import com.wordnik.swagger.annotations.ApiParam;
import fi.codecrew.moya.beans.CardTemplateBeanLocal;
import fi.codecrew.moya.beans.EventBeanLocal;
import fi.codecrew.moya.beans.PermissionBeanLocal;
import fi.codecrew.moya.beans.PlaceBeanLocal;
import fi.codecrew.moya.beans.PlaceGroupBeanLocal;
import fi.codecrew.moya.beans.ReaderBeanLocal;
import fi.codecrew.moya.beans.TicketBeanLocal;
import fi.codecrew.moya.beans.UserBeanLocal;
import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.GroupMembership;
import fi.codecrew.moya.model.Place;
import fi.codecrew.moya.model.ReaderEvent;
import fi.codecrew.moya.rest.pojo.userinfo.v1.EventUserRestPojo;
import fi.codecrew.moya.rest.pojo.userinfo.v1.PrintedCardRestPojo;
......@@ -95,6 +97,50 @@ public class UserRestView {
@EJB
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
@Path("/reservationswithcode/{code}")
public Response getPlacesWithCode(@PathParam("code") String code) {
......
......@@ -145,7 +145,7 @@ public class CardlessIncomingView extends GenericCDIView {
public void givePlace() {
GroupMembership row = memberlist.getRowData();
if (row != null) {
placegroupBean.markGrouMembershipEntered(row);
placegroupBean.markGroupMembershipEntered(row);
memberlist = null;
}
}
......@@ -153,7 +153,7 @@ public class CardlessIncomingView extends GenericCDIView {
public void ungivePlace() {
GroupMembership row = memberlist.getRowData();
if (row != null) {
placegroupBean.markGrouMembershipNotEntered(row);
placegroupBean.markGroupMembershipNotEntered(row);
memberlist = null;
}
}
......@@ -165,7 +165,7 @@ public class CardlessIncomingView extends GenericCDIView {
int count = 0;
for(GroupMembership gm : memberships) {
if(gm.getEnteredEvent() == null) {
placegroupBean.markGrouMembershipEntered(gm);
placegroupBean.markGroupMembershipEntered(gm);
count++;
}
}
......
......@@ -29,7 +29,6 @@ import javax.inject.Inject;
import javax.inject.Named;
import javax.json.JsonObject;
import org.primefaces.event.SelectEvent;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......@@ -302,7 +301,7 @@ public class IncomingView extends GenericCDIView {
public String givePlace() {
GroupMembership row = memberlist.getRowData();
if (row != null) {
placegroupBean.markGrouMembershipEntered(row);
placegroupBean.markGroupMembershipEntered(row);
memberlist = null;
}
return null;
......@@ -311,7 +310,7 @@ public class IncomingView extends GenericCDIView {
public String ungivePlace() {
GroupMembership row = memberlist.getRowData();
if (row != null) {
placegroupBean.markGrouMembershipNotEntered(row);
placegroupBean.markGroupMembershipNotEntered(row);
memberlist = null;
}
return null;
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!