Commit 7e22d2bb by Antti Tönkyrä

Merge branch 'master' of codecrew.fi:bortal

2 parents 31fdc4a0 a62b9c85
package fi.insomnia.bortal.beans;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.security.DeclareRoles;
......@@ -11,14 +12,16 @@ import sun.reflect.generics.reflectiveObjects.NotImplementedException;
import fi.insomnia.bortal.enums.apps.ShopPermission;
import fi.insomnia.bortal.facade.FoodWaveFacade;
import fi.insomnia.bortal.facade.FoodWaveTemplateFacade;
import fi.insomnia.bortal.facade.ProductFacade;
import fi.insomnia.bortal.model.FoodWave;
import fi.insomnia.bortal.model.FoodWaveTemplate;
import fi.insomnia.bortal.model.Product;
/**
* Session Bean implementation class FoodWaveBean
*/
@Stateless
@DeclareRoles(ShopPermission.S_MANAGE_PRODUCTS)
@DeclareRoles({ ShopPermission.S_MANAGE_PRODUCTS, ShopPermission.S_SHOP_FOODWAVE, ShopPermission.S_MANAGE_FOODWAVES })
public class FoodWaveBean implements FoodWaveBeanLocal {
@EJB
......@@ -26,6 +29,8 @@ public class FoodWaveBean implements FoodWaveBeanLocal {
@EJB
private FoodWaveFacade foodWaveFacade;
@EJB
private ProductFacade productfacade;
@Override
@RolesAllowed(ShopPermission.S_MANAGE_PRODUCTS)
......@@ -38,7 +43,7 @@ public class FoodWaveBean implements FoodWaveBeanLocal {
public void createFoodWave(FoodWave fw) {
foodWaveFacade.create(fw);
}
@Override
@RolesAllowed(ShopPermission.S_MANAGE_PRODUCTS)
public FoodWaveTemplate saveOrCreateTemplate(FoodWaveTemplate template) {
......@@ -57,11 +62,12 @@ public class FoodWaveBean implements FoodWaveBeanLocal {
}
@Override
@RolesAllowed("SHOP/READ")
@RolesAllowed(ShopPermission.S_SHOP_FOODWAVE)
public List<FoodWave> getOpenFoodWaves() {
return foodWaveFacade.getOpenFoodWaves();
}
@RolesAllowed({ ShopPermission.S_SHOP_FOODWAVE, ShopPermission.S_MANAGE_FOODWAVES })
public FoodWave findFoodwave(Integer foodwaveId) {
return foodWaveFacade.find(foodwaveId);
}
......@@ -81,10 +87,34 @@ public class FoodWaveBean implements FoodWaveBeanLocal {
public FoodWaveTemplate findTemplate(Integer templateId) {
return fwtFacade.find(templateId);
}
@Override
public List<FoodWave> getEventFoodWaves() {
return foodWaveFacade.getEventFoodWaves();
}
@Override
@RolesAllowed(ShopPermission.S_MANAGE_FOODWAVES)
public FoodWaveTemplate addProductToTemplate(FoodWaveTemplate template, Product product) {
template = fwtFacade.reload(template);
if (product.getId() == null)
{
productfacade.create(product);
} else {
product = productfacade.reload(product);
}
if (product.getFoodWaveTemplates() == null) {
product.setFoodWaveTemplates(new ArrayList<FoodWaveTemplate>());
}
if (template.getProducts() == null)
{
template.setProducts(new ArrayList<Product>());
}
template.getProducts().add(product);
product.getFoodWaveTemplates().add(template);
return template;
}
}
......@@ -51,6 +51,7 @@ import fi.insomnia.bortal.model.User;
MapPermission.S_MANAGE_MAPS,
MapPermission.S_MANAGE_OTHERS,
MapPermission.S_BUY_PLACES,
MapPermission.S_RELEASE_PLACE,
ShopPermission.S_LIST_ALL_PRODUCTS,
ShopPermission.S_LIST_USERPRODUCTS,
......@@ -58,6 +59,7 @@ import fi.insomnia.bortal.model.User;
ShopPermission.S_MANAGE_PRODUCTS,
ShopPermission.S_SHOP_PRODUCTS,
ShopPermission.S_SHOP_FOODWAVE,
ShopPermission.S_MANAGE_FOODWAVES,
BillPermission.S_CREATE_BILL,
BillPermission.S_READ_ALL,
......
......@@ -459,7 +459,7 @@ public class PlaceBean implements PlaceBeanLocal {
* @return true when successfull, on any erroro false.
*/
@Override
@RolesAllowed(MapPermission.S_BUY_PLACES)
@RolesAllowed({ MapPermission.S_RELEASE_PLACE, MapPermission.S_MANAGE_OTHERS })
public boolean releasePlace(Place place) {
place = placeFacade.find(place.getId());
EventUser user = permbean.getCurrentUser();
......
......@@ -86,6 +86,10 @@ public class ProductPBean {
if (foodwave != null) {
ret.setFoodWave(foodwave);
if(foodwave.getAccountEvents() == null) {
foodwave.setAccountEvents(new ArrayList<AccountEvent>());
}
foodwave.getAccountEvents().add(ret);
}
List<DiscountInstance> accEventdiscounts = ret.getDiscountInstances();
......
......@@ -39,10 +39,10 @@ public class RoleBean implements RoleBeanLocal {
// private static final String PUBLIC_ROLE_NAME =
// BeanRole.ANONYMOUS.toString();
@SuppressWarnings("unused")
private static final Logger logger = LoggerFactory.getLogger(RoleBean.class);
@Resource
private SessionContext sc;
@EJB
......@@ -172,12 +172,6 @@ public class RoleBean implements RoleBeanLocal {
}
@Override
@RolesAllowed(UserPermission.S_READ_ROLES)
public List<Role> getRoles(EventUser user) {
return roleFacade.findForUser(user);
}
@Override
@RolesAllowed(UserPermission.S_WRITE_ROLES)
public void saveRoles(EventUser usr, List<Role> usersRoles) {
......@@ -193,4 +187,10 @@ public class RoleBean implements RoleBeanLocal {
}
}
}
@Override
@RolesAllowed(UserPermission.S_READ_ROLES)
public List<Role> getRoles(EventUser selectedUser) {
return roleFacade.findForUser(selectedUser);
}
}
......@@ -6,6 +6,7 @@ import javax.ejb.Local;
import fi.insomnia.bortal.model.FoodWave;
import fi.insomnia.bortal.model.FoodWaveTemplate;
import fi.insomnia.bortal.model.Product;
@Local
public interface FoodWaveBeanLocal {
......@@ -29,4 +30,6 @@ public interface FoodWaveBeanLocal {
public List<FoodWave> getEventFoodWaves();
public void createFoodWave(FoodWave fw);
FoodWaveTemplate addProductToTemplate(FoodWaveTemplate template, Product currentProduct);
}
......@@ -34,6 +34,6 @@ public interface RoleBeanLocal {
public void saveRoles(EventUser usr, List<Role> usersRoles);
List<Role> getRoles(EventUser user);
public List<Role> getRoles(EventUser selectedUser);
}
......@@ -117,6 +117,8 @@ public class BillLine extends GenericEntity {
this.setUnitPrice(product.getPrice().abs());
this.setVat(product.getVat());
this.setFoodwave(foodwave);
}
......
......@@ -6,7 +6,7 @@ public enum MapPermission implements IAppPermission {
MANAGE_OTHERS, // ("Manage other users reservations in map"),
BUY_PLACES, // ("Reserve and buy places from map"),
VIEW, // ("View maps"),
MANAGE_MAPS, // ("Create and modify maps")
MANAGE_MAPS, RELEASE_PLACE, // ("Create and modify maps")
;
......@@ -14,7 +14,7 @@ public enum MapPermission implements IAppPermission {
public static final String S_BUY_PLACES = "MAP/BUY_PLACES";
public static final String S_VIEW = "MAP/VIEW";
public static final String S_MANAGE_MAPS = "MAP/MANAGE_MAPS";
public static final String S_RELEASE_PLACE = "MAP/RELEASE_PLACE";
private final String fullName;
private final String key;
private static final String I18N_HEADER = "bortalApplication.map.";
......
......@@ -10,6 +10,7 @@ public enum ShopPermission implements IAppPermission {
SHOP_PRODUCTS, // ("Shop products to self"),
MANAGE_PRODUCTS, // ("Create and modify products"),
SHOP_FOODWAVE, // Shop for food
MANAGE_FOODWAVES,
;
......@@ -19,6 +20,7 @@ public enum ShopPermission implements IAppPermission {
public static final String S_SHOP_PRODUCTS = "SHOP/SHOP_PRODUCTS";
public static final String S_MANAGE_PRODUCTS = "SHOP/MANAGE_PRODUCTS";
public static final String S_SHOP_FOODWAVE = "SHOP/SHOP_FOODWAVE";
public static final String S_MANAGE_FOODWAVES = "SHOP/MANAGE_FOODWAVES";
private final String fullName;
private final String key;
......
......@@ -23,101 +23,102 @@
<ui:define name="content">
<h:form>
<p:wizard>
<p:tab id="basicinfo" title="#{i18n['foodwavetemplate.basicinfo']}">
<h:panelGrid columns="3">
<h:outputLabel for="name"
value="#{i18n['foodwavetemplate.name']}" />
<h:inputText id="name" value="#{foodWaveView.template.name}"
required="true" requiredMessage="Name required" />
<h:message for="name" />
<!-- <p:wizard>
<p:tab id="basicinfo" title="#{i18n['foodwavetemplate.basicinfo']}"> -->
<h:panelGrid columns="3">
<h:outputLabel for="name" value="#{i18n['foodwavetemplate.name']}" />
<h:inputText id="name" value="#{foodWaveView.template.name}"
required="true" requiredMessage="Name required" />
<h:message for="name" />
<h:outputLabel for="description"
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>
<h:outputLabel for="description"
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 id="selectproducts"
title="#{i18n['foodwavetemplate.selectproducts']}">
<h:messages />
<h:panelGrid columns="4">
title="#{i18n['foodwavetemplate.selectproducts']}"> -->
<h:messages />
<h:panelGrid columns="4">
<h:outputText value="#{i18n['foodwavetemplate.productname']}" />
<h:outputText
value="#{i18n['foodwavetemplate.productdescription']}" />
<h:outputText value="#{i18n['foodwavetemplate.price']}" />
<h:outputText value="&nbsp;" />
<h:outputText value="#{i18n['foodwavetemplate.productname']}" />
<h:outputText
value="#{i18n['foodwavetemplate.productdescription']}" />
<h:outputText value="#{i18n['foodwavetemplate.price']}" />
<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}" />
<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" />
<p:commandButton value="#{i18n['foodwavetemplate.addproduct']}"
actionListener="#{foodWaveView.addProductToTemplate}"
update="productTable" />
</h:panelGrid>
<p:dataTable name="productTable" id="productTable"
value="#{foodWaveView.template.products}" var="product"
editable="true">
<p:column headerText="#{i18n['foodwavetemplate.productname']}">
<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
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 headerText="#{i18n['foodwavetemplate.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:dataTable>
</h:panelGrid>
<p:dataTable name="productTable" id="productTable"
value="#{foodWaveView.template.products}" var="product"
editable="true">
<p:column headerText="#{i18n['foodwavetemplate.productname']}">
<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
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 headerText="#{i18n['foodwavetemplate.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:dataTable>
<h:commandButton action="#{foodWaveView.saveTemplate()}"
value="#{i18n['foodwavetemplate.savetemplate']}" />
</p:tab>
<h:commandButton action="#{foodWaveView.saveTemplate()}"
value="#{i18n['foodwavetemplate.savetemplate']}">
<f:param value="#{foodWaveView.templateId}" name="id" />
</h:commandButton>>
<!-- </p:tab> -->
</p:wizard>
<!-- </p:wizard> -->
</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: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">
<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:p="http://primefaces.org/ui">
<h:body>
<ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml">
<ui:composition
template="/layout/#{sessionHandler.layout}/template.xhtml">
<f:metadata>
<f:event type="preRenderView" listener="#{foodWaveView.initEditTemplate()}" />
<f:viewParam name="id" value="#{foodWaveView.templateId}" />
<f:event type="preRenderView"
listener="#{foodWaveView.initEditTemplate()}" />
</f:metadata>
<ui:define name="title">
......@@ -18,41 +26,130 @@
<h:form>
<p:panel header="#{i18n['foodwavetemplate.edit']}">
<h:panelGrid columns="3">
<h:outputLabel for="name" value="#{i18n['foodwavetemplate.name']}" />
<h:outputLabel for="name"
value="#{i18n['foodwave.template.name']}" />
<h:inputText id="name" value="#{foodWaveView.template.name}" />
<h:message for="name" />
<h:outputLabel for="desc" value="#{i18n['foodwavetemplate.description']}" />
<h:inputText id="desc" value="#{foodWaveView.template.description}" />
<h:outputLabel for="desc"
value="#{i18n['foodwave.template.description']}" />
<h:inputText id="desc"
value="#{foodWaveView.template.description}" />
<h:message for="desc" />
<h:outputText value=" " />
<h:commandButton action="#{foodWaveView.saveTemplate()}" value="#{i18n['foodwavetemplate.save']}" />
<h:commandButton action="#{foodWaveView.saveTemplate()}"
value="#{i18n['foodwavetemplate.save']}" />
</h:panelGrid>
<h:selectOneMenu value="#{foodWaveView.currentProduct}"
converter="#{productConverter}">
<f:selectItems value="#{foodWaveView.products}" var="product"
itemLabel="#{product.name}"></f:selectItems>
</h:selectOneMenu>
<p:commandButton value="#{i18n['foodwavetemplate.addproduct']}"
actionListener="#{foodWaveView.addProductToTemplate}"
update="productTable" />
<!-- <h:panelGrid columns="4">
<h:outputText value="#{i18n['foodwavetemplate.productname']}" />
<h:outputText
value="#{i18n['foodwavetemplate.productdescription']}" />
<h:outputText value="#{i18n['foodwavetemplate.price']}" />
<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:panelGrid>
-->
<p:dataTable name="productTable" id="productTable"
value="#{foodWaveView.template.products}" var="product"
editable="true">
<p:column headerText="#{i18n['foodwavetemplate.productname']}">
<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
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 headerText="#{i18n['foodwavetemplate.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:dataTable>
<h:commandButton action="#{foodWaveView.saveTemplate()}"
value="#{i18n['foodwavetemplate.savetemplate']}" />
<!-- -->
</p:panel>
</h:form>
<h:form>
<p:panel header="#{i18n['foodwavetemplate.createwave']}">
<h:panelGrid columns="3">
<h:outputLabel for="waveName" value="#{i18n['foodwavetemplate.waveName']}" />
<h:inputText id="waveName" value="#{foodWaveView.selectedFoodWave.name}" />
<h:outputLabel for="waveName"
value="#{i18n['foodwavetemplate.waveName']}" />
<h:inputText id="waveName"
value="#{foodWaveView.selectedFoodWave.name}" />
<h:message for="waveName" />
<h:outputLabel for="waveMaxFoods" value="#{i18n['foodwavetemplate.maxfoods']}" />
<h:inputText id="waveMaxFoods" value="#{foodWaveView.selectedFoodWave.maximumFoods}" />
<h:outputLabel for="waveMaxFoods"
value="#{i18n['foodwavetemplate.maxfoods']}" />
<h:inputText id="waveMaxFoods"
value="#{foodWaveView.selectedFoodWave.maximumFoods}" />
<h:message for="waveMaxFoods" />
<h:outputLabel for="startTime" value="#{i18n['foodwavetemplate.startTime']}"/>
<p:calendar id="startTime" value="#{foodWaveView.startDate}" pattern="dd.MM.yyyy HH:mm" />
<h:outputLabel for="startTime"
value="#{i18n['foodwavetemplate.startTime']}" />
<p:calendar id="startTime" value="#{foodWaveView.startDate}"
pattern="dd.MM.yyyy HH:mm" />
<h:message for="startTime" />
</h:panelGrid>
<h:commandButton action="#{foodWaveView.createFoodwave()}" value="#{i18n['foodwavetemplate.createFoodwave']}" />
<h:commandButton action="#{foodWaveView.createFoodwave()}"
value="#{i18n['foodwavetemplate.createFoodwave']}" />
</p:panel>
</h:form>
<ui:fragment>
</ui:fragment>
</ui:define>
</ui:composition>
</h:body>
......
......@@ -23,7 +23,7 @@
<h:outputText value="#{foodwaveTemplate.name}" />
</h:column>
<h:column>
<h:link value="LOL" outcome="/foodadmin/editTemplate">
<h:link value="#{i18n['foodadmin.editTemplate']}" outcome="/foodadmin/editTemplate">
<f:param value="#{foodwaveTemplate.id}" name="id"/>
</h:link>
</h:column>
......
......@@ -6,8 +6,9 @@
<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:viewParam name="foodwaveid" value="#{foodWaveView.foodWaveId}" required="true"/>
<f:event type="preRenderView" listener="#{foodWaveView.initFoodWaveOrderList}" />
<!-- <f:event type="preRenderView" listener="#{foodWaveView.initFoodwaveAccountEventList}" /> -->
</f:metadata>
<ui:define name="title">
......@@ -32,14 +33,14 @@
</f:facet>
<h:link outcome="/foodmanager/listOrders"
value="#{foodwave.template.name}">
<f:param name="foodwaveid" value="#{billLine.quantiny}" />
<f:param name="foodwaveid" value="#{foodWaveView.billLines.rowCount}" />
</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}">
<h:link outcome="/foodmanager/listOrders" value="#{foodWaveView.currentProduct.price}">
<f:param name="foodwaveid" value="#{foodwave.id}" />
</h:link>
</h:column>
......@@ -47,18 +48,18 @@
<f:facet name="header">
<h:outputText value="${i18n['foodWave.unconfirmedOrders']}" />
</f:facet>
<h:link outcome="/foodmanager/listOrders" value="#{foodwave.billLines.size()}">
<h:link outcome="/foodmanager/listOrders" value="#{foodWaveView.billLines.rowCount}">
<f:param name="foodwaveid" value="#{foodwave.id}" />
</h:link>
</h:column>
</h:column><!--
<h:column>
<f:facet name="header">
<h:outputText value="${i18n['foodWave.totalReserved']}" />
</f:facet>
<h:link outcome="/foodmanager/listOrders" value="#{foodwave.reservedCount}">
<h:link outcome="/foodmanager/listOrders" value="#{foodWaveView.currentProduct.totalreserved}">
<f:param name="foodwaveid" value="#{foodwave.id}" />
</h:link>
</h:column>
</h:column> -->
<h:column>
<f:facet name="header">
<h:outputText value="${i18n['foodWave.time']}" />
......
......@@ -13,12 +13,12 @@
template="/layout/#{sessionHandler.layout}/template.xhtml">
<f:metadata>
<f:viewParam name="userid" value="#{userView.userid}" />
<f:event type="preRenderView"
listener="#{foodWaveView.initTemplateList}" />
<f:viewParam name="templateid" value="#{foodWaveView.templateId}" />
<f:event type="preRenderView" listener="#{foodWaveView.initListFoodwaves}" />
</f:metadata>
<ui:define name="title">
<h1>#{i18n['user.shop.title']}</h1>
<h1>#{i18n['user.foodwavelist.title']}</h1>
</ui:define>
<ui:define name="content">
......@@ -36,7 +36,7 @@
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="${i18n['foodWave.template.name']}" />
<h:outputText value="${i18n['foodWave.templatename']}" />
</f:facet>
<h:link outcome="/foodwave/listProducts"
value="#{foodwave.template.name}">
......
......@@ -15,9 +15,7 @@
</ui:define>
<ui:define name="content">
<foodwave:listTemplates selectaction="#{foodWaveView.selectTemplate}" items="#{foodWaveView.templates}"
commitValue="#{i18n['food']}"
/>
<foodwave:listTemplates outcome="/foodwave/list" items="#{foodWaveView.templates}" />
</ui:define>
......
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:composite="http://java.sun.com/jsf/composite"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:tools="http://java.sun.com/jsf/composite/tools">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:composite="http://java.sun.com/jsf/composite"
xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:tools="http://java.sun.com/jsf/composite/tools">
<composite:interface>
<composite:attribute name="items" required="true" />
<composite:attribute name="selectaction"
method-signature="java.lang.String action()" required="true" />
<composite:attribute name="outcome" required="true" />
</composite:interface>
<composite:implementation>
......@@ -21,29 +15,26 @@
<!-- <h:outputScript target="head" library="script" name="shopscript.js" /> -->
<h:outputScript library="primefaces" name="jquery/jquery.js" />
<h:form>
<h:dataTable columnClasses="nowrap,numalign,numalign,nowrap,numalign"
styleClass="bordertable" id="billcart" value="#{cc.attrs.items}"
var="template">
<h:column>
<f:facet name="header">
<h:outputText id="name" value="${i18n['foodWave.name']}" />
</f:facet>
<h:commandLink action="#{cc.attrs.selectaction}"
value="#{template.name}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="${i18n['foodWave.description']}" />
</f:facet>
<h:outputText id="description" value="#{template.description}" />
</h:column>
</h:dataTable>
</h:form>
<h:dataTable columnClasses="nowrap,numalign,numalign,nowrap,numalign" styleClass="bordertable" id="billcart" value="#{cc.attrs.items}" var="template">
<h:column>
<f:facet name="header">
<h:outputText id="name" value="${i18n['foodWave.name']}" />
</f:facet>
<h:link outcome="#{cc.attrs.outcome}" value="#{template.name}">
<f:param name="templateid" value="#{template.id}" />
</h:link>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="${i18n['foodWave.description']}" />
</f:facet>
<h:outputText id="description" value="#{template.description}" />
</h:column>
</h:dataTable>
</composite:implementation>
</html>
......@@ -9,6 +9,9 @@ import javax.faces.model.ListDataModel;
import javax.inject.Inject;
import javax.inject.Named;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.beans.AccountEventBeanLocal;
import fi.insomnia.bortal.beans.BillBeanLocal;
import fi.insomnia.bortal.beans.EventBeanLocal;
......@@ -34,62 +37,54 @@ public class FoodWaveFoodView extends GenericCDIView {
@EJB
private FoodWaveBeanLocal foodWaveBean;
@EJB
EventBeanLocal eventBean;
@EJB
private AccountEventBeanLocal accountEventBean;
@EJB
private BillBeanLocal billBean;
private FoodWave foodWave = null;
@EJB
private transient ProductBeanLocal productBean;
@Inject
@SelectedUser
private EventUser user;
@Inject
private BillEditView billEditView;
private Integer foodwaveid = 0;
private ListDataModel<Product> products;
private transient ListDataModel<ProductShopItem> shoppingcart;
private static final Logger logger = LoggerFactory.getLogger(FoodWaveFoodView.class);
public void initFoodWaveFoods() {
if( requirePermissions(ShopPermission.LIST_USERPRODUCTS) &&
getFoodwaveid() > 0 && getShoppingcart() == null) {
setFoodWave(foodWaveBean.findFoodwave(getFoodwaveid()));
setShoppingcart(new ListDataModel<ProductShopItem>(
ProductShopItem.productGTList( getFoodWave().getTemplate().getProducts() )));
System.out.println("beginconversation");
if (requirePermissions(ShopPermission.LIST_USERPRODUCTS) && getFoodwaveid() > 0 && getShoppingcart() == null) {
foodWave = foodWaveBean.findFoodwave(getFoodwaveid());
logger.debug("Foodwave {}", foodWave);
shoppingcart = new ListDataModel<ProductShopItem>(ProductShopItem.productGTList(foodWave.getTemplate().getProducts()));
this.beginConversation();
//products = new ListDataModel<Product>(getFoodWave().getTemplate().getProducts());
}
}
public ListDataModel<Product> getProducts() {
return products;
}
public void setProducts(ListDataModel<Product> products) {
this.products = products;
}
public Integer getFoodwaveid() {
return foodwaveid;
}
......@@ -109,10 +104,10 @@ public class FoodWaveFoodView extends GenericCDIView {
public String add(Integer count) {
ProductShopItem item = getShoppingcart().getRowData();
item.setCount(item.getCount().add(BigDecimal.valueOf(count)));
System.out.println("foobar"+item.getCount());
System.out.println("foobar" + item.getCount());
return null;
}
public String addOne()
{
return add(1);
......@@ -131,15 +126,13 @@ public class FoodWaveFoodView extends GenericCDIView {
return ret;
}
/**
* Just create bills, they are nice
* <insert picture of bill gates here>
/**
* Just create bills, they are nice <insert picture of bill gates here>
*
* @return
*/
public Bill createBillFromShoppingcart() {
Bill bill = new Bill(eventBean.getCurrentEvent(), user);
bill.setOurReference(eventBean.getCurrentEvent().getName());
......@@ -152,26 +145,24 @@ public class FoodWaveFoodView extends GenericCDIView {
return bill;
}
public String buyFromCounter() {
createBillFromShoppingcart();
return "/foodwave/ThanksForOrderingFromCounter";
}
public String buyFromInternet() {
Bill bill = createBillFromShoppingcart();
if(bill != null) {
if (bill != null) {
getBillEditView().setBillid(bill.getId());
return "/bill/showBill?faces-redirect=true&IncludeViewParams=true";
}
return null;
}
public void setUser(EventUser user) {
this.user = user;
......@@ -199,20 +190,12 @@ public class FoodWaveFoodView extends GenericCDIView {
return false;
}
public BillEditView getBillEditView() {
return billEditView;
}
public void setBillEditView(BillEditView billEditView) {
this.billEditView = billEditView;
}
}
......@@ -3,8 +3,8 @@ package fi.insomnia.bortal.web.cdiview.shop;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.TreeSet;
import java.util.Vector;
import javax.ejb.EJB;
import javax.enterprise.context.ConversationScoped;
......@@ -14,7 +14,10 @@ import javax.inject.Named;
import fi.insomnia.bortal.beans.EventBeanLocal;
import fi.insomnia.bortal.beans.FoodWaveBeanLocal;
import fi.insomnia.bortal.beans.ProductBeanLocal;
import fi.insomnia.bortal.enums.apps.ShopPermission;
import fi.insomnia.bortal.model.AccountEvent;
import fi.insomnia.bortal.model.BillLine;
import fi.insomnia.bortal.model.FoodWave;
import fi.insomnia.bortal.model.FoodWaveTemplate;
import fi.insomnia.bortal.model.Product;
......@@ -32,26 +35,36 @@ public class FoodWaveView extends GenericCDIView {
@Inject
private FoodWaveFoodView foodWaveFoodView;
private ListDataModel<FoodWaveTemplate> templates;
private FoodWaveTemplate template;
private Integer templateId;
@EJB
private EventBeanLocal eventbean;
private ListDataModel<FoodWave> foodWaves;
@EJB
private ProductBeanLocal productbeanlocal;
private FoodWave selectedFoodWave = null;
private Date startDate;
private Product currentProduct;
private ListDataModel<BillLine> billLines;
private Integer foodWaveId;
private ListDataModel<AccountEvent> accountEventLines;
private List<FoodWave> foodWaves;
public List<Product> getProducts() {
return productbeanlocal.getProducts();
}
public void initTemplateList() {
if (super.requirePermissions(ShopPermission.LIST_USERPRODUCTS)) {
super.requirePermissions(ShopPermission.SHOP_FOODWAVE);
}
setTemplates(new ListDataModel<FoodWaveTemplate>(foodWaveBean.getTemplates()));
super.beginConversation();
public void initFoodwaveManagerList() {
if (super.requirePermissions(ShopPermission.MANAGE_FOODWAVES))
{
foodWaves = foodWaveBean.getEventFoodWaves();
}
}
......@@ -60,18 +73,34 @@ public class FoodWaveView extends GenericCDIView {
Calendar c = Calendar.getInstance();
c.setTime(startDate);
selectedFoodWave.setTime(c);
foodWaveBean.createFoodWave(selectedFoodWave);
return "/foodadmin/listTemplates";
// initFoodwaveManagerList();
return "/foodmanager/listFoodwaves";
}
public void initListFoodwaves()
{
if (super.requirePermissions(ShopPermission.SHOP_FOODWAVE) && template == null)
{
if (templateId != null)
{
template = foodWaveBean.findTemplate(templateId);
foodWaves = template.getFoodwaves();
} else {
foodWaves = foodWaveBean.getOpenFoodWaves();
}
super.beginConversation();
}
}
public void initEditTemplate() {
if (super.requirePermissions(ShopPermission.MANAGE_PRODUCTS) && template == null)
{
template = foodWaveBean.findTemplate(templateId);
// prepare to make new foodwaves
selectedFoodWave = new FoodWave();
selectedFoodWave.setTemplate(template);
super.beginConversation();
......@@ -85,27 +114,27 @@ public class FoodWaveView extends GenericCDIView {
template = new FoodWaveTemplate();
template.setProducts(new ArrayList<Product>());
template.setEvent(eventbean.getCurrentEvent());
createNewProductSkeleton();
super.beginConversation();
}
}
private void createNewProductSkeleton() {
TreeSet<ProductFlag> ts = new TreeSet<ProductFlag>();
ts.add(ProductFlag.PREPAID_INSTANT_CREATE);
currentProduct = new Product();
currentProduct.setProductFlags(ts);
currentProduct.setEvent(eventbean.getCurrentEvent());
}
public void addProductToTemplate() {
template.getProducts().add(currentProduct);
template = foodWaveBean.addProductToTemplate(template, currentProduct);
createNewProductSkeleton();
}
public Product getCurrentProduct() {
return currentProduct;
}
......@@ -114,23 +143,33 @@ public class FoodWaveView extends GenericCDIView {
this.currentProduct = currentProduct;
}
public void initUserFoodWaveList() {
this.foodWaves = new ListDataModel<FoodWave>(foodWaveBean.getOpenFoodWaves());
}
public void initFoodwaveManagerList() {
this.foodWaves = new ListDataModel<FoodWave>(foodWaveBean.getEventFoodWaves());
}
// public void initUserFoodWaveList() {
// this.foodWaves = new
// ListDataModel<FoodWave>(foodWaveBean.getOpenFoodWaves());
// }
//
// public void initFoodwaveManagerList() {
// this.foodWaves = new
// ListDataModel<FoodWave>(foodWaveBean.getEventFoodWaves());
// }
public void initFoodWaveOrderList() {
if (super.requirePermissions(ShopPermission.MANAGE_FOODWAVES) && selectedFoodWave == null) {
selectedFoodWave = foodWaveBean.findFoodwave(foodWaveId);
billLines = new ListDataModel<BillLine>(selectedFoodWave.getBillLines());
this.accountEventLines = new ListDataModel<AccountEvent>(selectedFoodWave.getAccountEvents());
super.beginConversation();
}
public String editTemplate() {
setTemplate(getTemplates().getRowData());
return "/foodadmin/editTemplate";
}
public String saveTemplate()
{
setTemplate(foodWaveBean.saveOrCreateTemplate(getTemplate()));
template = foodWaveBean.saveOrCreateTemplate(getTemplate());
selectedFoodWave = new FoodWave();
selectedFoodWave.setTemplate(template);
return "/foodadmin/editTemplate";
}
......@@ -142,34 +181,8 @@ public class FoodWaveView extends GenericCDIView {
this.template = template;
}
public ListDataModel<FoodWaveTemplate> getTemplates() {
return templates;
}
public void setTemplates(ListDataModel<FoodWaveTemplate> templates) {
this.templates = templates;
}
public ListDataModel<FoodWave> getFoodWaves() {
return foodWaves;
}
public String selectFoodWave() {
if (foodWaves.isRowAvailable()) {
// setSelectedFoodWave(foodWaves.getRowData());
}
return "/foodwave/listProducts";
}
public String selectTemplate() {
if (templates.isRowAvailable()) {
foodWaves = new ListDataModel<FoodWave>(templates.getRowData()
.getOrderableFoodwaves());
}
return "/foodwave/list";
public List<FoodWaveTemplate> getTemplates() {
return foodWaveBean.getTemplates();
}
public FoodWave getSelectedFoodWave() {
......@@ -180,14 +193,6 @@ public class FoodWaveView extends GenericCDIView {
this.selectedFoodWave = selectedFoodWave;
}
private FoodWaveFoodView getFoodWaveFoodView() {
return foodWaveFoodView;
}
private void setFoodWaveFoodView(FoodWaveFoodView foodWaveFoodView) {
this.foodWaveFoodView = foodWaveFoodView;
}
public Integer getTemplateId() {
return templateId;
}
......@@ -197,7 +202,7 @@ public class FoodWaveView extends GenericCDIView {
}
public void removeProductFromList(Product product) {
template.getProducts().remove(product);
}
......@@ -208,4 +213,29 @@ public class FoodWaveView extends GenericCDIView {
public void setStartDate(Date startDate) {
this.startDate = startDate;
}
public Integer getFoodWaveId() {
return foodWaveId;
}
public void setFoodWaveId(Integer foodWaveId) {
this.foodWaveId = foodWaveId;
}
public ListDataModel<BillLine> getBillLines() {
return billLines;
}
public void setBillLines(ListDataModel<BillLine> billLines) {
this.billLines = billLines;
}
public void setFoodWaves(List<FoodWave> foodWaves) {
this.foodWaves = foodWaves;
}
public List<FoodWave> getFoodWaves() {
return foodWaves;
}
}
......@@ -130,6 +130,7 @@ public class UserView extends GenericCDIView {
usersRoles = rolebean.getRoles(getSelectedUser());
}
return usersRoles;
}
public String crop()
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!