Commit 033f3e9f by Tuukka Kivilahti

incomingflota

1 parent 8e9138de
......@@ -10,7 +10,7 @@
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<!-- Production | Development -->
<param-value>Production</param-value>
<param-value>Development</param-value>
</context-param>
<context-param>
<param-name>javax.faces.FACELETS_SKIP_COMMENTS</param-name>
......
......@@ -12,28 +12,31 @@
</f:metadata>
<ui:define name="content">
<h:outputScript library="primefaces" name="jquery/jquery.js" target="head" />
<h:panelGrid columns="3">
<h:form>
<p:poll interval="1" listener="#{incomingView.polledRead}" />
</h:form>
<h:panelGrid columns="3">
<h:panelGroup>
<user:edit commitaction="#{incomingView.saveUser()}" commitvalue="#{i18n['user.save']}" />
<user:edit commitaction="#{incomingView.saveUser()}" commitvalue="#{i18n['user.save']}" camAlwaysOn="true" />
</h:panelGroup>
<h:panelGroup>
<h:form>
<p:imageCropper value="#{userView.croppedImage}" aspectRatio="0.7317073170731707" image="/dydata/userimage/#{userView.user.currentImage.id}.jpg" />
<h:commandButton action="#{userView.crop}" value="#{i18n['user.cropImage']}" />
<h:commandButton action="#{userView.cancelCrop}" value="#{i18n['user.cropImage']}" />
</h:form>
</h:panelGroup>
<h:panelGroup>
<h:form>
<user:previewAndPrintCard />
<p:commandButton action="#{userView.acceptPrintedCard()}" value="accept printed card" />
<p:graphicImage url="/dydata/usercard/#{userView.user.user.id}.png" width="300" /><br />
<h:commandButton action="#{incomingView.printCard}" value="#{i18n['print']}" />
</h:form>
</h:panelGroup>
</h:panelGrid>
......
......@@ -22,9 +22,9 @@ xmlns:reader="http://java.sun.com/jsf/composite/cditools/reader"
<h:dataTable border="1" id="reader" value="#{readerListDataView.readers}" var="rr">
<h:column>
<f:facet name="header">
<h:outputText value="${i18n['reader.name']}" />
<h:outputText value="#{i18n['reader.name']}" />
</f:facet>
<h:outputText value="#{rr}" />
<h:outputText value="#{rr.identification}" />
</h:column>
<h:column>
<h:commandButton action="#{readerListDataView.selectReader}" value="#{i18n['reader.select']}" />
......
......@@ -7,6 +7,7 @@
<composite:interface>
<composite:attribute name="creating" required="false" default="false" />
<composite:attribute name="commitaction" required="true" method-signature="java.lang.String action()" />
<composite:attribute name="camAlwaysOn" required="false" default="false" />
</composite:interface>
<composite:implementation>
......@@ -19,20 +20,25 @@
<h:panelGroup>
<ui:fragment rendered="#{not empty userView.user.id}">
<p:dialog id="chartPanel" for="webcamButton" modal="true" dynamic="true" widgetVar="webcamDialog">
<p:dialog rendered="#{!cc.attrs.camAlwaysOn}" id="chartPanel" for="webcamButton" modal="true" dynamic="true" widgetVar="webcamDialog">
<p:photoCam widgetVar="pc" listener="#{userView.oncapture}" update="@all" />
<p:commandButton type="button" value="Capture" onclick="pc.capture()" />
</p:dialog>
<h:outputText rendered="#{empty userView.user.currentImage}" value="#{i18n['user.noCurrentImage']}" />
<ui:fragment rendered="#{!empty userView.user.currentImage}">
<img style="width: 150px;" src="#{request.contextPath}/dydata/userimage/#{userView.user.currentImage.id}.img" alt="image" />
</ui:fragment>
<br />
<p:commandButton id="webcamButton" value="#{i18n['userimage.webcam']}" onclick="webcamDialog.show()" type="button" />
<p:commandButton rendered="#{!cc.attrs.camAlwaysOn}" id="webcamButton" value="#{i18n['userimage.webcam']}" onclick="webcamDialog.show()" type="button" />
<br />
<br />
<ui:fragment rendered="#{cc.attrs.camAlwaysOn}">
<p:photoCam widgetVar="pc" listener="#{userView.oncapture}" update="@all" />
<p:commandButton type="button" value="Capture" onclick="pc.capture()" />
</ui:fragment>
<p:fileUpload id="uploadfile" required="TRUE" requiredMessage="Required!" invalidSizeMessage="#{i18n['user.imageTooBig']}" sizeLimit="1024" value="#{userView.image}" mode="simple" />
<p:message for="uploadfile" />
......
......@@ -9,9 +9,12 @@
<composite:implementation>
<div>
<p:graphicImage url="/dydata/usercard/#{userView.user.user.id}.png" width="300" /><br />
<p:commandButton action="#{userView.prepareCardDownload()}" rendered="#{userView.waitForAcceptance==false}" value="print card" ajax="true" update="@form" onclick="PrimeFaces.monitorDownload(start, stop)">
<p:fileDownload value="#{userView.streamedFile}" />
</p:commandButton>
</div>
</composite:implementation>
</html>
......
......@@ -17,13 +17,16 @@ import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
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.PermissionBeanLocal;
import fi.codecrew.moya.beans.UserBeanLocal;
import fi.codecrew.moya.model.CardTemplate;
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.UserImage;
/**
......@@ -41,6 +44,13 @@ public class FileDownloadServlet extends GenericImageServlet {
@EJB
private transient UserBeanLocal userbean;
@EJB
private transient CardTemplateBeanLocal cardbean;
@EJB
private transient CardPrintBeanLocal cardprint;
@EJB
private transient PermissionBeanLocal permbean;
......@@ -57,6 +67,14 @@ public class FileDownloadServlet extends GenericImageServlet {
private static final Pattern URLPATTERN = Pattern.compile("([^./]+)");
/**
* Usage MoyaWeb/dydata/format/
* possible formats
* logo
* userimage/<eventuserid>.jpg
* cardtemplate/<cardtemplateid>.png
* usercard/
*/
@Override
protected ImageMover getImagedata() {
ImageMover ret = new ImageMover();
......@@ -117,6 +135,28 @@ public class FileDownloadServlet extends GenericImageServlet {
}
}
}else if (urlparts.get(0).equals("usercard") && urlparts.size() > 2)
{
int userid = Integer.parseInt(urlparts.get(1));
EventUser usr = userbean.findByUserId(userid);
logger.info("Trying to print usercard for user {}", usr);
if (usr != null) {
PrintedCard card = cardbean.checkPrintedCard(usr);
try {
byte[] img = cardprint.constructPNG(card);
if (img.length > 0)
{
ret.setData(img);
ret.setImagetype("image/png");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
if (ret.getImagetype() == null) {
......
......@@ -27,6 +27,7 @@ import fi.codecrew.moya.beans.EventBeanLocal;
import fi.codecrew.moya.beans.ReaderBeanLocal;
import fi.codecrew.moya.beans.RoleBeanLocal;
import fi.codecrew.moya.beans.UserBeanLocal;
import fi.codecrew.moya.enums.CardState;
import fi.codecrew.moya.enums.apps.UserPermission;
import fi.codecrew.moya.model.CardTemplate;
import fi.codecrew.moya.model.EventUser;
......@@ -167,6 +168,7 @@ public class UserView extends GenericCDIView {
userbean.saveCroppedImage(user.getUser().getCurrentImage(),
croppedImage.getLeft(), croppedImage.getTop(),
croppedImage.getWidth(), croppedImage.getHeight());
user = userbean.getEventUser(newImage.getUser());
} catch (IOException e) {
logger.info("Error converting image", e);
......@@ -318,6 +320,8 @@ public class UserView extends GenericCDIView {
if(readerView.getBarcode() != null && !readerView.getBarcode().isEmpty()) {
card.setBarcode(readerView.getBarcode());
card.setCardState(CardState.VALIDATED);
logger.debug("barcode {} to card {} ",readerView.getBarcode(),card.getUser().getNick());
cardBean.saveCard(card);
} else if(readerView.getReaderEvent() != null) {
......
package fi.codecrew.moya.web.flow;
import javax.ejb.EJB;
import javax.enterprise.context.ConversationScoped;
import javax.inject.Inject;
import javax.inject.Named;
......@@ -7,9 +8,16 @@ import javax.inject.Named;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.codecrew.moya.beans.CardTemplateBeanLocal;
import fi.codecrew.moya.beans.PermissionBeanLocal;
import fi.codecrew.moya.beans.ReaderBeanLocal;
import fi.codecrew.moya.enums.CardState;
import fi.codecrew.moya.enums.apps.UserPermission;
import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.PrintedCard;
import fi.codecrew.moya.web.annotations.SelectedUser;
import fi.codecrew.moya.web.cdiview.GenericCDIView;
import fi.codecrew.moya.web.cdiview.reader.ReaderNameContainer;
import fi.codecrew.moya.web.cdiview.reader.ReaderView;
import fi.codecrew.moya.web.cdiview.user.UserView;
......@@ -29,6 +37,17 @@ public class IncomingView extends GenericCDIView {
@Inject
private ReaderView readerView;
@Inject
private ReaderNameContainer namecontainer;
@EJB
private CardTemplateBeanLocal cardBean;
@EJB
private PermissionBeanLocal permBean;
public void initView() {
super.beginConversation();
......@@ -37,7 +56,10 @@ public class IncomingView extends GenericCDIView {
private boolean initialized = false;
public void initPrintCardView() {
if(!permbean.hasPermission(UserPermission.MODIFY) || namecontainer.getReaderId() == null || namecontainer.getReaderId() <= 0) {
super.navihandler.redirectNavigation("index.jsf");
}
if (!initialized) {
logger.debug("INITIALIZING!!!!");
initializePoller();
......@@ -79,6 +101,7 @@ public class IncomingView extends GenericCDIView {
// still there, it must be "clean" barcode
if (userview.getUser() != null) {
userview.attachBarcodeToCard();
}
}
......@@ -99,5 +122,21 @@ public class IncomingView extends GenericCDIView {
//userview.prepareCardDownload();
return "printCard";
}
public String printCard() {
PrintedCard card = cardBean.checkPrintedCard(user);
card.setCardState(CardState.VALIDATED);
cardBean.saveCard(card);
return null;
}
}
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!