Commit fab92223 by Tuukka Kivilahti

reader stuff

1 parent 042f7861
......@@ -3,6 +3,8 @@
<name>MoyaAuthModule</name>
<comment></comment>
<projects>
<project>lib-AuthModule-depends</project>
<project>MoyaAuthModuleClient</project>
<project>MoyaBeansClient</project>
</projects>
<buildSpec>
......
......@@ -3,12 +3,16 @@ package fi.codecrew.moya.beans;
import java.io.IOException;
import java.io.InputStream;
import javax.ejb.EJB;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.sun.xml.bind.v2.model.core.ID;
import fi.codecrew.moya.facade.PrintedCardFacade;
import fi.codecrew.moya.model.PrintedCard;
import fi.codecrew.moya.utilities.BarcodeUtils;
......@@ -19,9 +23,12 @@ import fi.codecrew.moya.utilities.BarcodeUtils;
@LocalBean
public class BarcodeBean implements BarcodeBeanLocal {
private static final String PRINTED_CARD_PREFIX = "200";
private static final String PRINTED_CARD_PREFIX = "277";
private static final Logger logger = LoggerFactory.getLogger(BarcodeBean.class);
@EJB
PrintedCardFacade printedCardFacade;
/**
* Default constructor.
*/
......@@ -40,6 +47,26 @@ public class BarcodeBean implements BarcodeBeanLocal {
sb.append(idStr);
String barcode = sb.toString();
logger.debug("Geneating barcode for card {} : {}", printedCard, barcode);
return BarcodeUtils.getBarcodeEAN(barcode);
}
public PrintedCard getPrintedCard(String barcode) {
if(barcode == null || barcode.isEmpty())
return null;
// it's our special front barcode
try {
if (barcode.startsWith(PRINTED_CARD_PREFIX)) {
int id = Integer.parseInt(barcode.substring(3));
PrintedCard card = printedCardFacade.find(id);
if(card != null)
return card;
}
} catch (NumberFormatException x) {
}
return printedCardFacade.findByBarcode(barcode);
}
}
......@@ -39,6 +39,18 @@ public class PrintedCardFacade extends IntegerPkGenericFacade<PrintedCard> {
return getSingleNullableResult(getEm().createQuery(cq));
}
public PrintedCard findByBarcode(String barcode) {
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<PrintedCard> cq = cb.createQuery(PrintedCard.class);
Root<PrintedCard> root = cq.from(PrintedCard.class);
cq.where(cb.equal(root.get(PrintedCard_.barcode), barcode),
cb.equal(root.get(PrintedCard_.event), eventbean.getCurrentEvent()));
return getSingleNullableResult(getEm().createQuery(cq));
}
public List<PrintedCard> findAllEnabled(LanEvent currentEvent) {
......
package fi.codecrew.moya.beans;
import java.io.IOException;
import java.io.InputStream;
import javax.ejb.Local;
import fi.codecrew.moya.model.PrintedCard;
@Local
public interface BarcodeBeanLocal {
public PrintedCard getPrintedCard(String barcode) ;
public InputStream getCardBarcode(PrintedCard printedCard) throws IOException;
}
......@@ -3,9 +3,12 @@
<name>MoyaEar</name>
<comment></comment>
<projects>
<project>lib-AuthModule-depends</project>
<project>MoyaAuthModule</project>
<project>MoyaAuthModuleClient</project>
<project>MoyaBeans</project>
<project>MoyaBeansClient</project>
<project>MoyaCardPrinter</project>
<project>MoyaDatabase</project>
<project>MoyaTerminalWeb</project>
<project>MoyaUtilities</project>
......
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.launching.macosx.MacOSXType/Java SE 6 (MacOS X Default)">
<attributes>
<attribute name="owner.project.facets" value="java"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jst.server.core.container/com.sun.enterprise.jst.server.runtimeTarget/GlassFish 3.1.2">
<attributes>
<attribute name="owner.project.facets" value="jst.web"/>
......@@ -13,5 +8,6 @@
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/>
<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="output" path="build/classes"/>
</classpath>
......@@ -6,8 +6,8 @@
</session-config>
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<!-- <param-value>Development</param-value> -->
<param-value>Production</param-value>
<param-value>Development</param-value>
<!-- <param-value>Production</param-value> -->
</context-param>
<context-param>
<param-name>javax.faces.FACELETS_SKIP_COMMENTS</param-name>
......
......@@ -8,6 +8,7 @@
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:p="http://primefaces.org/ui"
xmlns:shop="http://java.sun.com/jsf/composite/cditools/shop"
xmlns:reader="http://java.sun.com/jsf/composite/cditools/reader"
xmlns:tools="http://java.sun.com/jsf/composite/cditools">
<h:body>
<ui:composition
......@@ -25,18 +26,17 @@
<br />
<br />
<shop:readeventtiles />
<reader:readeventtiles />
</ui:define>
<ui:define name="sidebar">
<shop:readerlisttiles />
<reader:readerlisttiles />
<br />
<h:form>
<h:inputText name="barcode" value="#{barcodeView.barcode}" />
<h:commandButton action="#{barcodeView.readBarcode}"
value="#{i18n['barcodeReader.readBarcode']}" />
<reader:barcode selectvalue="#{i18n['barcodeReader.readBarcode']}" selectaction="#{barcodeView.readBarcode}" />
</h:form>
</ui:define>
......
<?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:login="http://java.sun.com/jsf/composite/cditools/login"
xmlns:tools="http://java.sun.com/jsf/composite/cditools"
>
<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:login="http://java.sun.com/jsf/composite/cditools/login" xmlns:tools="http://java.sun.com/jsf/composite/cditools">
<composite:interface>
<composite:attribute name="selectvalue" required="false" />
<composite:attribute name="selectaction" method-signature="java.lang.String action()" required="false" />
</composite:interface>
<composite:implementation>
<h:form>
<h:outputLabel value="#{i18n['shop.barcode']}" />
<h:inputText id="barcode" value="#{readerView.barcode}" />
<h:commandButton action="#{cc.attrs.selectaction}" value="#{cc.attrs.selectvalue}" />
</h:form>
</composite:implementation>
</html>
\ No newline at end of file
......@@ -5,12 +5,25 @@
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:login="http://java.sun.com/jsf/composite/cditools/login"
xmlns:tools="http://java.sun.com/jsf/composite/cditools"
xmlns:reader="http://java.sun.com/jsf/composite/cditools/reader"
>
<composite:interface>
<composite:attribute name="selectvalue" required="false" />
<composite:attribute name="selectaction" method-signature="java.lang.String action()" required="false" />
<composite:attribute name="linkvalue" required="false" />
<composite:attribute name="linkoutcome" required="false" />
</composite:interface>
<composite:implementation>
todo: kato tapahtuman conffeista kumpi käytössä: <br />
<reader:barcode selectvalue="#{cc.attrs.selectvalue}" selectaction="#{cc.attrs.selectaction}" /> <br />
<reader:rfid selectvalue="#{cc.attrs.selectvalue}" selectaction="#{cc.attrs.selectaction}" linkvalue="#{cc.attrs.linkvalue}" linkoutcome="#{cc.attrs.linkoutcome}" /> <br />
</composite:implementation>
......
<?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:login="http://java.sun.com/jsf/composite/cditools/login"
xmlns:tools="http://java.sun.com/jsf/composite/cditools"
<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:login="http://java.sun.com/jsf/composite/cditools/login" xmlns:tools="http://java.sun.com/jsf/composite/cditools"
xmlns:reader="http://java.sun.com/jsf/composite/cditools/reader"
>
<composite:interface>
<composite:attribute name="selectvalue" required="false" />
<composite:attribute name="selectaction" method-signature="java.lang.String action()" required="false" />
<composite:attribute name="linkvalue" required="false" />
<composite:attribute name="linkoutcome" required="false" />
<composite:attribute name="showAssociateToUser" required="false" />
</composite:interface>
<composite:implementation>
<h:form rendered="#{empty readerNameContainer.readerId}">
<h:dataTable border="1" id="reader" value="#{readerListDataView.readers}" var="rr">
<h:column>
<f:facet name="header">
<h:outputText value="${i18n['reader.name']}" />
</f:facet>
<h:outputText value="#{rr}" />
</h:column>
<h:column>
<h:commandButton action="#{readerListDataView.selectReader}" value="#{i18n['reader.select']}" />
</h:column>
</h:dataTable>
</h:form>
<reader:readerevents rendered="#{!empty readerNameContainer.readerId}" showAssociateToUser="#{cc.attrs.showAssociateToUser}" selectvalue="#{cc.attrs.selectvalue}" selectaction="#{cc.attrs.selectaction}" linkvalue="#{cc.attrs.linkvalue}" linkoutcome="#{cc.attrs.linkoutcome}" />
</composite:implementation>
</html>
\ No newline at end of file
<?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:tools="http://java.sun.com/jsf/composite/tools" xmlns:p="http://primefaces.org/ui">
<composite:interface>
</composite:interface>
<composite:implementation>
<h:form>
<p:poll interval="3" />
<h:dataTable border="1" id="event" value="#{readerView.readerEvents}" var="event">
<h:column>
<f:facet name="header">
<h:outputText value="${i18n['readerevent.tagname']}" />
</f:facet>
<h:outputText rendered="#{!empty event.printedCard}" id="cardtag" value="#{event.printedCard.rfidUid}" />
<h:outputText rendered="#{empty event.printedCard}" id="newtag" value="#{event.value}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="${i18n['reader.user']}" />
</f:facet>
<h:outputText rendered="#{!empty event.printedCard}" value="#{event.printedCard.user.wholeName} (#{event.printedCard.user.nick})" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="${i18n['readerevent.seenSince']}" />
</f:facet>
<h:outputText value="#{event.seenSince}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="${i18n['gamepoints']}" />
</f:facet>
<h:outputText value="#{event.gamePoint}" />
</h:column>
<h:column>
<h:link rendered="#{!empty event.printedCard}" outcome="/shop/shopToUser" value="#{i18n['readerevent.shopToUser']}">
<f:param name="userid" value="#{event.printedCard.user.user.id}" />
</h:link>
<h:link rendered="#{empty event.printedCard}" outcome="/shop/assocToUser" value="#{i18n['readerevent.associateToUser']}">
<f:param name="eventid" value="#{event.id}" />
</h:link>
</h:column>
</h:dataTable>
</h:form>
</composite:implementation>
</html>
<?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:tools="http://java.sun.com/jsf/composite/tools">
<composite:interface>
</composite:interface>
<composite:implementation>
<h:dataTable id="reader" value="#{readerListDataView.readers}" var="rr">
<h:column>
<f:facet name="header">
<h:outputText value="${i18n['reader.name']}" />
</f:facet>
<h:outputText value="#{rr.identification}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="${i18n['reader.description']}" />
</f:facet>
<h:outputText value="#{rr.description}" />
</h:column>
<h:column>
<h:link outcome="/shop/showReaderEvents" value="#{i18n['reader.select']}">
<f:param value="#{rr.id}" name="readerId" />
</h:link>
</h:column>
<h:column>
<h:link outcome="/shop/editReader" value="#{i18n['reader.edit']}">
<f:param value="#{rr.id}" name="readerId" />
</h:link>
</h:column>
</h:dataTable>
</composite:implementation>
</html>
<?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:tools="http://java.sun.com/jsf/composite/tools"
xmlns:p="http://primefaces.org/ui">
<composite:interface>
</composite:interface>
<composite:implementation>
<h:form id="readerlist">
<h:dataTable id="reader" value="#{readerListDataView.readers}" var="rr">
<h:column>
<f:facet name="header">
<h:outputText value="${i18n['reader.name']}" />
</f:facet>
<h:outputText value="#{rr.identification}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="${i18n['reader.description']}" />
</f:facet>
<h:outputText value="#{rr.description}" />
</h:column>
<h:column>
<p:commandButton ajax="false" action="#{readerView.setReaderToId(rr.id)}" value="#{i18n['reader.select']}" />
</h:column>
</h:dataTable>
</h:form>
</composite:implementation>
</html>
<?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">
<composite:interface>
</composite:interface>
<composite:implementation>
<h:form>
<p:poll interval="3" />
<ui:repeat value="#{readerView.readerEvents}" var="event" >
<h:link styleClass="userimagetile" outcome="/admin/info/general"
rendered="#{!empty event.printedCard.user}">
<div>
<img
src="#{request.contextPath}/dydata/userimage/#{event.printedCard.user.currentImage.id}.img" />
<br />
<h:outputText styleClass="usertilenick"
value="#{event.printedCard.user.nick}" />
<br />
<h:outputText value="#{event.printedCard.user.wholeName}" />
<br />
<ui:repeat
value="#{readerView.getUserRoles(event.printedCard.user)}"
var="role">
<h:outputText value="#{role.name}" />
<br />
</ui:repeat>
</div>
<f:param name="userid" value="#{event.printedCard.user.user.id}" />
</h:link>
</ui:repeat>
</h:form>
</composite:implementation>
</html>
......@@ -4,7 +4,11 @@
<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:tools="http://java.sun.com/jsf/composite/tools" xmlns:p="http://primefaces.org/ui">
xmlns:tools="http://java.sun.com/jsf/composite/tools"
xmlns:reader="http://java.sun.com/jsf/composite/cditools/reader"
xmlns:p="http://primefaces.org/ui"
>
<composite:interface>
......@@ -36,11 +40,9 @@
<h:panelGroup>
<h:outputLabel value="#{i18n['shop.barcode']}" />
<h:inputText id="barcode" value="#{productShopView.barcode}" />
<h:commandButton action="#{productShopView.readBarcode}" value="#{i18n['shop.readBarcode']}">
<f:ajax render="@form" onevent="barcodeReadEvent" execute="@form" />
</h:commandButton>
<reader:barcode selectaction="#{productShopView.readBarcode}" selectvalue="#{i18n['shop.readBarcode']}" />
<br />
<p:dataTable id="prods" value="#{productShopView.boughtItems}" var="prods">
<p:column>
......
......@@ -2,7 +2,9 @@
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"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:shop="http://java.sun.com/jsf/composite/cditools/shop" xmlns:c="http://java.sun.com/jsp/jstl/core">
xmlns:shop="http://java.sun.com/jsf/composite/cditools/shop" xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:reader="http://java.sun.com/jsf/composite/cditools/reader"
>
<h:body>
<ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml">
<f:metadata>
......@@ -13,7 +15,7 @@
<ui:define name="content">
<shop:readerlist />
<reader:readerlist />
</ui:define>
</ui:composition>
</h:body>
......
......@@ -3,7 +3,9 @@
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"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:shop="http://java.sun.com/jsf/composite/cditools/shop" xmlns:c="http://java.sun.com/jsp/jstl/core">
xmlns:shop="http://java.sun.com/jsf/composite/cditools/shop" xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:reader="http://java.sun.com/jsf/composite/cditools/reader"
>
<h:body>
<ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml">
<f:metadata>
......@@ -12,8 +14,8 @@
</f:metadata>
<ui:define name="content">
<shop:readerevents rendered="#{!empty readerNameContainer.readerId}" />
<shop:readerlist rendered="#{empty readerNameContainer.readerId}" />
<reader:readerevents rendered="#{!empty readerNameContainer.readerId}" />
<reader:readerlist rendered="#{empty readerNameContainer.readerId}" />
</ui:define>
</ui:composition>
</h:body>
......
......@@ -3,7 +3,9 @@
"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:c="http://java.sun.com/jsp/jstl/core" xmlns:p="http://primefaces.org/ui" xmlns:users="http://java.sun.com/jsf/composite/cditools/user"
xmlns:shop="http://java.sun.com/jsf/composite/cditools/shop">
xmlns:shop="http://java.sun.com/jsf/composite/cditools/shop"
xmlns:reader="http://java.sun.com/jsf/composite/cditools/reader"
>
<h:body>
<ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml">
<ui:param name="thispage" value="page.user.create" />
......@@ -68,24 +70,11 @@
</h:dataTable>
</h:form>-->
<h3>RFID</h3>
<h:form rendered="#{empty readerNameContainer.readerId}">
<h:dataTable border="1" id="reader" value="#{readerListDataView.readers}" var="rr">
<h:column>
<f:facet name="header">
<h:outputText value="${i18n['reader.name']}" />
</f:facet>
<h:outputText value="#{rr}" />
</h:column>
<h:column>
<h:commandButton action="#{readerListDataView.selectReader}" />
</h:column>
</h:dataTable>
</h:form>
<shop:readerevents rendered="#{!empty readerNameContainer.readerId}" />
<!-- reader:rfid linkoutcome="/shop/shopToUser" linkvalue="#{i18n['readerevent.shopToUser']}" / -->
<reader:barcode_rfid selectvalue="#{i18n['readerevent.associateToUser']}" selectaction="#{userView.attachBarcodeToCard()}"/>
</ui:fragment>
......
......@@ -2,7 +2,6 @@ package fi.codecrew.moya.web.cdiview.shop;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
......@@ -25,9 +24,12 @@ import fi.codecrew.moya.model.Bill;
import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.LanEventProperty;
import fi.codecrew.moya.model.LanEventPropertyKey;
import fi.codecrew.moya.model.PrintedCard;
import fi.codecrew.moya.model.Product;
import fi.codecrew.moya.web.annotations.SelectedUser;
import fi.codecrew.moya.web.cdiview.GenericCDIView;
import fi.codecrew.moya.web.cdiview.reader.ReaderView;
import fi.codecrew.moya.web.cdiview.user.UserView;
import fi.codecrew.moya.web.helpers.ProductShopItem;
@Named
......@@ -60,13 +62,19 @@ public class ProductShopView extends GenericCDIView {
private boolean payInstant = true;
private BigDecimal cash = BigDecimal.ZERO;
private String barcode;
private transient ListDataModel<ProductShopItem> shoppingcart;
@Inject
private BillListView billListView;
@Inject
private ReaderView readerView;
@Inject
private UserView userView;
@Inject
private BillEditView billEditView;
private boolean hasLimits = false;
private boolean blip = false;
......@@ -354,16 +362,26 @@ public class ProductShopView extends GenericCDIView {
this.hasLimits = hasLimits;
}
public String getBarcode() {
return barcode;
}
public void setBarcode(String barcode) {
this.barcode = barcode;
}
public String readBarcode() {
Product product = productBean.findByBarcode(this.barcode);
PrintedCard card = readerView.getPrintedCard();
if(readerView.getBarcode() == null || readerView.getBarcode().trim() == "") {
return null;
}
if(card != null) {
if(card.getUser() != null) {
userView.setUser(card.getUser());
this.user = card.getUser();
initShopView();
return null;
}
}
Product product = productBean.findByBarcode(readerView.getBarcode());
this.blip = false;
// find product index, set index and add one
......@@ -381,7 +399,7 @@ public class ProductShopView extends GenericCDIView {
}
n++;
}
this.barcode = null;
readerView.clearBarcode();
logger.debug("barcode read");
return "success";
}
......@@ -401,5 +419,7 @@ public class ProductShopView extends GenericCDIView {
public void setBoughtItems(ListDataModel<ProductShopItem> boughtItems) {
this.boughtItems = boughtItems;
}
}
package fi.codecrew.moya.web.cdiview.shop;
import javax.ejb.EJB;
import javax.enterprise.context.RequestScoped;
import javax.faces.model.ListDataModel;
import javax.inject.Named;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.codecrew.moya.beans.ReaderBeanLocal;
import fi.codecrew.moya.enums.apps.ShopPermission;
import fi.codecrew.moya.model.Reader;
import fi.codecrew.moya.web.cdiview.GenericCDIView;
@Named
@RequestScoped
public class ReaderListDataView extends GenericCDIView {
/**
*
*/
private static final long serialVersionUID = -601822388844764143L;
@EJB
private transient ReaderBeanLocal readerbean;
private transient ListDataModel<Reader> readers;
@SuppressWarnings("unused")
private static final Logger logger = LoggerFactory.getLogger(ReaderListDataView.class);
public void initView() {
super.requirePermissions(ShopPermission.SHOP_TO_OTHERS);
}
public ListDataModel<Reader> getReaders()
{
if (readers == null) {
readers = new ListDataModel<Reader>(readerbean.getReaders());
}
return readers;
}
}
package fi.codecrew.moya.web.cdiview.shop;
import java.io.Serializable;
import javax.enterprise.context.SessionScoped;
import javax.inject.Named;
@Named
@SessionScoped
public class ReaderNameContainer implements Serializable {
private static final long serialVersionUID = 571747919767505523L;
private Integer readerId;
public Integer getReaderId() {
return readerId;
}
public void setReaderId(Integer readerId) {
this.readerId = readerId;
}
}
package fi.codecrew.moya.web.cdiview.shop;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.EJB;
import javax.enterprise.context.ConversationScoped;
import javax.faces.model.ListDataModel;
import javax.inject.Inject;
import javax.inject.Named;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.codecrew.moya.beans.ProductBeanLocal;
import fi.codecrew.moya.beans.ReaderBeanLocal;
import fi.codecrew.moya.beans.UserBeanLocal;
import fi.codecrew.moya.enums.apps.ShopPermission;
import fi.codecrew.moya.enums.apps.UserPermission;
import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.PrintedCard;
import fi.codecrew.moya.model.Product;
import fi.codecrew.moya.model.Reader;
import fi.codecrew.moya.model.ReaderEvent;
import fi.codecrew.moya.model.ReaderType;
import fi.codecrew.moya.model.Role;
import fi.codecrew.moya.model.User;
import fi.codecrew.moya.utilities.SearchQuery;
import fi.codecrew.moya.web.cdiview.GenericCDIView;
import fi.codecrew.moya.web.cdiview.user.UserView;
@Named
@ConversationScoped
public class ReaderView extends GenericCDIView {
private static final long serialVersionUID = 802344850073689859L;
private Integer eventid;
private String placecode;
private String usersearch;
private Reader reader;
private transient ListDataModel<UserCardWrapper> userlist;
@Inject
private ReaderNameContainer namecontainer;
@EJB
private transient ReaderBeanLocal readerbean;
private ReaderEvent event;
@EJB
private transient UserBeanLocal userbean;
private UserCardWrapper neighborUser;
private static final Logger logger = LoggerFactory.getLogger(ReaderView.class);
private Integer readerid;
@EJB
private ProductBeanLocal shopBean;
@Inject
private UserView userview;
public void initEditReader() {
if (super.requirePermissions(ShopPermission.SHOP_TO_OTHERS) && reader == null) {
reader = readerbean.getReader(readerid);
super.beginConversation();
}
}
public String createCardForUser() {
UserCardWrapper usr = userlist.getRowData();
logger.info("Creating card for user {} from event {}", usr, event);
ReaderEvent card = readerbean.createCard(event, usr.getUser());
// super.addFaceMessage("Created card for user with id: " +
// card.getPrintedCard());
return null;
}
public List<Role> getUserRoles(EventUser user) {
return userbean.findUsersRoles(user);
}
public void initCreateReader()
{
if (super.requirePermissions(ShopPermission.SHOP_TO_OTHERS) && reader == null)
{
reader = new Reader();
super.beginConversation();
}
}
public String createReader()
{
readerbean.createReader(reader);
namecontainer.setReaderId(reader.getId());
return "/shop/showReaderEvents";
}
public void initUserassocView() {
if (super.requirePermissions(UserPermission.CREATE_NEW) && event == null) {
event = readerbean.getEvent(eventid);
if (event.getPrintedCard() == null) {
User neigUser = readerbean.findTagFromAnyEvent(event.getValue());
setNeighborUser(new UserCardWrapper(neigUser, userbean));
}
super.beginConversation();
}
}
public boolean isReaderSelected() {
return this.readerid != null;
}
public String assocToCard()
{
UserCardWrapper user = userlist.getRowData();
PrintedCard card = user.getPrintedCards().getRowData();
ReaderEvent re = readerbean.assocTagToCard(event.getValue(), event.getReader().getIdentification(), card);
super.addFaceMessage("usercard.associated");
logger.info("re {}", re.getPrintedCard());
userview.setUser(re.getPrintedCard().getUser());
return "/useradmin/edit";
}
public String searchforuser()
{
if (usersearch == null || usersearch.length() < 2) {
super.addFaceMessage("user.tooShortSearch");
} else {
userlist = UserCardWrapper.initWrapper(userbean.getUsers(new SearchQuery(0, 0, null, usersearch, false)).getResults(), userbean);
}
return null;
}
public void initReaderList() {
if (super.requirePermissions(ShopPermission.SHOP_TO_OTHERS)) {
}
}
public List<Product> getAutoProducts() {
List<Product> ret = new ArrayList<Product>();
ret.add(Product.EMPTY_PRODUCT);
ret.addAll(shopBean.getProducts());
return ret;
}
public ReaderType[] getReadertypes()
{
return ReaderType.values();
}
public List<ReaderEvent> getReaderEvents()
{
return readerbean.getReaderEvents(namecontainer.getReaderId());
}
public String saveReader()
{
reader = readerbean.saveReader(reader);
return null;
}
public ReaderNameContainer getNamecontainer() {
return namecontainer;
}
public void setNamecontainer(ReaderNameContainer namecontainer) {
this.namecontainer = namecontainer;
}
public Integer getEventid() {
return eventid;
}
public void setEventid(Integer eventid) {
this.eventid = eventid;
}
public ReaderEvent getEvent() {
return event;
}
public void setEvent(ReaderEvent event) {
this.event = event;
}
public String getPlacecode() {
return placecode;
}
public void setPlacecode(String placecode) {
this.placecode = placecode;
}
public String getUsersearch() {
return usersearch;
}
public void setUsersearch(String usersearch) {
this.usersearch = usersearch;
}
public ListDataModel<UserCardWrapper> getUserlist() {
return userlist;
}
public void setUserlist(ListDataModel<UserCardWrapper> userlist) {
this.userlist = userlist;
}
public UserCardWrapper getNeighborUser() {
return neighborUser;
}
public void setNeighborUser(UserCardWrapper neighborUser) {
this.neighborUser = neighborUser;
}
public Integer getReaderid() {
return readerid;
}
public void setReaderid(Integer readerid) {
this.readerid = readerid;
}
public String setReaderToId(Integer readerid) {
this.readerid = readerid;
this.namecontainer.setReaderId(readerid);
reader = readerbean.getReader(readerid);
return "/admin/info/index";
}
public Reader getReader() {
return reader;
}
public void setReader(Reader reader) {
this.reader = reader;
}
public UserView getUserview() {
return userview;
}
public void setUserview(UserView userview) {
this.userview = userview;
}
public ReaderType[] getReaderTypes()
{
return ReaderType.values();
}
}
......@@ -13,7 +13,6 @@ import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.inject.Named;
import org.apache.http.HttpRequest;
import org.primefaces.event.CaptureEvent;
import org.primefaces.model.CroppedImage;
import org.primefaces.model.DefaultStreamedContent;
......@@ -25,6 +24,8 @@ import org.slf4j.LoggerFactory;
import fi.codecrew.moya.beans.CardPrintBeanLocal;
import fi.codecrew.moya.beans.CardTemplateBeanLocal;
import fi.codecrew.moya.beans.EventBeanLocal;
import fi.codecrew.moya.beans.PrintedCardBeanLocal;
import fi.codecrew.moya.beans.ReaderBeanLocal;
import fi.codecrew.moya.beans.RoleBeanLocal;
import fi.codecrew.moya.beans.UserBeanLocal;
import fi.codecrew.moya.enums.apps.UserPermission;
......@@ -38,6 +39,7 @@ import fi.codecrew.moya.util.MassPrintResult;
import fi.codecrew.moya.web.annotations.LoggedIn;
import fi.codecrew.moya.web.annotations.SelectedUser;
import fi.codecrew.moya.web.cdiview.GenericCDIView;
import fi.codecrew.moya.web.cdiview.reader.ReaderView;
@Named()
@ConversationScoped
......@@ -53,17 +55,23 @@ public class UserView extends GenericCDIView {
@EJB
private transient UserBeanLocal userbean;
@EJB
private transient ReaderBeanLocal readerbean;
private Integer userid;
private transient UploadedFile image;
@EJB
private transient CardTemplateBeanLocal ctbean;
private CroppedImage croppedImage;
private EventUser user;
@Inject
private transient Conversation conversation;
@Inject
private transient ReaderView readerView;
public String getConversationId() {
if (conversation != null)
......@@ -80,6 +88,10 @@ public class UserView extends GenericCDIView {
@EJB
private transient CardTemplateBeanLocal cardBean;
@EJB
private transient PrintedCardBeanLocal printedCardBean;
private List<Role> usersRoles;
@EJB
private transient RoleBeanLocal rolebean;
......@@ -281,7 +293,7 @@ public class UserView extends GenericCDIView {
public CardTemplate getUsersCardtemplate()
{
CardTemplate ret = ctbean.getUsersCardtype(user);
CardTemplate ret = cardBean.getUsersCardtype(user);
logger.info("Users cardtemplate is {}", ret);
return ret;
}
......@@ -290,6 +302,33 @@ public class UserView extends GenericCDIView {
{
return permbean.isCurrentUser(user);
}
/**
* attach barcode or rfid to card
* @return
*/
public String attachBarcodeToCard() {
PrintedCard card = readerView.getPrintedCard();
// already attached
if(card != null) {
super.addFaceMessage("usercard.alreadyassociated");
return null;
}
// still there, we can get real card and update it's barcodes
card = cardBean.checkPrintedCard(user);
if(readerView.getBarcode() != null && !readerView.getBarcode().isEmpty()) {
card.setBarcode(readerView.getBarcode());
printedCardBean.save(card);
}
if(readerView.getReaderEvent() != null) {
readerbean.assocTagToCard(readerView.getReaderEvent().getValue(), readerView.getReaderEvent().getReader().getIdentification(), card);
}
return null;
}
public String createUser() {
userbean.createNewUser(user, getPassword());
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!