Commit 863ff474 by Tuomas Riihimäki

Merge branch 'master' of codecrew.fi:bortal

2 parents 2881c83a a985f63e
...@@ -75,5 +75,10 @@ public class FoodWaveBean implements FoodWaveBeanLocal { ...@@ -75,5 +75,10 @@ public class FoodWaveBean implements FoodWaveBeanLocal {
public FoodWaveTemplate findTemplate(Integer templateId) { public FoodWaveTemplate findTemplate(Integer templateId) {
return fwtFacade.find(templateId); return fwtFacade.find(templateId);
} }
@Override
public List<FoodWave> getEventFoodWaves() {
return foodWaveFacade.getEventFoodWaves();
}
} }
...@@ -21,24 +21,28 @@ import fi.insomnia.bortal.model.OrgRole_; ...@@ -21,24 +21,28 @@ import fi.insomnia.bortal.model.OrgRole_;
public class FoodWaveFacade extends IntegerPkGenericFacade<FoodWave> { public class FoodWaveFacade extends IntegerPkGenericFacade<FoodWave> {
@EJB @EJB
EventBeanLocal eventBean; EventBeanLocal eventBean;
public FoodWaveFacade() { public FoodWaveFacade() {
super(FoodWave.class); super(FoodWave.class);
} }
public List<FoodWave> getEventFoodWaves() {
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<FoodWave> cq = cb.createQuery(FoodWave.class);
Root<FoodWave> root = cq.from(FoodWave.class);
cq.where( cb.equal(root.get(FoodWave_.template).get(FoodWaveTemplate_.event), eventBean.getCurrentEvent()));
return getEm().createQuery(cq).getResultList();
}
public List<FoodWave> getOpenFoodWaves() { public List<FoodWave> getOpenFoodWaves() {
CriteriaBuilder cb = getEm().getCriteriaBuilder(); CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<FoodWave> cq = cb.createQuery(FoodWave.class); CriteriaQuery<FoodWave> cq = cb.createQuery(FoodWave.class);
Root<FoodWave> root = cq.from(FoodWave.class); Root<FoodWave> root = cq.from(FoodWave.class);
cq.where(cb.greaterThan(root.get(FoodWave_.time), Calendar.getInstance()), cq.where(cb.greaterThan(root.get(FoodWave_.time), Calendar.getInstance()), cb.isFalse(root.get(FoodWave_.closed)), cb.equal(root.get(FoodWave_.template).get(FoodWaveTemplate_.event), eventBean.getCurrentEvent()));
cb.isFalse(root.get(FoodWave_.closed)),
cb.equal(root.get(FoodWave_.template).get(FoodWaveTemplate_.event), eventBean.getCurrentEvent())
);
return getEm().createQuery(cq).getResultList(); return getEm().createQuery(cq).getResultList();
} }
......
...@@ -25,4 +25,6 @@ public interface FoodWaveBeanLocal { ...@@ -25,4 +25,6 @@ public interface FoodWaveBeanLocal {
public FoodWave findFoodwave(Integer foodwaveId); public FoodWave findFoodwave(Integer foodwaveId);
public FoodWave merge(FoodWave foodWave); public FoodWave merge(FoodWave foodWave);
public List<FoodWave> getEventFoodWaves();
} }
...@@ -50,6 +50,9 @@ public class FoodWave extends GenericEntity { ...@@ -50,6 +50,9 @@ public class FoodWave extends GenericEntity {
@OneToMany(mappedBy = "foodWave") @OneToMany(mappedBy = "foodWave")
private List<AccountEvent> accountEvents; private List<AccountEvent> accountEvents;
@OneToMany(mappedBy = "foodwave")
private List<BillLine> billLines;
@ManyToOne @ManyToOne
@JoinColumn(name = "template_id", referencedColumnName = "id", nullable = false) @JoinColumn(name = "template_id", referencedColumnName = "id", nullable = false)
private FoodWaveTemplate template; private FoodWaveTemplate template;
...@@ -144,10 +147,30 @@ public class FoodWave extends GenericEntity { ...@@ -144,10 +147,30 @@ public class FoodWave extends GenericEntity {
return true; return true;
} }
public List<BillLine> getBillLines() {
return billLines;
}
public Integer getMaximumFoods() { public Integer getMaximumFoods() {
return maximumFoods; return maximumFoods;
} }
public void setBillLines(List<BillLine> billLines) {
this.billLines = billLines;
}
public int getReservedCount() {
int retval = 0;
if (getAccountEvents() != null) {
retval += getAccountEvents().size();
}
if (getBillLines() != null) {
retval += getBillLines().size();
}
return retval;
}
public void setMaximumFoods(Integer maximumFoods) { public void setMaximumFoods(Integer maximumFoods) {
this.maximumFoods = maximumFoods; this.maximumFoods = maximumFoods;
} }
......
...@@ -7,6 +7,7 @@ package fi.insomnia.bortal.model; ...@@ -7,6 +7,7 @@ package fi.insomnia.bortal.model;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Column; import javax.persistence.Column;
import javax.persistence.Entity; import javax.persistence.Entity;
import javax.persistence.JoinColumn; import javax.persistence.JoinColumn;
...@@ -27,7 +28,7 @@ import org.eclipse.persistence.annotations.OptimisticLockingType; ...@@ -27,7 +28,7 @@ import org.eclipse.persistence.annotations.OptimisticLockingType;
@Table(name = "food_wave_templates") @Table(name = "food_wave_templates")
@OptimisticLocking(type = OptimisticLockingType.CHANGED_COLUMNS) @OptimisticLocking(type = OptimisticLockingType.CHANGED_COLUMNS)
public class FoodWaveTemplate extends GenericEntity { public class FoodWaveTemplate extends GenericEntity {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private static final String EVENT_ID = "event_id"; private static final String EVENT_ID = "event_id";
...@@ -42,7 +43,7 @@ public class FoodWaveTemplate extends GenericEntity { ...@@ -42,7 +43,7 @@ public class FoodWaveTemplate extends GenericEntity {
@Column(name = "template_description") @Column(name = "template_description")
private String description; private String description;
@ManyToMany(mappedBy = "foodWaveTemplates") @ManyToMany(mappedBy = "foodWaveTemplates", cascade=CascadeType.ALL)
private List<Product> products; private List<Product> products;
@OneToMany(mappedBy = "template") @OneToMany(mappedBy = "template")
......
...@@ -9,8 +9,8 @@ ...@@ -9,8 +9,8 @@
</session-config> </session-config>
<context-param> <context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name> <param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Production</param-value> <!-- <param-value>Production</param-value> -->
<!--<param-value>Development</param-value>--> <param-value>Development</param-value>
</context-param> </context-param>
<context-param> <context-param>
......
<!DOCTYPE html <!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"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" <html xmlns="http://www.w3.org/1999/xhtml"
xmlns:products="http://java.sun.com/jsf/composite/cditools/products" xmlns:users="http://java.sun.com/jsf/composite/cditools/user" xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:p="http://primefaces.org/ui"> 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:products="http://java.sun.com/jsf/composite/cditools/products"
xmlns:users="http://java.sun.com/jsf/composite/cditools/user"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:p="http://primefaces.org/ui">
<h:body> <h:body>
<ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml"> <ui:composition
template="/layout/#{sessionHandler.layout}/template.xhtml">
<f:metadata> <f:metadata>
<f:event type="preRenderView" listener="#{foodWaveView.initCreateTemplate()}" /> <f:event type="preRenderView"
listener="#{foodWaveView.initCreateTemplate()}" />
</f:metadata> </f:metadata>
<ui:define name="title"> <ui:define name="title">
...@@ -16,48 +24,102 @@ ...@@ -16,48 +24,102 @@
<ui:define name="content"> <ui:define name="content">
<h:form> <h:form>
<p:wizard> <p:wizard>
<p:tab id="basicinfo" title="#{i18n['foodwavetemplate.basicinfo']}"> <p:tab id="basicinfo" title="#{i18n['foodwavetemplate.basicinfo']}">
<h:panelGrid columns="3"> <h:panelGrid columns="3">
<h:outputLabel for="name" value="#{i18n['foodwavetemplate.name']}" /> <h:outputLabel for="name"
<h:inputText id="name" value="#{foodWaveView.template.name}" /> value="#{i18n['foodwavetemplate.name']}" />
<h:message for="name" /> <h:inputText id="name" value="#{foodWaveView.template.name}"
required="true" requiredMessage="Name required" />
<h:outputLabel for="description" value="#{i18n['foodwavetemplate.description']}" /> <h:message for="name" />
<h:inputText id="description" value="#{foodWaveView.template.description}" />
<h:message for="description" /> <h:outputLabel for="description"
</h:panelGrid> value="#{i18n['foodwavetemplate.description']}" />
<h:inputText id="description"
value="#{foodWaveView.template.description}" required="true"
requiredMessage="Description required" />
<h:message for="description" />
</h:panelGrid>
</p:tab> </p:tab>
<p:tab id="selectproducts" title="#{i18n['foodwavetemplate.selectproducts']}"> <p:tab id="selectproducts"
title="#{i18n['foodwavetemplate.selectproducts']}">
<h:messages /> <h:messages />
<h:panelGrid columns="4"> <h:panelGrid columns="4">
<h:outputText value="#{i18n['foodwavetemplate.productname']}" /> <h:outputText value="#{i18n['foodwavetemplate.productname']}" />
<h:outputText value="#{i18n['foodwavetemplate.productdescription']}" /> <h:outputText
value="#{i18n['foodwavetemplate.productdescription']}" />
<h:outputText value="#{i18n['foodwavetemplate.price']}" /> <h:outputText value="#{i18n['foodwavetemplate.price']}" />
<h:outputText value="&nbsp;" /> <h:outputText value="&nbsp;" />
<h:inputText id="productname"
value="#{foodWaveView.currentProduct.name}" />
<h:inputText id="productdescription"
value="#{foodWaveView.currentProduct.description}" />
<h:inputText id="price"
value="#{foodWaveView.currentProduct.price}" />
<p:commandButton value="#{i18n['foodwavetemplate.addproduct']}"
actionListener="#{foodWaveView.addProductToTemplate}"
update="productTable" />
<h:inputText id="productname" value="#{foodWaveView.currentProduct.name}" />
<h:inputText id="productdescription" value="#{foodWaveView.currentProduct.name}" />
<h:inputText id="price" value="#{foodWaveView.currentProduct.price}" />
<p:commandButton value="#{i18n['foodwavetemplate.addproduct']}" actionListener="#{foodWaveView.addProductToTemplate}" update="productTable" />
</h:panelGrid> </h:panelGrid>
<p:dataTable name="productTable" id="productTable" value="#{foodWaveView.template.products}" var="product"> <p:dataTable name="productTable" id="productTable"
value="#{foodWaveView.template.products}" var="product"
editable="true">
<p:column headerText="#{i18n['foodwavetemplate.productname']}"> <p:column headerText="#{i18n['foodwavetemplate.productname']}">
<h:outputText value="#{product.name}" /> <p:cellEditor>
<f:facet name="output">
<h:outputText value="#{product.name}" />
</f:facet>
<f:facet name="input">
<p:inputText value="#{product.name}" style="width:100%"
required="true" requiredMessage="Name required" />
</f:facet>
</p:cellEditor>
</p:column> </p:column>
<p:column headerText="#{i18n['foodwavetemplate.productdescription']}"> <p:column
<h:outputText value="#{product.name}" /> headerText="#{i18n['foodwavetemplate.productdescription']}">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{product.description}" />
</f:facet>
<f:facet name="input">
<p:inputText value="#{product.description}" style="width:100%"
required="true" requiredMessage="Description required" />
</f:facet>
</p:cellEditor>
</p:column> </p:column>
<p:column headerText="#{i18n['foodwavetemplate.price']}"> <p:column headerText="#{i18n['foodwavetemplate.price']}">
<h:outputText value="#{product.price}" /> <p:cellEditor>
<f:facet name="output">
<h:outputText value="#{product.price}" />
</f:facet>
<f:facet name="input">
<p:inputText value="#{product.price}" style="width:100%"
required="true" requiredMessage="Price required" />
</f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="#{i18n['foodwavetemplate.editRow']}"
style="width:20px">
<p:rowEditor />
</p:column>
<p:column headerText="#{i18n['foodwavetemplate.actions']}"
style="width:20px;">
<p:commandButton
value="#{i18n['foodwavetemplate.removeFromList']}"
action="#{foodWaveView.removeProductFromList(product)}"
update="productTable" />
</p:column> </p:column>
</p:dataTable> </p:dataTable>
<h:commandButton action="#{foodWaveView.saveTemplate()}"
value="#{i18n['foodwavetemplate.savetemplate']}" />
</p:tab> </p:tab>
</p:wizard> </p:wizard>
</h:form> </h:form>
</ui:define> </ui:define>
......
...@@ -2,13 +2,12 @@ ...@@ -2,13 +2,12 @@
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"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" <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:products="http://java.sun.com/jsf/composite/cditools/products" xmlns:users="http://java.sun.com/jsf/composite/cditools/user" xmlns:c="http://java.sun.com/jsp/jstl/core"> xmlns:products="http://java.sun.com/jsf/composite/cditools/products" xmlns:users="http://java.sun.com/jsf/composite/cditools/user" xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:p="http://primefaces.org/ui">
<h:body> <h:body>
<ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml"> <ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml">
<f:metadata> <f:metadata>
<f:event type="preRenderView" listener="#{foodWaveView.initEditTemplate()}" /> <f:event type="preRenderView" listener="#{foodWaveView.initEditTemplate()}" />
<f:viewParam name="id" value="#{userView.templateId}" /> <f:viewParam name="id" value="#{foodWaveView.templateId}" />
</f:metadata> </f:metadata>
<ui:define name="title"> <ui:define name="title">
...@@ -17,18 +16,24 @@ ...@@ -17,18 +16,24 @@
<ui:define name="content"> <ui:define name="content">
<h:form> <h:form>
<h:panelGrid columns="3"> <p:panel header="#{i18n['foodwavetemplate.edit']}">
<h:outputLabel for="name" value="#{i18n['foodwavetemplate.name']}" /> <h:panelGrid columns="3">
<h:inputText id="name" value="#{foodWaveView.template.name}" /> <h:outputLabel for="name" value="#{i18n['foodwavetemplate.name']}" />
<h:message for="name" /> <h:inputText id="name" value="#{foodWaveView.template.name}" />
</h:panelGrid> <h:message for="name" />
<div>
<h:inputTextarea value="#{foodWaveView.template.description}" /> <h:outputLabel for="desc" value="#{i18n['foodwavetemplate.description']}" />
</div> <h:inputText id="desc" value="#{foodWaveView.template.description}" />
<h:commandButton action="#{foodWaveView.saveTemplate()}" value="#{i18n['foowavetemplate.save']}" /> <h:message for="desc" />
<h:commandButton action="#{foodWaveView.createFoodwave()}" value="#{i18n['foodwavetemplate.createFoodwave']}" />
<h:outputText value=" " />
<h:commandButton action="#{foodWaveView.saveTemplate()}" value="#{i18n['foodwavetemplate.save']}" />
</h:panelGrid>
</p:panel>
<p:panel header="#{i18n['foodwavetemplate.createwave']}">
<p:calendar value="#{foodWaveView.startDate}" pattern="dd.MM.yyyy HH:mm" />
<h:commandButton action="#{foodWaveView.createFoodwave()}" value="#{i18n['foodwavetemplate.createFoodwave']}" />
</p:panel>
</h:form> </h:form>
<ui:fragment> <ui:fragment>
......
...@@ -16,16 +16,16 @@ ...@@ -16,16 +16,16 @@
<ui:define name="content"> <ui:define name="content">
<h:dataTable var="templ" value="#{foodWaveView.templates}"> <h:dataTable var="foodwaveTemplate" value="#{foodWaveView.templates}">
<h:column> <h:column>
<f:facet name="header"> <f:facet name="header">
<h:outputText value="#{i18n['foodwaveTemplate.name']}" /> <h:outputText value="#{i18n['foodwaveTemplate.name']}" />
</f:facet> </f:facet>
<h:outputText value="#{templ.name}" /> <h:outputText value="#{foodwaveTemplate.name}" />
</h:column> </h:column>
<h:column> <h:column>
<h:link outcome="/foodadmin/editTemplate"> <h:link value="LOL" outcome="/foodadmin/editTemplate">
<f:param value="#{templ.id}" /> <f:param value="#{foodwaveTemplate.id}" name="id"/>
</h:link> </h:link>
</h:column> </h:column>
</h:dataTable> </h:dataTable>
......
<!DOCTYPE html
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:foodwave="http://java.sun.com/jsf/composite/cditools/foodwave" xmlns:users="http://java.sun.com/jsf/composite/cditools/user" xmlns:c="http://java.sun.com/jsp/jstl/core">
<h:body>
<ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml">
<f:metadata>
<f:event type="preRenderView" listener="#{foodWaveView.initFoodwaveManagerList}" />
</f:metadata>
<ui:define name="title">
<h1>fixme</h1>
</ui:define>
<ui:define name="content">
<h:dataTable columnClasses="nowrap,numalign,numalign,nowrap,numalign" styleClass="bordertable" value="#{foodWaveView.foodWaves}" var="foodwave">
<h:column >
<f:facet name="header">
<h:outputLabel id="name" value="${i18n['foodWave.name']}" />
</f:facet>
<h:link outcome="/foodmanager/listOrders" value="#{foodwave.name}">
<f:param name="foodwaveid" value="#{foodwave.id}" />
</h:link>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="${i18n['foodWave.template.name']}" />
</f:facet>
<h:link outcome="/foodmanager/listOrders" value="#{foodwave.template.name}">
<f:param name="foodwaveid" value="#{foodwave.id}" />
</h:link>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="${i18n['foodWave.orders']}" />
</f:facet>
<h:link outcome="/foodmanager/listOrders" value="#{foodwave.accountEvents.size()}">
<f:param name="foodwaveid" value="#{foodwave.id}" />
</h:link>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="${i18n['foodWave.unconfirmedOrders']}" />
</f:facet>
<h:link outcome="/foodmanager/listOrders" value="#{foodwave.billLines.size()}">
<f:param name="foodwaveid" value="#{foodwave.id}" />
</h:link>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="${i18n['foodWave.totalReserved']}" />
</f:facet>
<h:link outcome="/foodmanager/listOrders" value="#{foodwave.reservedCount}">
<f:param name="foodwaveid" value="#{foodwave.id}" />
</h:link>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="${i18n['foodWave.time']}" />
</f:facet>
<h:link outcome="/foodmanager/listOrders"
value="#{foodwave.time.time}">
<f:param name="foodwaveid" value="#{foodwave.id}" />
</h:link>
</h:column>
</h:dataTable>
</ui:define>
</ui:composition>
</h:body>
</html>
\ No newline at end of file
<!DOCTYPE html
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:foodwave="http://java.sun.com/jsf/composite/cditools/foodwave" xmlns:users="http://java.sun.com/jsf/composite/cditools/user" xmlns:c="http://java.sun.com/jsp/jstl/core">
<h:body>
<ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml">
<f:metadata>
<f:event type="preRenderView" listener="#{foodWaveView.initFoodwaveBillLineList}" />
<f:event type="preRenderView" listener="#{foodWaveView.initFoodwaveAccountEventList}" />
</f:metadata>
<ui:define name="title">
<h1>fixme</h1>
</ui:define>
<ui:define name="content">
<h1><h:outputLabel id="name" value="${i18n['foodWave.billLines']}" /></h1>
<h:dataTable columnClasses="nowrap,numalign,numalign,nowrap,numalign" styleClass="bordertable" value="#{foodWaveView.billLines}" var="billLine">
<h:column >
<f:facet name="header">
<h:outputLabel id="name" value="${i18n['billLine.name']}" />
</f:facet>
<h:link outcome="/foodmanager/listOrders" value="#{billLine.name}">
<f:param name="foodwaveid" value="#{foodwave.id}" />
</h:link>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="${i18n['billLine.quantiny']}" />
</f:facet>
<h:link outcome="/foodmanager/listOrders"
value="#{foodwave.template.name}">
<f:param name="foodwaveid" value="#{billLine.quantiny}" />
</h:link>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="${i18n['billLine.unitprice']}" />
</f:facet>
<h:link outcome="/foodmanager/listOrders" value="#{billLine.unitprice}">
<f:param name="foodwaveid" value="#{foodwave.id}" />
</h:link>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="${i18n['foodWave.unconfirmedOrders']}" />
</f:facet>
<h:link outcome="/foodmanager/listOrders" value="#{foodwave.billLines.size()}">
<f:param name="foodwaveid" value="#{foodwave.id}" />
</h:link>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="${i18n['foodWave.totalReserved']}" />
</f:facet>
<h:link outcome="/foodmanager/listOrders" value="#{foodwave.reservedCount}">
<f:param name="foodwaveid" value="#{foodwave.id}" />
</h:link>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="${i18n['foodWave.time']}" />
</f:facet>
<h:link outcome="/foodmanager/listOrders"
value="#{foodwave.time.time}">
<f:param name="foodwaveid" value="#{foodwave.id}" />
</h:link>
</h:column>
</h:dataTable>
</ui:define>
</ui:composition>
</h:body>
</html>
\ No newline at end of file
#Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net) #Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net)
#Bill number #Bill number
# Validationmessages # Validationmessages
actionlog.create.header = Create new actionmessage actionlog.create.header = Create new actionmessage
actionlog.create.message = Message actionlog.create.message = Message
actionlog.create.role = Target role actionlog.create.role = Target role
actionlog.create.submitbutton = Send actionlog.create.submitbutton = Send
actionlog.create.taskradio = Task actionlog.create.taskradio = Task
actionlog.crew = Crew actionlog.crew = Crew
actionlog.message = Event actionlog.message = Event
actionlog.messagelist.description = You can follow and create new action messages in this view actionlog.messagelist.description = You can follow and create new action messages in this view
actionlog.messagelist.header = Messagelist actionlog.messagelist.header = Messagelist
actionlog.state = State actionlog.state = State
actionlog.task = Task actionlog.task = Task
actionlog.tasklist.header = Tasklist actionlog.tasklist.header = Tasklist
actionlog.time = Time actionlog.time = Time
actionlog.user = User actionlog.user = User
bill.billMarkedPaidMail.message = Your deposit number {0} has been marked as paid. bill.billMarkedPaidMail.message = Your deposit number {0} has been marked as paid.
bill.billMarkedPaidMail.subject = [Streamparty] Your credits have been updated bill.billMarkedPaidMail.subject = [Streamparty] Your credits have been updated
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.
eventorg.create = Create eventorg.create = Create
eventorg.edit = Edit eventorg.edit = Edit
global.cancel = Cancel global.cancel = Cancel
global.copyright = Codecrew Ry global.copyright = Codecrew Ry
global.infomail = info@streamparty.org global.infomail = info@streamparty.org
global.notAuthorizedExecute = You are not authorized to execute that!! global.notAuthorizedExecute = You are not authorized to execute that!!
global.notauthorized = You don't have enough rights to enter this site. global.notauthorized = You don't have enough rights to enter this site.
global.save = Save global.save = Save
global.webpage = http://www.streamparty.org global.webpage = http://www.streamparty.org
httpsession.creationTime = Created httpsession.creationTime = Created
login.login = Login login.login = Login
login.logout = Logout login.logout = Logout
login.logoutmessage = You have logged out of the system login.logoutmessage = You have logged out of the system
login.password = Password login.password = Password
login.submit = Login login.submit = Login
login.username = Username login.username = Username
loginerror.header = Login failed loginerror.header = Login failed
loginerror.message = Username of password incorrect. loginerror.message = Username of password incorrect.
loginerror.resetpassword = Reset password loginerror.resetpassword = Reset password
passwordChanged.body = You can now login with the new password. passwordChanged.body = You can now login with the new password.
passwordChanged.header = Password changed successfully. passwordChanged.header = Password changed successfully.
passwordReset.errorChanging = Unexpected error whilst password reset. Contact your administrator. passwordReset.errorChanging = Unexpected error whilst password reset. Contact your administrator.
passwordReset.hashNotFound = Password change token has expired. Please send the query again. passwordReset.hashNotFound = Password change token has expired. Please send the query again.
permissiondenied.alreadyLoggedIn = You don't have enough rights permissiondenied.alreadyLoggedIn = You don't have enough rights
permissiondenied.header = Access denied permissiondenied.header = Access denied
permissiondenied.notLoggedIn = You don't have enough rights to enter this site. permissiondenied.notLoggedIn = You don't have enough rights to enter this site.
resetMail.body = You can change a forgotten password by inserting your username to the field below. A link where you can change the password will be sent to the email address associated to that. resetMail.body = You can change a forgotten password by inserting your username to the field below. A link where you can change the password will be sent to the email address associated to that.
resetMail.header = Reset lost password resetMail.header = Reset lost password
resetMail.send = Send email resetMail.send = Send email
resetMail.username = Username resetMail.username = Username
resetmailSent.body = Email has been sent containing a link where you can change the password. resetmailSent.body = Email has been sent containing a link where you can change the password.
resetmailSent.header = Email sent resetmailSent.header = Email sent
#Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net) #Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net)
#Bill number #Bill number
# Validationmessages # Validationmessages
actionlog.create.header = Luo uusi ActionMessage actionlog.create.header = Luo uusi ActionMessage
actionlog.create.message = Viesti actionlog.create.message = Viesti
actionlog.create.role = Kohderooli actionlog.create.role = Kohderooli
actionlog.create.submitbutton = L\u00E4het\u00E4 actionlog.create.submitbutton = L\u00E4het\u00E4
actionlog.create.taskradio = Teht\u00E4v\u00E4 actionlog.create.taskradio = Teht\u00E4v\u00E4
actionlog.crew = Crew actionlog.crew = Crew
actionlog.message = Tapahtuma actionlog.message = Tapahtuma
actionlog.messagelist.description = Voit seurata sek\u00E4 luoda uusia ActionMessageja t\u00E4ss\u00E4 n\u00E4kym\u00E4ss\u00E4. actionlog.messagelist.description = Voit seurata sek\u00E4 luoda uusia ActionMessageja t\u00E4ss\u00E4 n\u00E4kym\u00E4ss\u00E4.
actionlog.messagelist.header = Viestilista actionlog.messagelist.header = Viestilista
actionlog.state = Tila actionlog.state = Tila
actionlog.task = Teht\u00E4v\u00E4 actionlog.task = Teht\u00E4v\u00E4
actionlog.tasklist.header = Teht\u00E4v\u00E4lista actionlog.tasklist.header = Teht\u00E4v\u00E4lista
actionlog.time = Aika actionlog.time = Aika
actionlog.user = Tekij\u00E4 actionlog.user = Tekij\u00E4
bill.billMarkedPaidMail.message = Laskusi numero {0} on merkitty maksetuksi. Voit nyt siirty\u00E4 lippukauppaan varamaamaan haluamasi paikat. \nTervetuloa tapahtumaan!\n\nTerveisin,\nInsomnia lippupalvelu\nwww.insomnia.fi bill.billMarkedPaidMail.message = Laskusi numero {0} on merkitty maksetuksi. Voit nyt siirty\u00E4 lippukauppaan varamaamaan haluamasi paikat. \nTervetuloa tapahtumaan!\n\nTerveisin,\nInsomnia lippupalvelu\nwww.insomnia.fi
bill.billMarkedPaidMail.subject = [INSOMNIA] Lasku merkitty maksetuksi bill.billMarkedPaidMail.subject = [INSOMNIA] Lasku merkitty maksetuksi
error.contact = Jos t\u00E4m\u00E4 toistuu, ota seuraava koodi talteen ja ota yhteys Infoon: error.contact = Jos t\u00E4m\u00E4 toistuu, ota seuraava koodi talteen ja ota yhteys Infoon:
error.error = Olet kohdannut virheen. error.error = Olet kohdannut virheen.
eventorg.create = Luo eventorg.create = Luo
eventorg.edit = Muokkaa eventorg.edit = Muokkaa
global.cancel = Peruuta global.cancel = Peruuta
global.copyright = Codecrew Ry global.copyright = Codecrew Ry
global.infomail = info@insomnia.fi global.infomail = info@insomnia.fi
global.notAuthorizedExecute = Sinulla ei ole riitt\u00E4v\u00E4sti oikeuksia suorittaa t\u00E4t\u00E4 toimenpidett\u00E4! global.notAuthorizedExecute = Sinulla ei ole riitt\u00E4v\u00E4sti oikeuksia suorittaa t\u00E4t\u00E4 toimenpidett\u00E4!
global.notauthorized = Sinulla ei ole riitt\u00E4vi\u00E4 oikeuksia t\u00E4lle sivulle. global.notauthorized = Sinulla ei ole riitt\u00E4vi\u00E4 oikeuksia t\u00E4lle sivulle.
global.save = Tallenna global.save = Tallenna
global.webpage = http://www.insomnia.fi global.webpage = http://www.insomnia.fi
httpsession.creationTime = Luotu httpsession.creationTime = Luotu
login.login = Kirjaudu sis\u00E4\u00E4n login.login = Kirjaudu sis\u00E4\u00E4n
login.logout = Kirjaudu ulos login.logout = Kirjaudu ulos
login.logoutmessage = Olet kirjautunut ulos j\u00E4rjestelm\u00E4st\u00E4. login.logoutmessage = Olet kirjautunut ulos j\u00E4rjestelm\u00E4st\u00E4.
login.password = Salasana login.password = Salasana
login.submit = Kirjaudu sis\u00E4\u00E4n login.submit = Kirjaudu sis\u00E4\u00E4n
login.username = K\u00E4ytt\u00E4j\u00E4tunnus login.username = K\u00E4ytt\u00E4j\u00E4tunnus
loginerror.header = Kirjautuminen ep\u00E4onnistui loginerror.header = Kirjautuminen ep\u00E4onnistui
loginerror.message = K\u00E4ytt\u00E4j\u00E4tunnus tai salasana ei ollut oikein. loginerror.message = K\u00E4ytt\u00E4j\u00E4tunnus tai salasana ei ollut oikein.
loginerror.resetpassword = Salasana unohtunut? loginerror.resetpassword = Salasana unohtunut?
passwordChanged.body = Voit nyt kirjautua k\u00E4ytt\u00E4j\u00E4tunnuksella ja uudella salasanalla sis\u00E4\u00E4n j\u00E4rjestelm\u00E4\u00E4n. passwordChanged.body = Voit nyt kirjautua k\u00E4ytt\u00E4j\u00E4tunnuksella ja uudella salasanalla sis\u00E4\u00E4n j\u00E4rjestelm\u00E4\u00E4n.
passwordChanged.header = Salasana vaihdettu onnistuneesti passwordChanged.header = Salasana vaihdettu onnistuneesti
passwordReset.errorChanging = Odotamaton virhe. Ota yhteytt\u00E4 yll\u00E4pitoon. passwordReset.errorChanging = Odotamaton virhe. Ota yhteytt\u00E4 yll\u00E4pitoon.
passwordReset.hashNotFound = Salasanan vaihto on vanhentunut. Jos haluat vaihtaa salasanan l\u00E4het\u00E4 vaihtopyynt\u00F6 uudelleen. passwordReset.hashNotFound = Salasanan vaihto on vanhentunut. Jos haluat vaihtaa salasanan l\u00E4het\u00E4 vaihtopyynt\u00F6 uudelleen.
permissiondenied.alreadyLoggedIn = Sinulla ei ole riitt\u00E4v\u00E4sti oikeuksia! permissiondenied.alreadyLoggedIn = Sinulla ei ole riitt\u00E4v\u00E4sti oikeuksia!
permissiondenied.header = P\u00E4\u00E4sy kielletty permissiondenied.header = P\u00E4\u00E4sy kielletty
permissiondenied.notLoggedIn = Sinulla ei ole riitt\u00E4v\u00E4sti oikeuksia t\u00E4lle sivulle. permissiondenied.notLoggedIn = Sinulla ei ole riitt\u00E4v\u00E4sti oikeuksia t\u00E4lle sivulle.
resetMail.body = Voit vaihtaa unohtuneen salasanan sy\u00F6tt\u00E4m\u00E4ll\u00E4 k\u00E4ytt\u00E4j\u00E4tunnuksesi allaolevaan kentt\u00E4\u00E4n. Tunnukseen liitettyyn s\u00E4hk\u00F6postiosoitteeseen l\u00E4hetet\u00E4\u00E4n kertak\u00E4ytt\u00F6inen osoite jossa voit vaihtaa sy\u00F6tt\u00E4m\u00E4si k\u00E4ytt\u00E4j\u00E4tunnuksen salasanan. resetMail.body = Voit vaihtaa unohtuneen salasanan sy\u00F6tt\u00E4m\u00E4ll\u00E4 k\u00E4ytt\u00E4j\u00E4tunnuksesi allaolevaan kentt\u00E4\u00E4n. Tunnukseen liitettyyn s\u00E4hk\u00F6postiosoitteeseen l\u00E4hetet\u00E4\u00E4n kertak\u00E4ytt\u00F6inen osoite jossa voit vaihtaa sy\u00F6tt\u00E4m\u00E4si k\u00E4ytt\u00E4j\u00E4tunnuksen salasanan.
resetMail.header = Salasana unohtunut? resetMail.header = Salasana unohtunut?
resetMail.send = L\u00E4het\u00E4 s\u00E4hk\u00F6posti resetMail.send = L\u00E4het\u00E4 s\u00E4hk\u00F6posti
resetmailSent.body = Antamasi k\u00E4ytt\u00E4j\u00E4tunnuksen s\u00E4hk\u00F6postiosoitteeseen on l\u00E4hetetty osoite jossa voit vaihtaa tunnuksen salasanan. resetmailSent.body = Antamasi k\u00E4ytt\u00E4j\u00E4tunnuksen s\u00E4hk\u00F6postiosoitteeseen on l\u00E4hetetty osoite jossa voit vaihtaa tunnuksen salasanan.
resetmailSent.header = S\u00E4hk\u00F6posti l\u00E4hetetty resetmailSent.header = S\u00E4hk\u00F6posti l\u00E4hetetty
package fi.insomnia.bortal.web.cdiview.shop; package fi.insomnia.bortal.web.cdiview.shop;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date;
import java.util.TreeSet; import java.util.TreeSet;
import java.util.Vector; import java.util.Vector;
...@@ -40,13 +41,14 @@ public class FoodWaveView extends GenericCDIView { ...@@ -40,13 +41,14 @@ public class FoodWaveView extends GenericCDIView {
private FoodWave selectedFoodWave = null; private FoodWave selectedFoodWave = null;
private Date startDate;
private Product currentProduct; private Product currentProduct;
public void initTemplateList() { public void initTemplateList() {
if (super.requirePermissions(ShopPermission.LIST_USERPRODUCTS)) { if (super.requirePermissions(ShopPermission.LIST_USERPRODUCTS)) {
setTemplates(new ListDataModel<FoodWaveTemplate>( setTemplates(new ListDataModel<FoodWaveTemplate>(foodWaveBean.getTemplates()));
foodWaveBean.getTemplates()));
super.beginConversation(); super.beginConversation();
} }
...@@ -82,6 +84,7 @@ public class FoodWaveView extends GenericCDIView { ...@@ -82,6 +84,7 @@ public class FoodWaveView extends GenericCDIView {
currentProduct = new Product(); currentProduct = new Product();
currentProduct.setProductFlags(ts); currentProduct.setProductFlags(ts);
currentProduct.setEvent(eventbean.getCurrentEvent());
} }
public void addProductToTemplate() { public void addProductToTemplate() {
...@@ -98,8 +101,11 @@ public class FoodWaveView extends GenericCDIView { ...@@ -98,8 +101,11 @@ public class FoodWaveView extends GenericCDIView {
} }
public void initUserFoodWaveList() { public void initUserFoodWaveList() {
this.foodWaves = new ListDataModel<FoodWave>( this.foodWaves = new ListDataModel<FoodWave>(foodWaveBean.getOpenFoodWaves());
foodWaveBean.getOpenFoodWaves()); }
public void initFoodwaveManagerList() {
this.foodWaves = new ListDataModel<FoodWave>(foodWaveBean.getEventFoodWaves());
} }
public String editTemplate() { public String editTemplate() {
...@@ -176,4 +182,16 @@ public class FoodWaveView extends GenericCDIView { ...@@ -176,4 +182,16 @@ public class FoodWaveView extends GenericCDIView {
this.templateId = templateId; this.templateId = templateId;
} }
public void removeProductFromList(Product product) {
template.getProducts().remove(product);
}
public Date getStartDate() {
return startDate;
}
public void setStartDate(Date startDate) {
this.startDate = startDate;
}
} }
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!