Commit c00a7b31 by Tuomas Riihimäki

Merge branch 'barcodefix_for_incomingviews' into 'master'

Barcodefix for incomingviews

Viivakoodeilua ja sisääntuloa

See merge request !215
2 parents 893d0fdc 1cc321e8
Showing with 345 additions and 118 deletions
...@@ -58,8 +58,29 @@ public interface ReaderBeanLocal { ...@@ -58,8 +58,29 @@ public interface ReaderBeanLocal {
List<ReaderEvent> getLastReaderEvents(); List<ReaderEvent> getLastReaderEvents();
/**
* check and brogress barcode that origins from browser
*
* @param code
* @return
*/
ReaderEvent checkCode(String code);
/**
* Check and brogress barcode from some external reader which is only named
* @param readerIdent
* @param code
* @return
*/
ReaderEvent checkCode(String readerIdent, String code); ReaderEvent checkCode(String readerIdent, String code);
/**
* Check and progress barcode from some specific reader
*
* @param reader
* @param code
* @return
*/
ReaderEvent checkCode(Reader reader, String code); ReaderEvent checkCode(Reader reader, String code);
List<ReaderEvent> getReaderEvents(Integer readerId, Integer count); List<ReaderEvent> getReaderEvents(Integer readerId, Integer count);
......
...@@ -327,6 +327,15 @@ public class BarcodeBean implements BarcodeBeanLocal { ...@@ -327,6 +327,15 @@ public class BarcodeBean implements BarcodeBeanLocal {
return user; return user;
} }
// try if it is our Eticket -code
EventUser user = getUserFromTextCode(barcode);
logger.info("Found maybe some nice user {}", user);
if(user != null)
return user;
} catch (NumberFormatException x) { } catch (NumberFormatException x) {
} }
......
...@@ -80,6 +80,12 @@ public class ReaderBean implements ReaderBeanLocal { ...@@ -80,6 +80,12 @@ public class ReaderBean implements ReaderBeanLocal {
private static final Logger logger = LoggerFactory.getLogger(ReaderBean.class); private static final Logger logger = LoggerFactory.getLogger(ReaderBean.class);
@Override
public ReaderEvent checkCode(String code) {
return checkCode(ReaderType.BARCODE.toString()+":handheld_reader_via_browser", code);
}
@Override @Override
public ReaderEvent checkCode(String readerIdent, String code) { public ReaderEvent checkCode(String readerIdent, String code) {
Reader reader = readerfacade.findOrCreateByIdent(readerIdent); Reader reader = readerfacade.findOrCreateByIdent(readerIdent);
......
...@@ -28,6 +28,7 @@ import javax.persistence.criteria.CriteriaBuilder; ...@@ -28,6 +28,7 @@ import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root; import javax.persistence.criteria.Root;
import fi.codecrew.moya.model.ReaderType;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -77,8 +78,19 @@ public class ReaderFacade extends IntegerPkGenericFacade<Reader> { ...@@ -77,8 +78,19 @@ public class ReaderFacade extends IntegerPkGenericFacade<Reader> {
private static synchronized Reader createIdent(ReaderFacade rf, LanEvent ev, String ident) { private static synchronized Reader createIdent(ReaderFacade rf, LanEvent ev, String ident) {
Reader ret = rf.findByIdent(ev, ident); Reader ret = rf.findByIdent(ev, ident);
if (ret == null) { if (ret == null) {
ret = new Reader(ev, ident); ret = new Reader(ev, ident);
ret.setDescription("Automagically created"); ret.setDescription("Automagically created");
// if there is doubledot (and text before it), check if it is reader type
if(ident.indexOf(':') > 0) {
String typeString = ident.substring(0, ident.indexOf(':'));
try {
ret.setType(ReaderType.valueOf(typeString));
} catch (IllegalArgumentException x) {}
}
rf.create(ret); rf.create(ret);
logger.info("Created new reader for ident {} reader {}", ident, ev); logger.info("Created new reader for ident {} reader {}", ident, ev);
} }
......
...@@ -68,7 +68,7 @@ public class Reader extends GenericEntity { ...@@ -68,7 +68,7 @@ public class Reader extends GenericEntity {
@Column(nullable = false, name = "type") @Column(nullable = false, name = "type")
@Enumerated(EnumType.STRING) @Enumerated(EnumType.STRING)
private ReaderType type = ReaderType.RFID; private ReaderType type = ReaderType.BARCODE;
public static final String EVENT_ID_COLUMN = "event_id"; public static final String EVENT_ID_COLUMN = "event_id";
@ManyToOne() @ManyToOne()
......
/*
* Copyright Codecrew Ry
*
* All rights reserved.
*
* This license applies to any software containing a notice placed by the
* copyright holder. Such software is herein referred to as the Software.
* This license covers modification, distribution and use of the Software.
*
* Any distribution and use in source and binary forms, with or without
* modification is not permitted without explicit written permission from the
* copyright owner.
*
* A non-exclusive royalty-free right is granted to the copyright owner of the
* Software to use, modify and distribute all modifications to the Software in
* future versions of the Software.
*
*/
package fi.codecrew.moya.utilities.jsf;
import fi.codecrew.moya.utilities.jpa.ModelInterface;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
/**
* Use this converter if you want to do some database find -magic via string
* @param <T>
*/
public abstract class GenericEntityFinderConverter<T extends ModelInterface> implements Converter {
protected abstract T find(Integer id);
protected abstract T find(String searchString);
public GenericEntityFinderConverter() {
super();
}
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
T ret = null;
Integer id = null;
if (value != null) {
try {
id = Integer.parseInt(value);
if (id != null && id > 0) {
ret = find(id);
}
} catch (NumberFormatException x) {
// it's not number, it's normal search stuff
ret = find(value);
}
}
return ret;
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
String ret = "0";
if (value != null && value instanceof ModelInterface) {
ModelInterface entity = (ModelInterface) value;
if (entity.getId() != null) {
ret = entity.getId().toString();
}
}
return ret;
}
}
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
<f:metadata> <f:metadata>
<f:viewParam name="userid" value="#{userView.userid}" /> <f:viewParam name="userid" value="#{userView.userid}" />
<f:event type="preRenderView" listener="#{cardlessIncomingView.initView}" />
</f:metadata> </f:metadata>
<ui:define name="content"> <ui:define name="content">
...@@ -16,12 +17,7 @@ ...@@ -16,12 +17,7 @@
<reader:backendReader selectvalue="#{i18n['barcodeReader.readBarcode']}" selectaction="#{cardlessIncomingView.polledRead}" /> <reader:backendReader selectvalue="#{i18n['barcodeReader.readBarcode']}" selectaction="#{cardlessIncomingView.polledRead}" />
<br /><br /> <br /><br />
<h:form> <infoview:usermultisearch />
<p:autoComplete styleClass="usermultisearch" id="acsb" value="#{infoView.multiSearchUser}" completeMethod="#{infoView.matchMulti}" converter="#{eventUserConverter}" var="usrx" itemLabel="#{usrx.shortUserDescriptor}" itemValue="#{usrx}">
<p:ajax event="itemSelect" listener="#{cardlessIncomingView.changeUser}" />
</p:autoComplete>
<p:watermark for="acsb" value="#{i18n['infoview.multisearch']}" />
</h:form>
<br /> <br />
<h1> <h1>
......
...@@ -3,10 +3,15 @@ ...@@ -3,10 +3,15 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:foodwave="http://java.sun.com/jsf/composite/cditools/foodwave" xmlns:products="http://java.sun.com/jsf/composite/cditools/products" xmlns:users="http://java.sun.com/jsf/composite/cditools/user" <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:foodwave="http://java.sun.com/jsf/composite/cditools/foodwave" xmlns:products="http://java.sun.com/jsf/composite/cditools/products" xmlns:users="http://java.sun.com/jsf/composite/cditools/user"
xmlns:reader="http://java.sun.com/jsf/composite/cditools/reader" xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:reader="http://java.sun.com/jsf/composite/cditools/reader" xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:p="http://primefaces.org/ui"> xmlns:p="http://primefaces.org/ui"
xmlns:infoview="http://java.sun.com/jsf/composite/cditools/infoview"
>
> >
<h:body> <h:body>
<ui:composition template="/resources/templates/#{sessionHandler.infoscreen}/template.xhtml"> <ui:composition template="/resources/templates/#{sessionHandler.infoscreen}/template.xhtml">
<ui:param name="ignorenavigationleft" value="true" />
<f:metadata> <f:metadata>
<f:viewParam name="foodwaveid" value="#{foodWaveFoodView.foodwaveid}" /> <f:viewParam name="foodwaveid" value="#{foodWaveFoodView.foodwaveid}" />
<f:viewParam name="userid" value="#{flowFoodwaveView.userId}" /> <f:viewParam name="userid" value="#{flowFoodwaveView.userId}" />
...@@ -18,11 +23,8 @@ ...@@ -18,11 +23,8 @@
<ui:define name="content"> <ui:define name="content">
<reader:backendReader selectvalue="#{i18n['barcodeReader.readBarcode']}" selectaction="#{flowFoodwaveView.polledRead}" /> <reader:backendReader selectvalue="#{i18n['barcodeReader.readBarcode']}" selectaction="#{flowFoodwaveView.polledRead}" />
<h:form>
<p:autoComplete id="acsb" value="#{infoView.multiSearchUser}" completeMethod="#{infoView.matchMulti}" converter="#{eventUserConverter}" var="usrx" itemLabel="#{usrx.shortUserDescriptor}" itemValue="#{usrx}"> <infoview:usermultisearch />
<p:ajax event="itemSelect" listener="#{flowFoodwaveView.changeUser}" />
</p:autoComplete>
</h:form>
<br /><br /> <br /><br />
<h1>Shop to user: #{userView.selectedUser.user.nick}</h1> <h1>Shop to user: #{userView.selectedUser.user.nick}</h1>
......
...@@ -9,10 +9,13 @@ ...@@ -9,10 +9,13 @@
xmlns:users="http://java.sun.com/jsf/composite/cditools/user" xmlns:users="http://java.sun.com/jsf/composite/cditools/user"
xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:reader="http://java.sun.com/jsf/composite/cditools/reader" xmlns:reader="http://java.sun.com/jsf/composite/cditools/reader"
xmlns:infoview="http://java.sun.com/jsf/composite/cditools/infoview"
xmlns:p="http://primefaces.org/ui"> xmlns:p="http://primefaces.org/ui">
<h:body> <h:body>
<ui:composition <ui:composition
template="/resources/templates/#{sessionHandler.infoscreen}/template.xhtml"> template="/resources/templates/#{sessionHandler.infoscreen}/template.xhtml">
<ui:param name="ignorenavigationleft" value="true" />
<f:metadata> <f:metadata>
<f:viewParam name="userid" value="#{flowFoodwaveView.userId}" /> <f:viewParam name="userid" value="#{flowFoodwaveView.userId}" />
<f:viewParam name="templateid" value="#{foodWaveView.templateId}" /> <f:viewParam name="templateid" value="#{foodWaveView.templateId}" />
...@@ -22,11 +25,8 @@ ...@@ -22,11 +25,8 @@
<ui:define name="content"> <ui:define name="content">
<reader:backendReader selectvalue="#{i18n['barcodeReader.readBarcode']}" selectaction="#{flowFoodwaveView.polledRead}" /> <reader:backendReader selectvalue="#{i18n['barcodeReader.readBarcode']}" selectaction="#{flowFoodwaveView.polledRead}" />
<h:form>
<p:autoComplete id="acsb" value="#{infoView.multiSearchUser}" completeMethod="#{infoView.matchMulti}" converter="#{eventUserConverter}" var="usrx" itemLabel="#{usrx.shortUserDescriptor}" itemValue="#{usrx}"> <infoview:usermultisearch />
<p:ajax event="itemSelect" listener="#{flowFoodwaveView.changeUser}" />
</p:autoComplete>
</h:form>
<br /><br /> <br /><br />
<h1>Shop to user: #{userView.selectedUser.user.nick}</h1> <h1>Shop to user: #{userView.selectedUser.user.nick}</h1>
<br /><br /> <br /><br />
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
xmlns:tools="http://java.sun.com/jsf/composite/cditools" xmlns:user="http://java.sun.com/jsf/composite/cditools/user" xmlns:infoview="http://java.sun.com/jsf/composite/cditools/infoview"> xmlns:tools="http://java.sun.com/jsf/composite/cditools" xmlns:user="http://java.sun.com/jsf/composite/cditools/user" xmlns:infoview="http://java.sun.com/jsf/composite/cditools/infoview">
<h:body> <h:body>
<ui:composition template="/resources/templates/#{sessionHandler.infoscreen}/template.xhtml"> <ui:composition template="/resources/templates/#{sessionHandler.infoscreen}/template.xhtml">
<ui:param name="ignorenavigationleft" value="true" />
<f:metadata> <f:metadata>
<f:viewParam name="userid" value="#{userView.userid}" /> <f:viewParam name="userid" value="#{userView.userid}" />
<f:event type="preRenderView" listener="#{incomingView.initPrintCardView}" /> <f:event type="preRenderView" listener="#{incomingView.initPrintCardView}" />
...@@ -14,12 +14,8 @@ ...@@ -14,12 +14,8 @@
<h:outputScript library="primefaces" name="jquery/jquery.js" target="head" /> <h:outputScript library="primefaces" name="jquery/jquery.js" target="head" />
<reader:backendReader selectvalue="#{i18n['barcodeReader.readBarcode']}" selectaction="#{incomingView.polledRead}" /> <reader:backendReader selectvalue="#{i18n['barcodeReader.readBarcode']}" selectaction="#{incomingView.polledRead}" />
<h:form> <infoview:usermultisearch />
<p:autoComplete id="acsb" value="#{infoView.multiSearchUser}" completeMethod="#{infoView.matchMulti}" converter="#{eventUserConverter}" var="usrx" itemLabel="#{usrx.shortUserDescriptor}" itemValue="#{usrx}">
<p:ajax event="itemSelect" listener="#{incomingView.changeUser}" />
</p:autoComplete>
</h:form>
<h:form id="attachform"> <h:form id="attachform">
...@@ -314,8 +310,8 @@ ...@@ -314,8 +310,8 @@
<h:outputText value="#{member.placeGroup.creator.firstnames} #{member.placeGroup.creator.lastname} (#{member.placeGroup.creator.nick})" /> <h:outputText value="#{member.placeGroup.creator.firstnames} #{member.placeGroup.creator.lastname} (#{member.placeGroup.creator.nick})" />
</p:column> </p:column>
<p:column> <p:column>
<h:commandButton rendered="#{empty member.enteredEvent}" action="#{incomingView.givePlace}" value="#{i18n['incomingflow.giveplace']}" /> <p:commandButton update=":placelistform" rendered="#{empty member.enteredEvent}" actionListener="#{incomingView.givePlace}" value="#{i18n['incomingflow.giveplace']}" />
<h:commandButton rendered="#{!empty member.enteredEvent}" action="#{incomingView.ungivePlace}" value="#{i18n['incomingflow.ungiveplace']}" /> <p:commandButton update=":placelistform" rendered="#{!empty member.enteredEvent}" actionListener="#{incomingView.ungivePlace}" value="#{i18n['incomingflow.ungiveplace']}" />
</p:column> </p:column>
</p:dataTable> </p:dataTable>
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
<h:body> <h:body>
<ui:composition <ui:composition
template="/resources/templates/#{sessionHandler.infoscreen}/template.xhtml"> template="/resources/templates/#{sessionHandler.infoscreen}/template.xhtml">
<ui:param name="ignorenavigationleft" value="true" />
<f:metadata> <f:metadata>
<f:event type="preRenderView" listener="#{incomingView.initView}" /> <f:event type="preRenderView" listener="#{incomingView.initView}" />
</f:metadata> </f:metadata>
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
> >
<h:body> <h:body>
<ui:composition template="/resources/templates/#{sessionHandler.infoscreen}/template.xhtml"> <ui:composition template="/resources/templates/#{sessionHandler.infoscreen}/template.xhtml">
<ui:param name="ignorenavigationleft" value="true" />
<f:metadata> <f:metadata>
<f:viewParam name="userid" value="#{flowShopView.userId}" /> <f:viewParam name="userid" value="#{flowShopView.userId}" />
...@@ -16,11 +17,8 @@ ...@@ -16,11 +17,8 @@
<ui:define name="content"> <ui:define name="content">
<reader:backendReader selectvalue="#{i18n['barcodeReader.readBarcode']}" selectaction="#{flowShopView.polledRead}" /> <reader:backendReader selectvalue="#{i18n['barcodeReader.readBarcode']}" selectaction="#{flowShopView.polledRead}" />
<h:form>
<p:autoComplete id="acsb" value="#{infoView.multiSearchUser}" completeMethod="#{infoView.matchMulti}" converter="#{eventUserConverter}" var="usrx" itemLabel="#{usrx.shortUserDescriptor}" itemValue="#{usrx}"> <infoview:usermultisearch />
<p:ajax event="itemSelect" listener="#{flowShopView.changeUser}" />
</p:autoComplete>
</h:form>
<h:form rendered="#{!userView.user.anonymous}"> <h:form rendered="#{!userView.user.anonymous}">
<h1>Shop to user: #{userView.user.user.nick}</h1> <h1>Shop to user: #{userView.user.user.nick}</h1>
......
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:composite="http://java.sun.com/jsf/composite"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:p="http://primefaces.org/ui"
xmlns:reader="http://java.sun.com/jsf/composite/cditools/reader"
>
<composite:interface>
</composite:interface>
<composite:implementation>
<h:form>
<h:outputScript>
$(document).ready(function() {
$(".usermultisearch .ui-autocomplete-input").focus();
});
</h:outputScript>
<p:autoComplete immediate="true" widgetVar="usermultisearch" styleClass="usermultisearch" id="acsb" value="#{infoView.multiSearchUser}" completeMethod="#{infoView.matchMulti}" converter="#{eventUserCodeFinderConverter}" var="usrx" itemLabel="#{usrx.shortUserDescriptor}" itemValue="#{usrx}">
<p:ajax event="itemSelect" listener="#{cardlessIncomingView.changeUser}" />
</p:autoComplete>
<p:watermark for="acsb" value="#{i18n['infoview.multisearch']}" />
</h:form>
</composite:implementation>
</html>
\ No newline at end of file
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
<reader:backendReader selectvalue="#{i18n['barcodeReader.readBarcode']}" selectaction="#{incomingView.selectUser}" /> <reader:backendReader selectvalue="#{i18n['barcodeReader.readBarcode']}" selectaction="#{incomingView.selectUser}" />
</composite:implementation> </composite:implementation>
</html> </html>
\ No newline at end of file
...@@ -48,6 +48,8 @@ xmlns:reader="http://java.sun.com/jsf/composite/cditools/reader" ...@@ -48,6 +48,8 @@ xmlns:reader="http://java.sun.com/jsf/composite/cditools/reader"
--> -->
<p:outputLabel rendered="#{empty readerNameContainer.readerId}" value="#{i18n['reader.noReader']}" />
<p:outputLabel rendered="#{!empty readerNameContainer.readerId}" value="#{i18n['reader.autopoll']}" /> <p:outputLabel rendered="#{!empty readerNameContainer.readerId}" value="#{i18n['reader.autopoll']}" />
<p:inputSwitch rendered="#{!empty readerNameContainer.readerId}" offLabel="#{i18n['off']}" onLabel="#{i18n['on']}" value="#{readerView.pollingMode}" immediate="true" style="width: 81px;"> <p:inputSwitch rendered="#{!empty readerNameContainer.readerId}" offLabel="#{i18n['off']}" onLabel="#{i18n['on']}" value="#{readerView.pollingMode}" immediate="true" style="width: 81px;">
......
...@@ -58,6 +58,22 @@ public class NavigationHandler implements Serializable { ...@@ -58,6 +58,22 @@ public class NavigationHandler implements Serializable {
this.destNavi = pageid; this.destNavi = pageid;
} }
/**
* Reloads current page with custom parameters, parameters must include leading '?'.
*
* This should be used if you want to ie. load current page with "userid=234" -parameter etc.
*
* @param parameter
*/
public void reloadWithParameter(String parameter) {
FacesContext fcont = FacesContext.getCurrentInstance();
HttpServletRequest req = (HttpServletRequest) fcont.getExternalContext().getRequest();
String redirectPath = req.getRequestURI() + parameter;
redirectNavigation(redirectPath);
}
public void redirectToSaved() { public void redirectToSaved() {
if (destNavi == null || destNavi.isEmpty()) { if (destNavi == null || destNavi.isEmpty()) {
HttpServletRequest req = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest(); HttpServletRequest req = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
......
/*
* Copyright Codecrew Ry
*
* All rights reserved.
*
* This license applies to any software containing a notice placed by the
* copyright holder. Such software is herein referred to as the Software.
* This license covers modification, distribution and use of the Software.
*
* Any distribution and use in source and binary forms, with or without
* modification is not permitted without explicit written permission from the
* copyright owner.
*
* A non-exclusive royalty-free right is granted to the copyright owner of the
* Software to use, modify and distribute all modifications to the Software in
* future versions of the Software.
*
*/
package fi.codecrew.moya.web.converter;
import fi.codecrew.moya.beans.ReaderBeanLocal;
import fi.codecrew.moya.beans.UserBeanLocal;
import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.ReaderEvent;
import fi.codecrew.moya.utilities.jsf.GenericEntityFinderConverter;
import javax.ejb.EJB;
import javax.enterprise.context.RequestScoped;
import javax.inject.Named;
@Named
@RequestScoped
public class EventUserCodeFinderConverter extends GenericEntityFinderConverter<EventUser> {
@EJB
private UserBeanLocal userbean;
@EJB
private ReaderBeanLocal readerBean;
@Override
protected EventUser find(Integer id) {
return userbean.findByEventUserId(id);
}
@Override
protected EventUser find(String searchString) {
ReaderEvent event = readerBean.checkCode(searchString);
if(event == null)
return null;
return event.getUser();
}
}
...@@ -22,8 +22,11 @@ import javax.ejb.EJB; ...@@ -22,8 +22,11 @@ import javax.ejb.EJB;
import javax.enterprise.context.RequestScoped; import javax.enterprise.context.RequestScoped;
import javax.inject.Named; import javax.inject.Named;
import fi.codecrew.moya.beans.ReaderBeanLocal;
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.ReaderEvent;
import fi.codecrew.moya.utilities.jsf.GenericEntityFinderConverter;
import fi.codecrew.moya.utilities.jsf.GenericIntegerEntityConverter; import fi.codecrew.moya.utilities.jsf.GenericIntegerEntityConverter;
@Named @Named
...@@ -33,6 +36,9 @@ public class EventUserConverter extends GenericIntegerEntityConverter<EventUser> ...@@ -33,6 +36,9 @@ public class EventUserConverter extends GenericIntegerEntityConverter<EventUser>
@EJB @EJB
private UserBeanLocal userbean; private UserBeanLocal userbean;
@EJB
private ReaderBeanLocal readerBean;
@Override @Override
protected EventUser find(Integer id) { protected EventUser find(Integer id) {
return userbean.findByEventUserId(id); return userbean.findByEventUserId(id);
......
...@@ -73,6 +73,13 @@ public class CardlessIncomingView extends GenericCDIView { ...@@ -73,6 +73,13 @@ public class CardlessIncomingView extends GenericCDIView {
private ListDataModel<GroupMembership> memberlist = null; private ListDataModel<GroupMembership> memberlist = null;
public void initView() {
super.beginConversation();
}
public void polledRead() { public void polledRead() {
ReaderEvent event = readerView.getReaderEvent(); ReaderEvent event = readerView.getReaderEvent();
...@@ -155,12 +162,16 @@ public class CardlessIncomingView extends GenericCDIView { ...@@ -155,12 +162,16 @@ public class CardlessIncomingView extends GenericCDIView {
public void giveEverything() { public void giveEverything() {
List<GroupMembership> memberships = placegroupBean.getMembershipsAndCreations(userview.getSelectedUser()); List<GroupMembership> memberships = placegroupBean.getMembershipsAndCreations(userview.getSelectedUser());
int count = 0;
for(GroupMembership gm : memberships) { for(GroupMembership gm : memberships) {
if(gm.getEnteredEvent() == null) { if(gm.getEnteredEvent() == null) {
placegroupBean.markGrouMembershipEntered(gm); placegroupBean.markGrouMembershipEntered(gm);
count++;
} }
} }
addFaceMessage("incomingflow.allGiven",count);
memberlist = null; memberlist = null;
} }
......
...@@ -102,17 +102,7 @@ public class FlowFoodwaveView extends GenericCDIView { ...@@ -102,17 +102,7 @@ public class FlowFoodwaveView extends GenericCDIView {
this.userId = userId; this.userId = userId;
} }
public void changeUser(SelectEvent event) {
if (infoView.getMultiSearchUser() != null) {
flowUserContainer.setUserId(infoView.getMultiSearchUser().getUser().getId());
// TODO: kauneista nää
super.navihandler.redirectNavigation("/MoyaWeb/info/foodwave/foodwaveshop.jsf?userid=" + infoView.getMultiSearchUser().getUser().getId());
}
}
......
...@@ -114,36 +114,13 @@ public class IncomingView extends GenericCDIView { ...@@ -114,36 +114,13 @@ public class IncomingView extends GenericCDIView {
private boolean autoGivePlaces = true; private boolean autoGivePlaces = true;
/*
* 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 void changeUser(SelectEvent event) {
if (infoView.getMultiSearchUser() != null) {
super.navihandler.redirectNavigation("incoming.jsf?userid="
+ infoView.getMultiSearchUser().getUser().getId());
infoView.setMultiSearchUser(null);
}
}
private boolean initialized = false; private boolean initialized = false;
public void initPrintCardView() { public void initPrintCardView() {
memberlist = null; memberlist = null;
if (!permbean.hasPermission(UserPermission.MODIFY) if (!permbean.hasPermission(UserPermission.MODIFY)) {
|| namecontainer.getReaderId() == null
|| namecontainer.getReaderId() <= 0) {
super.navihandler.redirectNavigation("index.jsf"); super.navihandler.redirectNavigation("index.jsf");
} }
......
...@@ -22,8 +22,10 @@ import java.util.List; ...@@ -22,8 +22,10 @@ import java.util.List;
import javax.ejb.EJB; import javax.ejb.EJB;
import javax.enterprise.context.ConversationScoped; import javax.enterprise.context.ConversationScoped;
import javax.faces.context.FacesContext;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Named; import javax.inject.Named;
import javax.servlet.http.HttpServletRequest;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -42,65 +44,74 @@ import fi.codecrew.moya.web.cdiview.user.UserView; ...@@ -42,65 +44,74 @@ import fi.codecrew.moya.web.cdiview.user.UserView;
public class InfoView extends GenericCDIView { public class InfoView extends GenericCDIView {
private static final long serialVersionUID = 802344850073689859L; private static final long serialVersionUID = 802344850073689859L;
private EventUser multiSearchUser = null; private EventUser multiSearchUser = null;
private static final Logger logger = LoggerFactory.getLogger(InfoView.class); private static final Logger logger = LoggerFactory.getLogger(InfoView.class);
@Inject @Inject
private UserView userview; private UserView userview;
@Inject @Inject
private ReaderView readerView; private ReaderView readerView;
@EJB
private UserBeanLocal userbean; @EJB
private UserBeanLocal userbean;
public void initView() {
super.beginConversation(); private String currentPage;
}
public void initView() {
public String saveUser() { super.beginConversation();
logger.info("Saving user in incomingView"); }
userview.saveUser();
public String saveUser() {
logger.info("Saving user in incomingView");
userview.saveUser();
return null;
}
public String selectUser() {
ReaderEvent event = readerView.getReaderEvent();
if (event == null)
return null; return null;
}
public String selectUser() {
ReaderEvent event = readerView.getReaderEvent();
if(event == null)
return null;
EventUser user = event.getUser();
if(user == null) {
return null;
}
userview.setUser(user);
return "general";
}
public List<EventUser> matchMulti(String what) {
UserSearchQuery usq = new UserSearchQuery();
usq.setSearch(what);
SearchResult<EventUser> sr = userbean.getThisEventsUsers(usq); EventUser user = event.getUser();
return sr.getResults(); if (user == null) {
return null;
} }
public EventUser getMultiSearchUser() { userview.setUser(user);
return multiSearchUser;
} return "general";
}
public List<EventUser> matchMulti(String what) {
UserSearchQuery usq = new UserSearchQuery();
usq.setSearch(what);
public void setMultiSearchUser(EventUser multiSearchUser) { SearchResult<EventUser> sr = userbean.getThisEventsUsers(usq);
this.multiSearchUser = multiSearchUser;
return sr.getResults();
}
public EventUser getMultiSearchUser() {
return multiSearchUser;
}
public void setMultiSearchUser(EventUser multiSearchUser) {
this.multiSearchUser = multiSearchUser;
if (multiSearchUser != null) {
this.multiSearchUser = null;
super.navihandler.reloadWithParameter("?userid=" + multiSearchUser.getUser().getId());
} }
}
} }
...@@ -483,3 +483,6 @@ incomingFlow.count=M\u00E4\u00E4r\u00E4 ...@@ -483,3 +483,6 @@ incomingFlow.count=M\u00E4\u00E4r\u00E4
user.birthday= user.birthday=
user.confirmUserToEventAdding= user.confirmUserToEventAdding=
user.invalidLoginCredentials= user.invalidLoginCredentials=
barcodeReader.readBarcode=Lue viivakoodi
incomingflow.allGiven=Merkitty {0} lippu(a) annetuksi.
reader.noReader=Ei valittua lukijaa
...@@ -1699,3 +1699,5 @@ incomingFlow.leftCount=Ungiven ...@@ -1699,3 +1699,5 @@ incomingFlow.leftCount=Ungiven
incomingflow.markEverythingGiven=Give ewerything ungiven stuff incomingflow.markEverythingGiven=Give ewerything ungiven stuff
submenu.info.cardlessIncoming=Incoming submenu.info.cardlessIncoming=Incoming
incomingFlow.count=Count incomingFlow.count=Count
incomingflow.allGiven=Marked {0} tickets given.
reader.noReader=No selected reader
...@@ -1683,3 +1683,5 @@ user.unauthenticated= ...@@ -1683,3 +1683,5 @@ user.unauthenticated=
incomingflow.markEverythingGiven=Anna kaikki antamattomat tuotteet incomingflow.markEverythingGiven=Anna kaikki antamattomat tuotteet
submenu.info.cardlessIncoming=Sis\u00E4\u00E4ntulo submenu.info.cardlessIncoming=Sis\u00E4\u00E4ntulo
incomingFlow.count=M\u00E4\u00E4r\u00E4 incomingFlow.count=M\u00E4\u00E4r\u00E4
incomingflow.allGiven=Merkitty {0} lippu(a) annetuksi.
reader.noReader=Ei valittua lukijaa
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!