Commit eeb3fc26 by Tuukka Kivilahti

moar of info, viilailua, korjailua jne. Hieno fieldsetsetin asetus sessioon :)

1 parent 107fc909
...@@ -21,6 +21,7 @@ import org.slf4j.LoggerFactory; ...@@ -21,6 +21,7 @@ import org.slf4j.LoggerFactory;
import fi.codecrew.moya.enums.CardState; import fi.codecrew.moya.enums.CardState;
import fi.codecrew.moya.enums.apps.UserPermission; import fi.codecrew.moya.enums.apps.UserPermission;
import fi.codecrew.moya.facade.CardCodeFacade;
import fi.codecrew.moya.facade.CardObjectDataFacade; import fi.codecrew.moya.facade.CardObjectDataFacade;
import fi.codecrew.moya.facade.CardTemplateFacade; import fi.codecrew.moya.facade.CardTemplateFacade;
import fi.codecrew.moya.facade.CardTextDataFacade; import fi.codecrew.moya.facade.CardTextDataFacade;
...@@ -28,6 +29,7 @@ import fi.codecrew.moya.facade.EventUserFacade; ...@@ -28,6 +29,7 @@ import fi.codecrew.moya.facade.EventUserFacade;
import fi.codecrew.moya.facade.GroupMembershipFacade; import fi.codecrew.moya.facade.GroupMembershipFacade;
import fi.codecrew.moya.facade.LanEventPropertyFacade; import fi.codecrew.moya.facade.LanEventPropertyFacade;
import fi.codecrew.moya.facade.PrintedCardFacade; import fi.codecrew.moya.facade.PrintedCardFacade;
import fi.codecrew.moya.model.CardCode;
import fi.codecrew.moya.model.CardObjectData; import fi.codecrew.moya.model.CardObjectData;
import fi.codecrew.moya.model.CardTemplate; import fi.codecrew.moya.model.CardTemplate;
import fi.codecrew.moya.model.CardTextData; import fi.codecrew.moya.model.CardTextData;
...@@ -86,6 +88,9 @@ public class CardTemplateBean implements CardTemplateBeanLocal { ...@@ -86,6 +88,9 @@ public class CardTemplateBean implements CardTemplateBeanLocal {
@EJB @EJB
private CardObjectDataFacade codFacade; private CardObjectDataFacade codFacade;
@EJB
private CardCodeFacade cardCodeFacade;
// @Override // @Override
...@@ -354,16 +359,20 @@ public class CardTemplateBean implements CardTemplateBeanLocal { ...@@ -354,16 +359,20 @@ public class CardTemplateBean implements CardTemplateBeanLocal {
return card; return card;
} }
@Override @Override
public EventUser giveCard(EventUser user, boolean markUserPlacesDelivered) { public EventUser giveCard(EventUser user, boolean markUserPlacesDelivered) {
PrintedCard card = checkPrintedCard(user); user = eventUserFacade.reload(user);
PrintedCard card = checkPrintedCard(user);
if (card.getCardState() != CardState.DELIVERED) { if (card.getCardState() != CardState.DELIVERED) {
card.setCardState(CardState.DELIVERED); card.setCardState(CardState.DELIVERED);
card = printedcardfacade.merge(card);
} else { } else {
logger.info("Not marking card to delivered: " + card.getCardState() + " : " + card.getId()); logger.info("Not marking card to delivered: " + card.getCardState() + " : " + card.getId());
} }
...@@ -371,10 +380,22 @@ public class CardTemplateBean implements CardTemplateBeanLocal { ...@@ -371,10 +380,22 @@ public class CardTemplateBean implements CardTemplateBeanLocal {
if (markUserPlacesDelivered) { if (markUserPlacesDelivered) {
for (GroupMembership membership : gmFacade.findMemberships(user)) { for (GroupMembership membership : gmFacade.findMemberships(user)) {
membership.setEnteredEvent(Calendar.getInstance()); membership.setEnteredEvent(Calendar.getInstance());
membership = gmFacade.merge(membership); gmFacade.merge(membership);
}
} }
return user;
} }
return eventUserFacade.reload(user); @Override
public void removeCardCode(CardCode code) {
code = cardCodeFacade.merge(code);
if(code.getPrintedCard().getCardCodes().contains(code)) {
code.getPrintedCard().getCardCodes().remove(code);
cardCodeFacade.remove(code);
}
} }
} }
...@@ -173,10 +173,13 @@ public class ReaderBean implements ReaderBeanLocal { ...@@ -173,10 +173,13 @@ public class ReaderBean implements ReaderBeanLocal {
@Override @Override
public ReaderEvent assocCodeToCard(ReaderEvent readerEvent, PrintedCard card) { public ReaderEvent assocCodeToCard(ReaderEvent readerEvent, PrintedCard card) {
card = cardfacade.reload(card);
CardCode code = new CardCode(card, readerEvent.getReader().getType(), readerEvent.getValue(), eventbean.getCurrentEvent()); CardCode code = new CardCode(card, readerEvent.getReader().getType(), readerEvent.getValue(), eventbean.getCurrentEvent());
code = cardCodeFacade.create(code); code = cardCodeFacade.create(code);
card = cardfacade.reload(card); card.getCardCodes().add(code);
card = cardfacade.merge(card);
return readerEvent; return readerEvent;
} }
......
...@@ -6,12 +6,12 @@ import java.util.List; ...@@ -6,12 +6,12 @@ import java.util.List;
import javax.ejb.Local; import javax.ejb.Local;
import fi.codecrew.moya.enums.CardState; import fi.codecrew.moya.enums.CardState;
import fi.codecrew.moya.model.CardCode;
import fi.codecrew.moya.model.CardObjectData; import fi.codecrew.moya.model.CardObjectData;
import fi.codecrew.moya.model.CardTemplate; import fi.codecrew.moya.model.CardTemplate;
import fi.codecrew.moya.model.CardTextData; import fi.codecrew.moya.model.CardTextData;
import fi.codecrew.moya.model.EventUser; import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.PrintedCard; import fi.codecrew.moya.model.PrintedCard;
import fi.codecrew.moya.model.ReaderEvent;
import fi.codecrew.moya.utilities.jsf.EntityFinderBean; import fi.codecrew.moya.utilities.jsf.EntityFinderBean;
@Local @Local
...@@ -63,4 +63,5 @@ public interface CardTemplateBeanLocal extends EntityFinderBean<CardTemplate> { ...@@ -63,4 +63,5 @@ public interface CardTemplateBeanLocal extends EntityFinderBean<CardTemplate> {
EventUser giveCard(EventUser user, boolean markUserPlacesDelivered); EventUser giveCard(EventUser user, boolean markUserPlacesDelivered);
void removeCardCode(CardCode code);
} }
...@@ -25,15 +25,17 @@ ...@@ -25,15 +25,17 @@
</p:autoComplete> </p:autoComplete>
</h:form> </h:form>
<h:form> <h:form id="attachform">
<p:poll update="attachBarcode" interval="2" ignoreAutoUpdate="true" onerror="location.reload();" />
<p:poll update="attachBarcode" interval="2" ignoreAutoUpdate="true" />
<h:panelGroup id="attachBarcode"> <h:panelGroup id="attachBarcode">
<h:panelGroup rendered="#{incomingView.showAttachDialog}"> <h:panelGroup rendered="#{incomingView.showAttachDialog}">
<h1>#{i18n['incomingView.attachDialogTitle']}</h1> <h1>#{i18n['incomingView.attachDialogTitle']}</h1>
<p:commandButton value="#{i18n['incomingView.attach']}" action="#{incomingView.attachCodeToCard}" update="@all" /> <!-- napin painaminen aiheuttaa aina NullPOinterExceptionin, mutta tekee siitä huolimatta tarvittavat asiat -->
<p:commandButton value="#{i18n['incomingView.cancel']}" action="#{incomingView.hideAttachDialog}" update="@all" /> <p:commandButton value="#{i18n['incomingView.attach']}" actionListener="#{incomingView.attachCodeToCard}" update=":cardcodeform :placelistform :imgCropperForm" onerror="location.reload(true);" />
<p:commandButton value="#{i18n['incomingView.cancel']}" actionListener="#{incomingView.hideAttachDialog}" update=":attachform:attachBarcode" />
</h:panelGroup> </h:panelGroup>
</h:panelGroup> </h:panelGroup>
...@@ -41,7 +43,11 @@ ...@@ -41,7 +43,11 @@
<h:outputScript library="primefaces" name="jquery/jquery.js" target="head" /> <h:outputScript library="primefaces" name="jquery/jquery.js" target="head" />
<br /> <br />
<br /> <br />
<h1> <h1>
<p:outputLabel value="#{userView.selectedUser.firstnames}" /> <p:outputLabel value="#{userView.selectedUser.firstnames}" />
...@@ -52,41 +58,199 @@ ...@@ -52,41 +58,199 @@
</h1> </h1>
<br /> <br />
<h:panelGrid id="cropper" columns="2"> <h:panelGrid id="cropper" columns="3">
<h:panelGroup> <h:panelGroup>
<p:fieldset legend="#{i18n['incomingflow.usereditor']}" toggleable="true">
<user:edit id="usereditor" commitaction="#{incomingView.saveUser()}" commitvalue="#{i18n['user.save']}" camAlwaysOn="true" photocamupdate="@all" />
<h:form id="userform_info" enctype="multipart/form-data">
<p:fieldset id="userfieldset_info" legend="#{i18n['incomingflow.usereditor.info']}" toggleable="true" collapsed="#{fieldsetView.isCollapsed(component.id)}">
<p:ajax event="toggle" listener="#{fieldsetView.handleToggle}" />
<table>
<ui:fragment rendered="#{!cc.attrs.creating}">
<tr>
<td colspan="2"><b><h:outputLabel for="login" value="#{i18n['user.login']}" /></b><br /> <h:outputText value="#{userView.selectedUser.login}" id="login" /></td>
</tr>
</ui:fragment>
<tr>
<td colspan="2"><b><h:outputLabel value="#{i18n['user.nick']}" for="nick" /> </b><br /> <p:inplace emptyLabel="#{i18n['user.insert']}">
<p:inputText size="45" id="nick" disabled="#{!cc.attrs.creating and !userView.canSave}" value="#{userView.selectedUser.nick}" />
</p:inplace></td>
</tr>
<tr>
<td><b><h:outputLabel value="#{i18n['user.firstNames']}" for="firstnames" /></b><br /> <p:inplace emptyLabel="#{i18n['user.insert']}">
<p:inputText size="22" id="firstnames" disabled="#{!cc.attrs.creating and !userView.canSave}" value="#{userView.selectedUser.firstnames}" />
</p:inplace></td>
<td><b><h:outputLabel value="#{i18n['user.lastName']}" for="lastname" /></b><br /> <p:inplace emptyLabel="#{i18n['user.insert']}">
<p:inputText size="30" id="lastname" disabled="#{!cc.attrs.creating and !userView.canSave}" value="#{userView.selectedUser.lastname}" />
</p:inplace></td>
</tr>
<tr>
<td colspan="2"><b><h:outputLabel value="#{i18n['user.sex']}" for="sex" /></b> <br /> <p:selectOneMenu disabled="#{!cc.attrs.creating and !userView.canSave}" id="sex" value="#{userView.selectedUser.gender}">
<f:selectItem id="undefined" itemLabel="#{i18n['user.sex.UNDEFINED']}" itemValue="UNDEFINED" />
<f:selectItem id="male" itemLabel="#{i18n['user.sex.MALE']}" itemValue="MALE" />
<f:selectItem id="female" itemLabel="#{i18n['user.sex.FEMALE']}" itemValue="FEMALE" />
</p:selectOneMenu></td>
</tr>
<tr>
<td><b><h:outputLabel for="birthday" value="#{i18n['user.birthday']}" /></b><br /> <p:inplace emptyLabel="#{i18n['user.insert']}">
<p:calendar id="birthday" navigator="true" yearRange="c-80:c-0" value="#{userView.selectedUser.birthday}">
<f:convertDateTime pattern="#{sessionHandler.dateFormat}" timeZone="#{sessionHandler.timezone}" />
</p:calendar>
</p:inplace> <h:message for="birthday" /></td>
<td><b><h:outputLabel for="age" value="#{i18n['user.age']}" /></b><br /> <h:outputText value="#{userView.selectedUser.user.age}">
<f:convertNumber minFractionDigits="2" maxFractionDigits="2" />
</h:outputText></td>
</tr>
</table>
<table>
<tr>
<td colspan="2"><b><p:outputLabel value="#{i18n['user.address']}" for="address" /></b><br /> <p:inplace emptyLabel="#{i18n['user.insert']}">
<p:inputText size="45" id="address" disabled="#{!cc.attrs.creating and !userView.canSave}" value="#{userView.selectedUser.address}" />
</p:inplace></td>
</tr>
<tr>
<td><b><p:outputLabel value="#{i18n['user.zipCode']}" for="zip" /></b><br /> <p:inplace emptyLabel="#{i18n['user.insert']}">
<p:inputText styleClass="ui-input" size="7" id="zip" disabled="#{!cc.attrs.creating and !userView.canSave}" value="#{userView.selectedUser.zip}" />
</p:inplace> <p:message for="zip" /></td>
<td><b><p:outputLabel value="#{i18n['user.town']}" for="town" /></b><br /> <p:inplace emptyLabel="#{i18n['user.insert']}">
<p:inputText styleClass="ui-input" size="25" id="town" disabled="#{!cc.attrs.creating and !userView.canSave}" value="#{userView.selectedUser.town}" />
</p:inplace> <p:message for="town" /></td>
</tr>
<tr>
<td colspan="2"><b><h:outputLabel value="#{i18n['user.email']}" for="email" /></b> <br /> <p:inplace emptyLabel="#{i18n['user.insert']}">
<p:inputText validator="#{userValidator.validateEmail}" size="45" id="email" disabled="#{!cc.attrs.creating and !userView.canSave}" value="#{userView.selectedUser.email}" />
</p:inplace></td>
</tr>
<tr>
<td><b><p:outputLabel value="#{i18n['user.phone']}" for="phone" /></b><br /> <p:inplace emptyLabel="#{i18n['user.insert']}">
<p:inputText styleClass="ui-input" size="7" id="phone" disabled="#{!cc.attrs.creating and !userView.canSave}" value="#{userView.selectedUser.phone}" />
</p:inplace> <p:message for="phone" /></td>
</tr>
</table>
<p:commandButton rendered="#{cc.attrs.creating or userView.canSave}" id="commitbtn" action="#{incomingView.saveUser()}" ajax="false" value="#{i18n['user.save']}" onerror="location.reload(true);" />
</p:fieldset> </p:fieldset>
</h:form>
</h:panelGroup> </h:panelGroup>
<h:panelGroup> <h:panelGroup>
<p:fieldset legend="#{i18n['incomingflow.printedCard']}" toggleable="true">
<h:form id="imgCropperForm">
<p:fieldset id="cropperandcardset" legend="#{i18n['incomingflow.printedCard']}" toggleable="true" collapsed="#{fieldsetView.isCollapsed(component.id)}">
<p:ajax event="toggle" listener="#{fieldsetView.handleToggle}" />
<h:panelGrid columns="2"> <h:panelGrid columns="2">
<h:panelGroup> <h:panelGroup rendered="#{!empty userView.selectedUser.currentImage}">
<h:form id="imgCropperForm" rendered="#{!empty userView.selectedUser.currentImage}">
<p:commandButton value="#{i18n['user.imageCropRefresh']}" ajax="false" update="imgCropperForm" /> <p:commandButton value="#{i18n['user.imageCropRefresh']}" ajax="false" update="imgCropperForm" />
<h:outputLabel value="#{i18n['user.cropUserImage']}:" /> <h:outputLabel value="#{i18n['user.cropUserImage']}:" />
<p:imageCropper id="imgCropper" value="#{userView.croppedImage}" aspectRatio="0.7317073170731707" image="/dydata/userimage/#{userView.selectedUser.currentImage.id}.img" /> <p:imageCropper id="imgCropper" value="#{userView.croppedImage}" aspectRatio="0.7317073170731707" image="/dydata/userimage/#{userView.selectedUser.currentImage.id}.img" />
<br /> <br />
<h:commandButton action="#{userView.crop}" value="#{i18n['user.cropImage']}" /> <h:commandButton action="#{userView.crop}" value="#{i18n['user.cropImage']}" />
</h:form>
</h:panelGroup> </h:panelGroup>
<h:panelGroup> <h:panelGroup>
<h:form>
<p:graphicImage url="/dydata/usercard/#{userView.selectedUser.user.id}.png" width="300" /> <p:graphicImage url="/dydata/usercard/#{userView.selectedUser.user.id}.png" width="300" />
<br /> <br />
<h:commandButton action="#{incomingView.printCard}" value="#{i18n['print']}" /> (status: <p:outputLabel value="#{incomingView.printedStatus}" />) <h:commandButton action="#{incomingView.printCard}" value="#{i18n['print']}" /> (status: <p:outputLabel value="#{incomingView.printedStatus}" />)
</h:form>
</h:panelGroup> </h:panelGroup>
</h:panelGrid> </h:panelGrid>
</p:fieldset> </p:fieldset>
</h:form>
</h:panelGroup>
<h:panelGroup>
<h:form id="userform" enctype="multipart/form-data">
<p:fieldset id="userfieldset_picture" legend="#{i18n['incomingflow.usereditor.picture']}" toggleable="true" collapsed="#{fieldsetView.isCollapsed(component.id)}">
<p:ajax event="toggle" listener="#{fieldsetView.handleToggle}" />
<ui:fragment rendered="#{not empty userView.selectedUser.id}">
<p:dialog id="chartPanel" for="webcamButton" modal="true" dynamic="true" widgetVar="webcamDialog">
<p:photoCam widgetVar="pc" listener="#{userView.oncapture}" update=":userform" />
<p:commandButton type="button" value="Capture" onclick="PF('pc').capture()" onerror="location.reload(true);" />
</p:dialog>
<h:outputText rendered="#{empty userView.selectedUser.currentImage}" value="#{i18n['user.noCurrentImage']}" />
<ui:fragment rendered="#{!empty userView.selectedUser.currentImage}">
<img style="width: 150px;" src="#{request.contextPath}/dydata/userimage/#{userView.selectedUser.currentImage.id}.img" alt="image" />
</ui:fragment>
<br />
<p:commandButton onerror="location.reload(true);" rendered="#{!true}" id="webcamButton" value="#{i18n['userimage.webcam']}" onclick="PF('webcamDialog').show()" type="button" />
<br />
<br />
<ui:fragment rendered="#{true}">
<p:photoCam widgetVar="pc" listener="#{userView.oncapture}" update=":imgCropperForm,:userform" />
<p:commandButton type="button" value="Capture" onclick="PF('pc').capture()" onerror="location.reload(true);" update=":imgCropperForm,:userform" />
</ui:fragment>
<!-- -->
&nbsp;
<p:fileUpload id="uploadfile" value="#{userView.image}" mode="simple" required="true" requiredMessage="Required!" invalidSizeMessage="#{i18n['user.imageTooBig']}" sizeLimit="1024" />
<p:message for="uploadfile" />
<p:commandButton action="#{userView.sendImage}" ajax="false" value="#{i18n['user.imagesubmit']}" onerror="location.reload(true);" />
</ui:fragment>
<ui:fragment rendered="#{cc.attrs.creating}">
<h:outputLabel value="#{i18n['user.login']}" for="mklogin" />
<br />
<p:inplace emptyLabel="#{i18n['user.insert']}">
<p:inputText size="25" id="mklogin" disabled="#{!cc.attrs.creating and !userView.canSave}" value="#{userView.selectedUser.login}" />
</p:inplace>
<p:message for="login" />
<br />
</ui:fragment>
<br />
<h:outputLabel rendered="#{cc.attrs.creating}" value="#{i18n['user.password']}" for="password" />
<br />
<p:inplace rendered="#{cc.attrs.creating}" emptyLabel="#{i18n['user.insert']}">
<p:password validator="#{userValidator.password}" id="password" value="#{userView.password}" />
</p:inplace>
<p:message rendered="#{cc.attrs.creating}" for="password" />
<br />
<p:outputLabel rendered="#{cc.attrs.creating}" value="#{i18n['user.passwordcheck']}" for="passwordcheck" />
<br />
<p:inplace rendered="#{cc.attrs.creating}" emptyLabel="#{i18n['user.insert']}">
<p:password validator="#{userValidator.password}" id="passwordcheck" value="#{userView.passwordcheck}" />
</p:inplace>
<p:message rendered="#{cc.attrs.creating}" for="passwordcheck" />
<br />
</p:fieldset>
</h:form>
</h:panelGroup> </h:panelGroup>
</h:panelGrid> </h:panelGrid>
<h:outputText rendered="#{empty incomingView.groupMemberships}" value="#{i18n['placegroupview.noMemberships']}" /> <h:outputText rendered="#{empty incomingView.groupMemberships}" value="#{i18n['placegroupview.noMemberships']}" />
<h:form rendered="#{!empty incomingView.groupMemberships}" id="placelistform"> <h:form rendered="#{!empty incomingView.groupMemberships}" id="placelistform">
<p:fieldset legend="#{i18n['incomingflow.groupmemberships']}" toggleable="true" collapsed="#{fieldsetView.isCollapsed(component.id)}">
<p:ajax event="toggle" listener="#{fieldsetView.handleToggle}" />
<p:dataTable value="#{incomingView.groupMemberships}" var="member" rowStyleClass="#{member.enteredEvent != null ? 'success':''}"> <p:dataTable value="#{incomingView.groupMemberships}" var="member" rowStyleClass="#{member.enteredEvent != null ? 'success':''}">
<p:column> <p:column>
...@@ -114,15 +278,34 @@ ...@@ -114,15 +278,34 @@
<h:outputText value="#{i18n['placegroupview.groupCreator']}" /> <h:outputText value="#{i18n['placegroupview.groupCreator']}" />
</f:facet> </f:facet>
<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']}" /> <h:commandButton rendered="#{empty member.enteredEvent}" action="#{incomingView.givePlace}" value="#{i18n['incomingflow.giveplace']}" />
<h:commandButton rendered="#{!empty member.enteredEvent}" action="#{incomingView.ungivePlace}" value="#{i18n['incomingflow.ungiveplace']}" /> <h:commandButton rendered="#{!empty member.enteredEvent}" action="#{incomingView.ungivePlace}" value="#{i18n['incomingflow.ungiveplace']}" />
</p:column> </p:column>
</p:dataTable> </p:dataTable>
</p:fieldset>
</h:form>
<br />
<br />
<br />
<h:form id="cardcodeform">
<p:fieldset legend="#{i18n['incomingflow.cardCodes']}" toggleable="true" collapsed="#{fieldsetView.isCollapsed(component.id)}">
<p:ajax event="toggle" listener="#{fieldsetView.handleToggle}" />
<p:dataTable id="codetable" value="#{incomingView.cardCodes}" var="code">
<p:column headerText="#{i18n['cardCode.type']}">
<h:outputText value="#{code.type}" />
</p:column>
<p:column headerText="#{i18n['cardCode.code']}">
<h:outputText value="#{code.code}" />
</p:column>
<p:column>
<p:commandButton value="#{i18n['delete']}" actionListener="#{incomingView.deleteSelectedCode}" update=":cardcodeform" />
</p:column>
</p:dataTable>
</p:fieldset>
</h:form> </h:form>
</ui:define> </ui:define>
......
...@@ -31,10 +31,6 @@ ...@@ -31,10 +31,6 @@
<ui:define name="content"> <ui:define name="content">
<infoview:userselector /> <infoview:userselector />
<br />
<br />
<!-- reader:backendReader selectvalue="#{i18n['barcodeReader.readBarcode']}" selectaction="#{infoView.selectUser}" / -->
</ui:define> </ui:define>
......
...@@ -108,10 +108,15 @@ bortalApplication.user.WRITE_ROLES = Modify roles ...@@ -108,10 +108,15 @@ bortalApplication.user.WRITE_ROLES = Modify roles
card.massprint.title = Print all card.massprint.title = Print all
cardCode.code = Koodi
cardCode.type = Tyyppi
cardTemplate.emptyCardTemplate = ---- cardTemplate.emptyCardTemplate = ----
code.inputfield = Sy\u00F6t\u00E4 viivakoodi code.inputfield = Sy\u00F6t\u00E4 viivakoodi
delete = Poista
error.contact = If this happens again, contact Info with the following code: error.contact = If this happens again, contact Info with the following code:
error.error = You have encountered an error. error.error = You have encountered an error.
...@@ -160,15 +165,23 @@ global.save = Save ...@@ -160,15 +165,23 @@ global.save = Save
httpsession.creationTime = Created httpsession.creationTime = Created
incomingView.attach = Liit\u00E4
incomingView.attachDialogTitle = Liit\u00E4 koodi k\u00E4ytt\u00E4j\u00E4\u00E4n
incomingView.cancel = Peruuta
incomingflow.alreadyShowingUser.message = Piipattu k\u00E4ytt\u00E4j\u00E4 on jo n\u00E4kyviss\u00E4 incomingflow.alreadyShowingUser.message = Piipattu k\u00E4ytt\u00E4j\u00E4 on jo n\u00E4kyviss\u00E4
incomingflow.alreadyShowingUser.title = Valmiiksi valittu incomingflow.alreadyShowingUser.title = Valmiiksi valittu
incomingflow.cardCodes = Kortin koodit
incomingflow.codeattached.message = Piipattu koodi liitetty n\u00E4ytett\u00E4v\u00E4\u00E4n korttiin incomingflow.codeattached.message = Piipattu koodi liitetty n\u00E4ytett\u00E4v\u00E4\u00E4n korttiin
incomingflow.codeattached.title = Koodi liittetty incomingflow.codeattached.title = Koodi liittetty
incomingflow.giveplace = Merkitse annetuksi incomingflow.giveplace = Merkitse annetuksi
incomingflow.groupmemberships = Paikkakoodit
incomingflow.invalidbarcode.message = Viivakoodilla ei l\u00F6ytynyt mit\u00E4\u00E4n incomingflow.invalidbarcode.message = Viivakoodilla ei l\u00F6ytynyt mit\u00E4\u00E4n
incomingflow.invalidbarcode.title = virheellinen koodi incomingflow.invalidbarcode.title = virheellinen koodi
incomingflow.printedCard = Kortti incomingflow.printedCard = Kortti
incomingflow.usereditor = K\u00E4ytt\u00E4j\u00E4 incomingflow.usereditor = K\u00E4ytt\u00E4j\u00E4
incomingflow.usereditor.info = Tiedot
incomingflow.usereditor.picture = Kuvanotto
lanEventPrivateProperty.defaultValue = Default value lanEventPrivateProperty.defaultValue = Default value
lanEventPrivateProperty.editProperty = Edit property lanEventPrivateProperty.editProperty = Edit property
......
...@@ -192,6 +192,9 @@ bortalApplication.user.WRITE_ROLES = Modify roles ...@@ -192,6 +192,9 @@ bortalApplication.user.WRITE_ROLES = Modify roles
card.massprint.title = Print all card.massprint.title = Print all
cardCode.code = Code
cardCode.type = Type
cardObjectData.create = Add object data cardObjectData.create = Add object data
cardObjectData.edit = Edit cardObjectData.edit = Edit
cardObjectData.save = Save cardObjectData.save = Save
...@@ -280,6 +283,8 @@ compofile.uploadTime = Upload time ...@@ -280,6 +283,8 @@ compofile.uploadTime = Upload time
content.showContentEditLinks = Show content edit links content.showContentEditLinks = Show content edit links
delete = Delete
discount.active = Active discount.active = Active
discount.amountMax = Max amount discount.amountMax = Max amount
discount.amountMin = Min amount discount.amountMin = Min amount
...@@ -462,13 +467,19 @@ imagefile.file = Imagefile ...@@ -462,13 +467,19 @@ imagefile.file = Imagefile
importuser.file = File importuser.file = File
importuser.template = Template importuser.template = Template
incomingView.attach = Attach
incomingView.attachDialogTitle = Attach code to user
incomingView.cancel = Cancel
incomingflow.alreadyShowingUser.message = We are already showing selected user incomingflow.alreadyShowingUser.message = We are already showing selected user
incomingflow.alreadyShowingUser.title = Already selected incomingflow.alreadyShowingUser.title = Already selected
incomingflow.barcode = Barcode incomingflow.barcode = Barcode
incomingflow.cardCodes = Barcodes in card
incomingflow.changereader = Change Reader incomingflow.changereader = Change Reader
incomingflow.codeattached.message = Code attached to current user's card incomingflow.codeattached.message = Code attached to current user's card
incomingflow.codeattached.title = Code attached incomingflow.codeattached.title = Code attached
incomingflow.giveplace = Mark given incomingflow.giveplace = Mark given
incomingflow.groupmemberships = Group memberships
incomingflow.invalidbarcode.message = Nothing found with barcode, you can now add it to the user incomingflow.invalidbarcode.message = Nothing found with barcode, you can now add it to the user
incomingflow.invalidbarcode.title = Invalid code incomingflow.invalidbarcode.title = Invalid code
incomingflow.multisearch = Multisearch incomingflow.multisearch = Multisearch
...@@ -477,6 +488,8 @@ incomingflow.search = Search ...@@ -477,6 +488,8 @@ incomingflow.search = Search
incomingflow.ungiveplace = Mark not given incomingflow.ungiveplace = Mark not given
incomingflow.userdetails = User details incomingflow.userdetails = User details
incomingflow.usereditor = User incomingflow.usereditor = User
incomingflow.usereditor.info = User
incomingflow.usereditor.picture = Picturetake
infoview.back = Back infoview.back = Back
infoview.computerplace = Computer places infoview.computerplace = Computer places
......
...@@ -193,6 +193,9 @@ bortalApplication.user.WRITE_ROLES = Saa muokata rooleja ...@@ -193,6 +193,9 @@ bortalApplication.user.WRITE_ROLES = Saa muokata rooleja
card.massprint.title = Tulosta kaikki card.massprint.title = Tulosta kaikki
cardCode.code = Koodi
cardCode.type = Tyyppi
cardObjectData.create = Liit\u00E4 kuvia cardObjectData.create = Liit\u00E4 kuvia
cardObjectData.edit = Muokkaa cardObjectData.edit = Muokkaa
cardObjectData.save = Tallenna cardObjectData.save = Tallenna
...@@ -281,6 +284,8 @@ compofile.uploadTime = Tallennusaika ...@@ -281,6 +284,8 @@ compofile.uploadTime = Tallennusaika
content.showContentEditLinks = N\u00E4yt\u00E4 sis\u00E4ll\u00F6nmuokkauslinkit content.showContentEditLinks = N\u00E4yt\u00E4 sis\u00E4ll\u00F6nmuokkauslinkit
delete = Poista
discount.active = Aktiivinen discount.active = Aktiivinen
discount.amountMax = Enimm\u00E4ism\u00E4\u00E4r\u00E4 discount.amountMax = Enimm\u00E4ism\u00E4\u00E4r\u00E4
discount.amountMin = V\u00E4himm\u00E4ism\u00E4\u00E4r\u00E4 discount.amountMin = V\u00E4himm\u00E4ism\u00E4\u00E4r\u00E4
...@@ -470,13 +475,19 @@ imagefile.file = Kuvatiedosto ...@@ -470,13 +475,19 @@ imagefile.file = Kuvatiedosto
importuser.file = Tiedosto importuser.file = Tiedosto
importuser.template = Malli importuser.template = Malli
incomingView.attach = Liit\u00E4
incomingView.attachDialogTitle = Liit\u00E4 koodi k\u00E4ytt\u00E4j\u00E4\u00E4n
incomingView.cancel = Peruuta
incomingflow.alreadyShowingUser.message = Piipattu k\u00E4ytt\u00E4j\u00E4 on jo n\u00E4kyviss\u00E4 incomingflow.alreadyShowingUser.message = Piipattu k\u00E4ytt\u00E4j\u00E4 on jo n\u00E4kyviss\u00E4
incomingflow.alreadyShowingUser.title = Valmiiksi valittu incomingflow.alreadyShowingUser.title = Valmiiksi valittu
incomingflow.barcode = Viivakoodi incomingflow.barcode = Viivakoodi
incomingflow.cardCodes = Korttiin liitetyt koodit
incomingflow.changereader = Vaihda lukijaa incomingflow.changereader = Vaihda lukijaa
incomingflow.codeattached.message = Piipattu koodi liitetty aktiiviseen k\u00E4ytt\u00E4j\u00E4\u00E4n incomingflow.codeattached.message = Piipattu koodi liitetty aktiiviseen k\u00E4ytt\u00E4j\u00E4\u00E4n
incomingflow.codeattached.title = Koodi liitetty incomingflow.codeattached.title = Koodi liitetty
incomingflow.giveplace = Merkitse annetuksi incomingflow.giveplace = Merkitse annetuksi
incomingflow.groupmemberships = Konepaikat sek\u00E4 liput
incomingflow.invalidbarcode.message = Piipatulla koodilla ei l\u00F6ytynyt mit\u00E4\u00E4n, voit lis\u00E4t\u00E4 koodin k\u00E4ytt\u00E4j\u00E4\u00E4n incomingflow.invalidbarcode.message = Piipatulla koodilla ei l\u00F6ytynyt mit\u00E4\u00E4n, voit lis\u00E4t\u00E4 koodin k\u00E4ytt\u00E4j\u00E4\u00E4n
incomingflow.invalidbarcode.title = Virheellinen koodi incomingflow.invalidbarcode.title = Virheellinen koodi
incomingflow.multisearch = Monihaku incomingflow.multisearch = Monihaku
...@@ -485,6 +496,8 @@ incomingflow.search = Etsi ...@@ -485,6 +496,8 @@ incomingflow.search = Etsi
incomingflow.ungiveplace = Ei olekkaan annettu incomingflow.ungiveplace = Ei olekkaan annettu
incomingflow.userdetails = K\u00E4ytt\u00E4j\u00E4n tiedot incomingflow.userdetails = K\u00E4ytt\u00E4j\u00E4n tiedot
incomingflow.usereditor = K\u00E4ytt\u00E4j\u00E4 incomingflow.usereditor = K\u00E4ytt\u00E4j\u00E4
incomingflow.usereditor.info = K\u00E4vij\u00E4
incomingflow.usereditor.picture = Kuvanotto
index.title = Etusivu index.title = Etusivu
......
...@@ -122,9 +122,9 @@ public class UserView extends GenericCDIView { ...@@ -122,9 +122,9 @@ public class UserView extends GenericCDIView {
printedCard = card; printedCard = card;
} }
/** /**
* This is the user that is currently logged in. * This is the user that is currently logged in.
*
* @return * @return
*/ */
@Produces @Produces
...@@ -154,9 +154,10 @@ public class UserView extends GenericCDIView { ...@@ -154,9 +154,10 @@ public class UserView extends GenericCDIView {
} }
/** /**
* This is the user we are currently editing, if that is not found we user current user * This is the user we are currently editing, if that is not found we user
* current user
*
* @return * @return
*/ */
@Produces @Produces
...@@ -171,7 +172,6 @@ public class UserView extends GenericCDIView { ...@@ -171,7 +172,6 @@ public class UserView extends GenericCDIView {
canSave = getCurrentUser().equals(user) || permbean.hasPermission(UserPermission.MODIFY); canSave = getCurrentUser().equals(user) || permbean.hasPermission(UserPermission.MODIFY);
} }
return user; return user;
} }
...@@ -376,8 +376,10 @@ public class UserView extends GenericCDIView { ...@@ -376,8 +376,10 @@ public class UserView extends GenericCDIView {
return null; return null;
} }
PrintedCard card = null;
// still there, we can get real card and update it's barcodes // still there, we can get real card and update it's barcodes
PrintedCard card = cardBean.checkPrintedCard(user); card = cardBean.checkPrintedCard(user);
readerbean.assocCodeToCard(event, card); readerbean.assocCodeToCard(event, card);
...@@ -391,7 +393,7 @@ public class UserView extends GenericCDIView { ...@@ -391,7 +393,7 @@ public class UserView extends GenericCDIView {
public String createUserAdduserView() { public String createUserAdduserView() {
userbean.createNewUser(user, getPassword()); userbean.createNewUser(user, getPassword());
//authView.executeAdduserAutoLogin(user, getPassword()); // authView.executeAdduserAutoLogin(user, getPassword());
return "/admin/adduser/update"; return "/admin/adduser/update";
} }
...@@ -414,8 +416,9 @@ public class UserView extends GenericCDIView { ...@@ -414,8 +416,9 @@ public class UserView extends GenericCDIView {
} }
/** /**
* This is user what is currently on "user" -variable, you should almost newer use this. * This is user what is currently on "user" -variable, you should almost
* Use getCurrentUser() -instead. * newer use this. Use getCurrentUser() -instead.
*
* @return * @return
*/ */
public EventUser getUser() { public EventUser getUser() {
......
...@@ -20,6 +20,7 @@ import fi.codecrew.moya.beans.PlaceGroupBeanLocal; ...@@ -20,6 +20,7 @@ import fi.codecrew.moya.beans.PlaceGroupBeanLocal;
import fi.codecrew.moya.beans.UserBeanLocal; import fi.codecrew.moya.beans.UserBeanLocal;
import fi.codecrew.moya.enums.CardState; import fi.codecrew.moya.enums.CardState;
import fi.codecrew.moya.enums.apps.UserPermission; import fi.codecrew.moya.enums.apps.UserPermission;
import fi.codecrew.moya.model.CardCode;
import fi.codecrew.moya.model.EventUser; import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.GroupMembership; import fi.codecrew.moya.model.GroupMembership;
import fi.codecrew.moya.model.PrintedCard; import fi.codecrew.moya.model.PrintedCard;
...@@ -36,8 +37,7 @@ public class IncomingView extends GenericCDIView { ...@@ -36,8 +37,7 @@ public class IncomingView extends GenericCDIView {
private static final long serialVersionUID = 802344850073689859L; private static final long serialVersionUID = 802344850073689859L;
private static final Logger logger = LoggerFactory private static final Logger logger = LoggerFactory.getLogger(IncomingView.class);
.getLogger(IncomingView.class);
/* /*
* @Inject * @Inject
* *
...@@ -73,9 +73,13 @@ public class IncomingView extends GenericCDIView { ...@@ -73,9 +73,13 @@ public class IncomingView extends GenericCDIView {
@EJB @EJB
private PlaceGroupBeanLocal placegroupBean; private PlaceGroupBeanLocal placegroupBean;
@EJB
private CardTemplateBeanLocal cardTemplateBean;
// private String searchBarcode = ""; // private String searchBarcode = "";
private ListDataModel<GroupMembership> memberlist = null; private ListDataModel<GroupMembership> memberlist = null;
private ListDataModel<CardCode> cardCodes;
public void initView() { public void initView() {
super.beginConversation(); super.beginConversation();
...@@ -179,6 +183,7 @@ public class IncomingView extends GenericCDIView { ...@@ -179,6 +183,7 @@ public class IncomingView extends GenericCDIView {
return; return;
} }
cardBean.giveCard(userview.getSelectedUser(), autoGivePlaces); cardBean.giveCard(userview.getSelectedUser(), autoGivePlaces);
userview.attachCodeToCard(eventToAttach); userview.attachCodeToCard(eventToAttach);
...@@ -186,10 +191,16 @@ public class IncomingView extends GenericCDIView { ...@@ -186,10 +191,16 @@ public class IncomingView extends GenericCDIView {
showAttachDialog = false; showAttachDialog = false;
userview.setUser(null); // refresh user userview.setUser(null); // refresh user
userview.setPrintedCard(null); // refresh card
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(I18n.get("incomingflow.codeattached.title"), I18n.get("incomingflow.codeattached.message"))); FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(I18n.get("incomingflow.codeattached.title"), I18n.get("incomingflow.codeattached.message")));
} }
public boolean isShowAttachDialog() { public boolean isShowAttachDialog() {
return showAttachDialog; return showAttachDialog;
} }
...@@ -198,23 +209,27 @@ public class IncomingView extends GenericCDIView { ...@@ -198,23 +209,27 @@ public class IncomingView extends GenericCDIView {
showAttachDialog = false; showAttachDialog = false;
} }
/* public String selectUser() {
* public String selectUser() {
* ReaderEvent event = readerView.getReaderEvent();
* ReaderEvent event = readerView.getReaderEvent();
* if (event == null)
* if(event == null) return null; return null;
*
* EventUser user = event.getUser(); memberlist = null; EventUser user = event.getUser();
* memberlist = null;
* if (user == null) { logger.debug("got no user from barcode"); return
* null; } if (user == null) {
* logger.debug("got no user from barcode");
* logger.debug("got user from barcode"); return null;
* }
* userview.setUser(user); //userview.prepareCardDownload(); return
* "incoming"; } logger.debug("got user from barcode");
*/
userview.setUser(user);
userview.prepareCardDownload();
return "incoming";
}
public CardState getPrintedStatus() { public CardState getPrintedStatus() {
PrintedCard card = cardBean.checkPrintedCard(userview.getSelectedUser()); PrintedCard card = cardBean.checkPrintedCard(userview.getSelectedUser());
...@@ -237,6 +252,22 @@ public class IncomingView extends GenericCDIView { ...@@ -237,6 +252,22 @@ public class IncomingView extends GenericCDIView {
return memberlist; return memberlist;
} }
public ListDataModel<CardCode> getCardCodes() {
cardCodes = new ListDataModel<CardCode>(userview.getPrintedCard().getCardCodes());
return cardCodes;
}
public void deleteSelectedCode() {
if (cardCodes != null && cardCodes.isRowAvailable()) {
CardCode code = cardCodes.getRowData();
cardTemplateBean.removeCardCode(code);
// flush that fucker
userview.setPrintedCard(null);
}
}
public String givePlace() { public String givePlace() {
GroupMembership row = memberlist.getRowData(); GroupMembership row = memberlist.getRowData();
if (row != null) { if (row != null) {
......
package fi.codecrew.moya.web.helper;
import java.util.HashMap;
import javax.enterprise.context.SessionScoped;
import javax.inject.Named;
import org.primefaces.event.ToggleEvent;
import org.primefaces.model.Visibility;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.codecrew.moya.web.cdiview.GenericCDIView;
@Named
@SessionScoped
public class fieldsetView extends GenericCDIView {
private static final Logger logger = LoggerFactory.getLogger(fieldsetView.class);
private static final long serialVersionUID = 5L;
private HashMap<String, Boolean> collapseStates = new HashMap<String, Boolean>();
public boolean isCollapsed(String id) {
if(collapseStates.containsKey(id) && collapseStates.get(id).booleanValue()) {
return true;
}
return false;
}
public void handleToggle(ToggleEvent event) {
logger.info("setting collapsed for id "+event.getComponent().getId());
logger.info("collapsed value is "+event.getVisibility());
collapseStates.put(event.getComponent().getId(), Boolean.valueOf(event.getVisibility() == Visibility.HIDDEN));
}
}
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!