Commit 79149978 by Antti Tonkyra

incoming flow stuff

1 parent 7efd3a8a
......@@ -511,6 +511,18 @@ public class PlaceBean implements PlaceBeanLocal {
}
return place;
}
@Override
@RolesAllowed(MapPermission.S_MANAGE_MAPS)
public List<GroupMembership> matchGroupMembershipsByInviteToken(String token) {
List<GroupMembership> gms = gmemfacade.matchByToken(token);
return gms;
}
@Override
public GroupMembership findGroupMembershipsByToken(String token) {
return gmemfacade.findByToken(token);
}
private byte[] generatePlacesPdf(float width, float height, double font1, double font2, List<Place> places) throws Exception {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
......
......@@ -65,6 +65,22 @@ public class GroupMembershipFacade extends IntegerPkGenericFacade<GroupMembershi
// q.setParameter("token", token);
return getSingleNullableResult(getEm().createQuery(cq));
}
public List<GroupMembership> matchByToken(String token) {
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<GroupMembership> cq = cb.createQuery(GroupMembership.class);
Root<GroupMembership> root = cq.from(GroupMembership.class);
cq.where(cb.like(root.get(GroupMembership_.inviteToken), "%"+token+"%"),
cb.equal(root.get(GroupMembership_.placeGroup).get(PlaceGroup_.event), eventbean.getCurrentEvent())
);
// TypedQuery<GroupMembership> q =
// em.createQuery("Select gm from GroupMembership gm where gm.inviteToken = :token ",
// GroupMembership.class);
// q.setParameter("token", token);
return getEm().createQuery(cq).getResultList();
}
public List<GroupMembership> findMemberOrCreator(EventUser user) {
CriteriaBuilder cb = getEm().getCriteriaBuilder();
......
......@@ -6,12 +6,14 @@
package fi.codecrew.moya.beans;
import java.math.BigDecimal;
import java.util.List;
import javax.ejb.Local;
import fi.codecrew.moya.exceptions.BortalCatchableException;
import fi.codecrew.moya.model.EventMap;
import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.GroupMembership;
import fi.codecrew.moya.model.Place;
import fi.codecrew.moya.model.PlaceGroup;
......@@ -63,4 +65,8 @@ public interface PlaceBeanLocal {
byte[] generatePlacesPdf(float width, float height, double font1, double font2);
// public byte[] generatePlacesPdf(double width, double height, double font1, double font2);
List<GroupMembership> matchGroupMembershipsByInviteToken(String token);
GroupMembership findGroupMembershipsByToken(String token);
}
......@@ -449,5 +449,11 @@ public class EventUser extends GenericEntity {
return ret;
}
public String getShortUserDescriptor() {
StringBuilder sb = new StringBuilder();
sb.append(getNick()).append(" // ").append(getWholeName()).append(" // ").append(getEmail());
return sb.toString();
}
}
......@@ -13,8 +13,9 @@
<ui:define name="content">
<h:outputScript library="primefaces" name="jquery/jquery.js" target="head" />
<h:form>
<p:poll interval="1" listener="#{incomingView.polledRead}" />
<p:poll interval="1" listener="#{incomingView.polledRead}" />
</h:form>
<h1>#{i18n['incomingflow.userdetails']}</h1>
<h:panelGrid columns="3">
......@@ -41,6 +42,22 @@
</h:panelGrid>
<h1>#{i18n['incomingflow.search']}</h1>
<h:form>
<h:panelGrid columns="2">
<h:outputText value="#{i18n['incomingflow.barcode']}" />
<h:outputText value="#{i18n['incomingflow.multisearch']}" />
<p:autoComplete id="acs" value="#{incomingView.searchBarcode}" completeMethod="#{incomingView.matchBarcode}">
<p:ajax event="itemSelect" listener="#{incomingView.changeUser}" />
</p:autoComplete>
<p:autoComplete id="acsb" value="#{incomingView.searchMulti}" completeMethod="#{incomingView.matchMulti}" converter="#{eventUserConverter}" var="usrx" itemLabel="#{usrx.shortUserDescriptor}" itemValue="#{usrx}">
<p:ajax event="itemSelect" listener="#{incomingView.changeUser}" />
</p:autoComplete>
</h:panelGrid>
</h:form>
</ui:define>
<ui:define name="sidebar">
......
......@@ -399,6 +399,11 @@ imagefile.file = Imagefile
importuser.file = File
importuser.template = Template
incomingflow.barcode = Barcode
incomingflow.multisearch = Multisearch
incomingflow.search = Search
incomingflow.userdetails = User details
infoview.back = Back
infoview.computerplace = Computer places
infoview.shop = Shop
......
......@@ -408,6 +408,11 @@ imagefile.file = Kuvatiedosto
importuser.file = Tiedosto
importuser.template = Malli
incomingflow.barcode = Viivakoodi
incomingflow.multisearch = Monihaku
incomingflow.search = Etsi
incomingflow.userdetails = K\u00E4ytt\u00E4j\u00E4n tiedot
index.title = Etusivu
infoview.back = Takaisin
......
package fi.codecrew.moya.web.flow;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.EJB;
import javax.enterprise.context.ConversationScoped;
import javax.inject.Inject;
import javax.inject.Named;
import org.primefaces.event.SelectEvent;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.codecrew.moya.beans.BarcodeBeanLocal;
import fi.codecrew.moya.beans.CardTemplateBeanLocal;
import fi.codecrew.moya.beans.PermissionBeanLocal;
import fi.codecrew.moya.beans.PlaceBeanLocal;
import fi.codecrew.moya.beans.ReaderBeanLocal;
import fi.codecrew.moya.beans.UserBeanLocal;
import fi.codecrew.moya.enums.CardState;
import fi.codecrew.moya.enums.apps.UserPermission;
import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.GroupMembership;
import fi.codecrew.moya.model.PrintedCard;
import fi.codecrew.moya.util.UserSearchQuery;
import fi.codecrew.moya.utilities.SearchResult;
import fi.codecrew.moya.web.annotations.SelectedUser;
import fi.codecrew.moya.web.cdiview.GenericCDIView;
import fi.codecrew.moya.web.cdiview.reader.ReaderNameContainer;
......@@ -42,16 +52,67 @@ public class IncomingView extends GenericCDIView {
private ReaderNameContainer namecontainer;
@EJB
private BarcodeBeanLocal barcodeBean;
@EJB
private CardTemplateBeanLocal cardBean;
@EJB
private PermissionBeanLocal permBean;
@EJB
private PlaceBeanLocal placeBean;
@EJB
private UserBeanLocal userbean;
private String searchBarcode = "";
private EventUser searchMulti = null;
public void initView() {
super.beginConversation();
}
public String getSearchBarcode() {
return searchBarcode;
}
public void setSearchBarcode(String searchBarcode) {
this.searchBarcode = searchBarcode;
}
public List<String> matchBarcode(String matchWhat) {
List<GroupMembership> gms = placeBean.matchGroupMembershipsByInviteToken(matchWhat);
ArrayList<String> arl = new ArrayList<>();
for(GroupMembership gm : gms) {
arl.add(gm.getInviteToken());
}
return arl;
}
public List<EventUser> matchMulti(String what) {
UserSearchQuery usq = new UserSearchQuery();
usq.setSearch(what);
SearchResult<EventUser> sr = userbean.getThisEventsUsers(usq);
return sr.getResults();
}
public void changeUser(SelectEvent event) {
if(!searchBarcode.equals("")) {
// TODO: if user barcode is place code thingy, do this, otherwise do other..
GroupMembership gm = placeBean.findGroupMembershipsByToken(this.searchBarcode);
if(gm != null) {
super.navihandler.redirectNavigation("printCard.jsf?userid="+gm.getUser().getUser().getId());
}
} else if(searchMulti != null) {
super.navihandler.redirectNavigation("printCard.jsf?userid="+searchMulti.getUser().getId());
searchMulti = null;
}
}
private boolean initialized = false;
......@@ -131,6 +192,14 @@ public class IncomingView extends GenericCDIView {
return null;
}
public EventUser getSearchMulti() {
return searchMulti;
}
public void setSearchMulti(EventUser searchMulti) {
this.searchMulti = searchMulti;
}
}
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!