Commit e246166f by Antti Tönkyrä

Merge branch 'master' of codecrew.fi:bortal

2 parents a12193d8 87b7a565
...@@ -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;
} }
......
...@@ -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>
......
...@@ -28,14 +28,15 @@ ...@@ -28,14 +28,15 @@
<h:panelGrid columns="3"> <h:panelGrid columns="3">
<h:outputLabel for="name" <h:outputLabel for="name"
value="#{i18n['foodwavetemplate.name']}" /> value="#{i18n['foodwavetemplate.name']}" />
<h:inputText id="name" required="true" <h:inputText id="name" value="#{foodWaveView.template.name}"
value="#{foodWaveView.template.name}" /> required="true" requiredMessage="Name required" />
<h:message for="name" /> <h:message for="name" />
<h:outputLabel for="description" <h:outputLabel for="description"
value="#{i18n['foodwavetemplate.description']}" /> value="#{i18n['foodwavetemplate.description']}" />
<h:inputText id="description" required="true" <h:inputText id="description"
value="#{foodWaveView.template.description}" /> value="#{foodWaveView.template.description}" required="true"
requiredMessage="Description required" />
<h:message for="description" /> <h:message for="description" />
</h:panelGrid> </h:panelGrid>
</p:tab> </p:tab>
...@@ -50,11 +51,11 @@ ...@@ -50,11 +51,11 @@
<h:outputText value="#{i18n['foodwavetemplate.price']}" /> <h:outputText value="#{i18n['foodwavetemplate.price']}" />
<h:outputText value="&nbsp;" /> <h:outputText value="&nbsp;" />
<h:inputText id="productname" required="true" <h:inputText id="productname"
value="#{foodWaveView.currentProduct.name}" /> value="#{foodWaveView.currentProduct.name}" />
<h:inputText id="productdescription" required="true" <h:inputText id="productdescription"
value="#{foodWaveView.currentProduct.description}" /> value="#{foodWaveView.currentProduct.description}" />
<h:inputText id="price" required="true" <h:inputText id="price"
value="#{foodWaveView.currentProduct.price}" /> value="#{foodWaveView.currentProduct.price}" />
<p:commandButton value="#{i18n['foodwavetemplate.addproduct']}" <p:commandButton value="#{i18n['foodwavetemplate.addproduct']}"
...@@ -62,14 +63,17 @@ ...@@ -62,14 +63,17 @@
update="productTable" /> update="productTable" />
</h:panelGrid> </h:panelGrid>
<p:dataTable name="productTable" id="productTable" value="#{foodWaveView.template.products}" var="product" editable="true"> <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']}">
<p:cellEditor> <p:cellEditor>
<f:facet name="output"> <f:facet name="output">
<h:outputText value="#{product.name}" /> <h:outputText value="#{product.name}" />
</f:facet> </f:facet>
<f:facet name="input"> <f:facet name="input">
<p:inputText value="#{product.name}" style="width:100%" /> <p:inputText value="#{product.name}" style="width:100%"
required="true" requiredMessage="Name required" />
</f:facet> </f:facet>
</p:cellEditor> </p:cellEditor>
</p:column> </p:column>
...@@ -80,7 +84,8 @@ ...@@ -80,7 +84,8 @@
<h:outputText value="#{product.description}" /> <h:outputText value="#{product.description}" />
</f:facet> </f:facet>
<f:facet name="input"> <f:facet name="input">
<p:inputText value="#{product.description}" style="width:100%" /> <p:inputText value="#{product.description}" style="width:100%"
required="true" requiredMessage="Description required" />
</f:facet> </f:facet>
</p:cellEditor> </p:cellEditor>
</p:column> </p:column>
...@@ -90,21 +95,28 @@ ...@@ -90,21 +95,28 @@
<h:outputText value="#{product.price}" /> <h:outputText value="#{product.price}" />
</f:facet> </f:facet>
<f:facet name="input"> <f:facet name="input">
<p:inputText value="#{product.price}" style="width:100%" /> <p:inputText value="#{product.price}" style="width:100%"
required="true" requiredMessage="Price required" />
</f:facet> </f:facet>
</p:cellEditor> </p:cellEditor>
</p:column> </p:column>
<p:column headerText="#{i18n['foodwavetemplate.editRow']}" style="width:20px"> <p:column headerText="#{i18n['foodwavetemplate.editRow']}"
style="width:20px">
<p:rowEditor /> <p:rowEditor />
</p:column> </p:column>
<p:column headerText="#{i18n['foodwavetemplate.actions']}" style="width:20px;"> <p:column headerText="#{i18n['foodwavetemplate.actions']}"
<p:commandButton value="#{i18n['foodwavetemplate.removeFromList']}" action="#{foodWaveView.removeProductFromList(product)}" update="productTable" /> style="width:20px;">
</p:column> <p:commandButton
value="#{i18n['foodwavetemplate.removeFromList']}"
action="#{foodWaveView.removeProductFromList(product)}"
update="productTable" />
</p:column>
</p:dataTable> </p:dataTable>
<h:commandButton action="#{foodWaveView.saveTemplate()}" value="#{i18n['foodwavetemplate.savetemplate']}" /> <h:commandButton action="#{foodWaveView.saveTemplate()}"
value="#{i18n['foodwavetemplate.savetemplate']}" />
</p:tab> </p:tab>
</p:wizard> </p:wizard>
</h:form> </h:form>
......
<!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
...@@ -192,11 +192,15 @@ foodshop.buyFromInternet = Pay at Internet ...@@ -192,11 +192,15 @@ foodshop.buyFromInternet = Pay at Internet
foodwave.template.basicinfo = Template Information foodwave.template.basicinfo = Template Information
foodwave.template.edit.title = Foodwave Template Editor foodwave.template.edit.title = Foodwave Template Editor
foodwave.template.list.title = Foodwave Templates
foodwave.template.selectproducts = Products foodwave.template.selectproducts = Products
foodwaveTemplate.name = Name
foodwavetemplate.actions = Actions foodwavetemplate.actions = Actions
foodwavetemplate.addproduct = Add foodwavetemplate.addproduct = Add
foodwavetemplate.basicinfo = Template foodwavetemplate.basicinfo = Template
foodwavetemplate.createFoodwave = Create Foodwave
foodwavetemplate.description = Description foodwavetemplate.description = Description
foodwavetemplate.editRow = Edit foodwavetemplate.editRow = Edit
foodwavetemplate.name = Name foodwavetemplate.name = Name
...@@ -204,6 +208,8 @@ foodwavetemplate.price = Price ...@@ -204,6 +208,8 @@ foodwavetemplate.price = Price
foodwavetemplate.productdescription = Description foodwavetemplate.productdescription = Description
foodwavetemplate.productname = Name foodwavetemplate.productname = Name
foodwavetemplate.removeFromList = Remove foodwavetemplate.removeFromList = Remove
foodwavetemplate.save = Ok
foodwavetemplate.savetemplate = Submit
foodwavetemplate.selectproducts = Products foodwavetemplate.selectproducts = Products
game.gamepoints = Game points game.gamepoints = Game points
......
...@@ -190,11 +190,15 @@ foodshop.buyFromInternet = Maksa Internetiss\u00E4 ...@@ -190,11 +190,15 @@ foodshop.buyFromInternet = Maksa Internetiss\u00E4
foodwave.template.basicinfo = Template Infot foodwave.template.basicinfo = Template Infot
foodwave.template.edit.title = Foodwave Template Editori foodwave.template.edit.title = Foodwave Template Editori
foodwave.template.list.title = Ruokatilaus Templatet
foodwave.template.selectproducts = Tuotteet foodwave.template.selectproducts = Tuotteet
foodwaveTemplate.name = Nimi
foodwavetemplate.actions = Toimet foodwavetemplate.actions = Toimet
foodwavetemplate.addproduct = Lis\u00E4\u00E4 foodwavetemplate.addproduct = Lis\u00E4\u00E4
foodwavetemplate.basicinfo = Templeitti foodwavetemplate.basicinfo = Templeitti
foodwavetemplate.createFoodwave = Luo ruokatilaus
foodwavetemplate.description = Kuvaus foodwavetemplate.description = Kuvaus
foodwavetemplate.editRow = Muokkaa foodwavetemplate.editRow = Muokkaa
foodwavetemplate.name = Nimi foodwavetemplate.name = Nimi
...@@ -202,6 +206,8 @@ foodwavetemplate.price = Hinta ...@@ -202,6 +206,8 @@ foodwavetemplate.price = Hinta
foodwavetemplate.productdescription = Kuvaus foodwavetemplate.productdescription = Kuvaus
foodwavetemplate.productname = Nimi\r\n foodwavetemplate.productname = Nimi\r\n
foodwavetemplate.removeFromList = Poista foodwavetemplate.removeFromList = Poista
foodwavetemplate.save = Ok
foodwavetemplate.savetemplate = Tallenna
foodwavetemplate.selectproducts = Tuotteet foodwavetemplate.selectproducts = Tuotteet
game.gamepoints = Insomnia Game pisteet: game.gamepoints = Insomnia Game pisteet:
......
...@@ -48,8 +48,7 @@ public class FoodWaveView extends GenericCDIView { ...@@ -48,8 +48,7 @@ public class FoodWaveView extends GenericCDIView {
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();
} }
...@@ -102,8 +101,11 @@ public class FoodWaveView extends GenericCDIView { ...@@ -102,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() {
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!