Commit 7d3c93fe by Juho Juopperi

Merge branch 'master' of codecrew.fi:bortal

2 parents c586a8ac 71e44b57
package fi.insomnia.bortal.beans; package fi.insomnia.bortal.beans;
import java.util.List;
import javax.annotation.security.DeclareRoles; import javax.annotation.security.DeclareRoles;
import javax.annotation.security.RolesAllowed; import javax.annotation.security.RolesAllowed;
import javax.ejb.EJB; import javax.ejb.EJB;
import javax.ejb.Stateless; import javax.ejb.Stateless;
import fi.insomnia.bortal.enums.apps.ShopPermission;
import fi.insomnia.bortal.facade.FoodWaveTemplateFacade; import fi.insomnia.bortal.facade.FoodWaveTemplateFacade;
import fi.insomnia.bortal.model.FoodWaveTemplate; import fi.insomnia.bortal.model.FoodWaveTemplate;
...@@ -12,29 +15,23 @@ import fi.insomnia.bortal.model.FoodWaveTemplate; ...@@ -12,29 +15,23 @@ import fi.insomnia.bortal.model.FoodWaveTemplate;
* Session Bean implementation class FoodWaveBean * Session Bean implementation class FoodWaveBean
*/ */
@Stateless @Stateless
@DeclareRoles("SHOP/WRITE") @DeclareRoles(ShopPermission.S_MANAGE_PRODUCTS)
public class FoodWaveBean implements FoodWaveBeanLocal { public class FoodWaveBean implements FoodWaveBeanLocal {
@EJB @EJB
private FoodWaveTemplateFacade fwtFacade; private FoodWaveTemplateFacade fwtFacade;
/**
* Default constructor.
*/
public FoodWaveBean() {
// TODO Auto-generated constructor stub
}
@Override @Override
@RolesAllowed("SHOP/WRITE") @RolesAllowed(ShopPermission.S_MANAGE_PRODUCTS)
public void createTemplate(FoodWaveTemplate waveTemplate) { public List<FoodWaveTemplate> getTemplates() {
fwtFacade.create(waveTemplate); return fwtFacade.findAllTemplates();
} }
@Override @Override
@RolesAllowed("SHOP/WRITE") @RolesAllowed(ShopPermission.S_MANAGE_PRODUCTS)
public FoodWaveTemplate saveTemplate(FoodWaveTemplate waveTemplate) { public FoodWaveTemplate saveOrCreateTemplate(FoodWaveTemplate template) {
return fwtFacade.merge(waveTemplate); // TODO Auto-generated method stub
return null;
} }
} }
...@@ -5,6 +5,7 @@ import java.security.Principal; ...@@ -5,6 +5,7 @@ import java.security.Principal;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.annotation.security.DeclareRoles; import javax.annotation.security.DeclareRoles;
import javax.ejb.EJB; import javax.ejb.EJB;
import javax.ejb.LocalBean;
import javax.ejb.SessionContext; import javax.ejb.SessionContext;
import javax.ejb.Stateless; import javax.ejb.Stateless;
import javax.resource.spi.IllegalStateException; import javax.resource.spi.IllegalStateException;
...@@ -56,6 +57,7 @@ import fi.insomnia.bortal.model.User; ...@@ -56,6 +57,7 @@ import fi.insomnia.bortal.model.User;
ShopPermission.S_SHOP_TO_OTHERS, ShopPermission.S_SHOP_TO_OTHERS,
ShopPermission.S_MANAGE_PRODUCTS, ShopPermission.S_MANAGE_PRODUCTS,
ShopPermission.S_SHOP_PRODUCTS, ShopPermission.S_SHOP_PRODUCTS,
ShopPermission.S_SHOP_FOODWAVE,
BillPermission.S_CREATE_BILL, BillPermission.S_CREATE_BILL,
BillPermission.S_READ_ALL, BillPermission.S_READ_ALL,
...@@ -88,6 +90,7 @@ import fi.insomnia.bortal.model.User; ...@@ -88,6 +90,7 @@ import fi.insomnia.bortal.model.User;
EventPermission.S_MANAGE_PROPERTIES, EventPermission.S_MANAGE_PROPERTIES,
}) })
@LocalBean
public class PermissionBean implements PermissionBeanLocal { public class PermissionBean implements PermissionBeanLocal {
private static final Logger logger = LoggerFactory.getLogger(PermissionBean.class); private static final Logger logger = LoggerFactory.getLogger(PermissionBean.class);
......
...@@ -25,6 +25,7 @@ public class ProductPBean { ...@@ -25,6 +25,7 @@ public class ProductPBean {
@EJB @EJB
private PermissionBean permbean; private PermissionBean permbean;
@EJB
private AccountEventFacade accounteventfacade; private AccountEventFacade accounteventfacade;
/** /**
......
package fi.insomnia.bortal.facade; package fi.insomnia.bortal.facade;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.LocalBean; import javax.ejb.LocalBean;
import javax.ejb.Stateless; import javax.ejb.Stateless;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;
import fi.insomnia.bortal.beans.EventBean;
import fi.insomnia.bortal.model.FoodWaveTemplate; import fi.insomnia.bortal.model.FoodWaveTemplate;
import fi.insomnia.bortal.model.FoodWaveTemplate_;
@Stateless @Stateless
@LocalBean @LocalBean
public class FoodWaveTemplateFacade extends IntegerPkGenericFacade<FoodWaveTemplate> { public class FoodWaveTemplateFacade extends IntegerPkGenericFacade<FoodWaveTemplate> {
@EJB
private EventBean eventbean;
public FoodWaveTemplateFacade() { public FoodWaveTemplateFacade() {
super(FoodWaveTemplate.class); super(FoodWaveTemplate.class);
} }
public List<FoodWaveTemplate> findAllTemplates() {
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<FoodWaveTemplate> cq = cb.createQuery(FoodWaveTemplate.class);
Root<FoodWaveTemplate> root = cq.from(FoodWaveTemplate.class);
cb.equal(root.get(FoodWaveTemplate_.event), eventbean.getCurrentEvent());
return getEm().createQuery(cq).getResultList();
}
} }
package fi.insomnia.bortal.beans; package fi.insomnia.bortal.beans;
import java.util.List;
import javax.ejb.Local; import javax.ejb.Local;
import fi.insomnia.bortal.model.FoodWave;
import fi.insomnia.bortal.model.FoodWaveTemplate; import fi.insomnia.bortal.model.FoodWaveTemplate;
@Local @Local
public interface FoodWaveBeanLocal { public interface FoodWaveBeanLocal {
void createTemplate(FoodWaveTemplate waveTemplate); List<FoodWaveTemplate> getTemplates();
FoodWaveTemplate saveOrCreateTemplate(FoodWaveTemplate template);
List<FoodWave> findShoppableFoodwaves();
FoodWaveTemplate saveTemplate(FoodWaveTemplate waveTemplate); FoodWave findFoodwave(Integer foodwaveId);
} }
...@@ -2,7 +2,7 @@ package fi.insomnia.bortal.model; ...@@ -2,7 +2,7 @@ package fi.insomnia.bortal.model;
public enum ProductFlag { public enum ProductFlag {
FOODWAVE_ITEM, // FOODWAVE_ITEM, Äy... Ei kai tämän täällä tarvitse olla....
PREPAID_CREDIT, PREPAID_CREDIT,
CREATE_NEW_PLACE_WHEN_BOUGHT, CREATE_NEW_PLACE_WHEN_BOUGHT,
RESERVE_PLACE_WHEN_BOUGHT, RESERVE_PLACE_WHEN_BOUGHT,
......
...@@ -9,6 +9,7 @@ public enum ShopPermission implements IAppPermission { ...@@ -9,6 +9,7 @@ public enum ShopPermission implements IAppPermission {
SHOP_TO_OTHERS, // ("Shop to other users"), SHOP_TO_OTHERS, // ("Shop to other users"),
SHOP_PRODUCTS, // ("Shop products to self"), SHOP_PRODUCTS, // ("Shop products to self"),
MANAGE_PRODUCTS, // ("Create and modify products"), MANAGE_PRODUCTS, // ("Create and modify products"),
SHOP_FOODWAVE, // Shop for food
; ;
...@@ -17,6 +18,7 @@ public enum ShopPermission implements IAppPermission { ...@@ -17,6 +18,7 @@ public enum ShopPermission implements IAppPermission {
public static final String S_SHOP_TO_OTHERS = "SHOP/SHOP_TO_OTHERS"; public static final String S_SHOP_TO_OTHERS = "SHOP/SHOP_TO_OTHERS";
public static final String S_SHOP_PRODUCTS = "SHOP/SHOP_PRODUCTS"; 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_MANAGE_PRODUCTS = "SHOP/MANAGE_PRODUCTS";
public static final String S_SHOP_FOODWAVE = "SHOP/SHOP_FOODWAVE";
private final String fullName; private final String fullName;
private final String key; private final String key;
......
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>LanBortalWeb</display-name> <display-name>LanBortalWeb</display-name>
<session-config> <session-config>
<session-timeout>30</session-timeout> <session-timeout>30</session-timeout>
</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>
</context-param> </context-param>
<context-param> <context-param>
<param-name>javax.faces.FACELETS_SKIP_COMMENTS</param-name> <param-name>javax.faces.FACELETS_SKIP_COMMENTS</param-name>
......
<!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">
<h:body>
<ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml">
<f:metadata>
<f:event type="preRenderView" listener="#{foodWaveView.initTemplateList()}" />
</f:metadata>
<ui:define name="title">
<h1>#{i18n['foodwave.template.list.title']}</h1>
</ui:define>
<ui:define name="content">
<h:dataTable var="templ" value="#{foodWaveView.templates}">
<h:column>
<h:outputText value="#{templ.name}" />
</h:column>
<h:column>
<h:link outcome="/foodadmin/editTemplate">
<f:param value="#{templ.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: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">
<h:body>
<ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml">
<f:metadata>
<f:event type="preRenderView" listener="#{foodWaveView.initTemplateList()}" />
</f:metadata>
<ui:define name="title">
<h1>#{i18n['foodwave.template.list.title']}</h1>
</ui:define>
<ui:define name="content">
<h:dataTable var="templ" value="#{foodWaveView.templates}">
<h:column>
<h:outputText value="#{templ.name}" />
</h:column>
<h:column>
<h:link outcome="/foodadmin/editTemplate">
<f:param value="#{templ.id}"/>
</h:link>
</h:column>
</h:dataTable>
</ui:define>
</ui:composition>
</h:body>
</html>
\ No newline at end of file
...@@ -12,6 +12,8 @@ ...@@ -12,6 +12,8 @@
<meta http-equiv="Content-Language" content="fi" /> <meta http-equiv="Content-Language" content="fi" />
<link rel="stylesheet" type="text/css" href="#{request.contextPath}/resources/style/insomnia2/css/tyyli.css" /> <link rel="stylesheet" type="text/css" href="#{request.contextPath}/resources/style/insomnia2/css/tyyli.css" />
<!-- general style for nonlayout elements -->
<link rel="stylesheet" type="text/css" href="#{request.contextPath}/resources/style/insomnia2/css/general.css" />
<ui:insert name="headerdata" /> <ui:insert name="headerdata" />
<h:outputScript name="prime_calendar.js" library="script" /> <h:outputScript name="prime_calendar.js" library="script" />
</h:head> </h:head>
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
<meta http-equiv="Content-Language" content="fi" /> <meta http-equiv="Content-Language" content="fi" />
<link rel="stylesheet" type="text/css" href="#{request.contextPath}/resources/style/template1/css/style.css" /> <link rel="stylesheet" type="text/css" href="#{request.contextPath}/resources/style/template1/css/style.css" />
<link rel="stylesheet" type="text/css" href="#{request.contextPath}/resources/style/template1/css/general.css" />
<ui:insert name="headerdata" /> <ui:insert name="headerdata" />
</h:head> </h:head>
......
...@@ -15,8 +15,6 @@ ...@@ -15,8 +15,6 @@
<ui:define name="content"> <ui:define name="content">
<h1>#{i18n['editplace.header']}</h1> <h1>#{i18n['editplace.header']}</h1>
<h1>edit:</h1>
<h:form id="placeEdit"> <h:form id="placeEdit">
<h:panelGrid columns="2"> <h:panelGrid columns="2">
<h:outputLabel value="#{i18n['place.name']}:" /> <h:outputLabel value="#{i18n['place.name']}:" />
...@@ -127,7 +125,7 @@ ...@@ -127,7 +125,7 @@
<h:outputLabel value="#{i18n['placegroup.creator']}" /> <h:outputLabel value="#{i18n['placegroup.creator']}" />
<h:link outcome="/useradmin/edit" value="#{placeView.place.group.creator.wholeName}" > <h:link outcome="/useradmin/edit" value="#{placeView.place.group.creator.wholeName}" >
<f:param name="userid" value="#{placeView.place.group.creator.id}"/> <f:param name="userid" value="#{placeView.place.group.creator.user.id}"/>
</h:link> </h:link>
</h:panelGrid> </h:panelGrid>
......
...@@ -7,35 +7,33 @@ ...@@ -7,35 +7,33 @@
</composite:interface> </composite:interface>
<composite:implementation> <composite:implementation>
<h:outputScript library="primefaces" name="jquery/jquery.js" target="head" />
<h:dataTable styleClass="bordertable" id="user" value="#{userSearchView.results}" var="user"> <h:dataTable styleClass="bordertable" id="user" value="#{userSearchView.results}" var="user">
<h:column> <h:column>
<f:facet name="header"> <f:facet name="header">
<h:link value="ID" includeViewParams="true">
<f:param name="sort" value="id" />
<f:param name="page" value="0" />
</h:link>
</f:facet>
<h:outputText value="#{user.id}" />
</h:column>
<h:column>
<f:facet name="header">
<h:link value="#{i18n['user.login']}" includeViewParams="true">
<f:param name="sort" value="login" />
<f:param name="page" value="0" />
</h:link>
</f:facet>
<h:outputText value="#{user.login}" />
</h:column>
<h:column>
<f:facet name="header">
<h:link value="#{i18n['user.nick']}" includeViewParams="true"> <h:link value="#{i18n['user.nick']}" includeViewParams="true">
<f:param name="sort" value="nick" /> <f:param name="sort" value="nick" />
<f:param name="page" value="0" /> <f:param name="page" value="0" />
</h:link> </h:link>
</f:facet> </f:facet>
<h:outputText value="#{user.nick}" /> <h:outputText styleClass="hoverable" value="#{(empty user.nick)?'----':user.nick}" />
<div class="userdata_popup">
<h:panelGrid columns="2">
<img style="width:100px;" src="#{request.contextPath}/dydata/userimage/#{user.currentImage.id}.img" alt="image" />
<h:panelGroup>
<h:outputText value="#{user.nick}"/> <br />
<h:outputText value="#{user.firstnames} #{user.lastname}"/> <br />
<hr />
<h:outputText value="#{user.address}"/> <br />
<h:outputText value="#{user.zip} #{user.postalTown}"/> <br />
<br />
<h:outputText value="#{user.phone}"/> <br />
<h:outputText value="#{user.email}"/> <br />
</h:panelGroup>
</h:panelGrid>
</div>
</h:column> </h:column>
<h:column> <h:column>
<f:facet name="header"> <f:facet name="header">
...@@ -56,42 +54,26 @@ ...@@ -56,42 +54,26 @@
</f:facet> </f:facet>
<h:outputText value="#{user.lastname}" /> <h:outputText value="#{user.lastname}" />
</h:column> </h:column>
<h:column>
<f:facet name="header">
<h:link value="#{i18n['user.email']}" includeViewParams="true">
<f:param name="sort" value="email" />
<f:param name="page" value="0" />
</h:link>
</f:facet>
<h:outputText value="#{user.email}" />
</h:column>
<!-- <h:column>
<f:facet name="header">
<h:outputText value="#{i18n['user.accountBalance']}" />
</f:facet>
<h:outputText value="#{user.accountBalance}">
<f:convertNumber />
</h:outputText>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{i18n['user.image']}" />
</f:facet>
<h:commandLink action="#{userView.showImage()}"
value="#{(empty user.currentImage)?i18n['user.noImage']:i18n['user.hasImage']}"
/>
</h:column>
-->
<h:column> <h:column>
<h:link outcome="/useradmin/edit" value="#{i18n['user.edit']}"> <button onClick="location.replace('#{request.contextPath}/useradmin/edit.jsf?user.id=#{user.id}')">#{i18n['user.edit']}</button>
<f:param name="userid" value="#{user.id}" />
</h:link>
</h:column> </h:column>
<!-- <h:column> <!-- <h:column>
<h:commandButton action="#{userView.shop()}" value="#{i18n['user.shop']}" /> <h:commandButton action="#{userView.shop()}" value="#{i18n['user.shop']}" />
</h:column> --> </h:column> -->
</h:dataTable> </h:dataTable>
<script>
jQuery(function() {
jQuery(".hoverable").hover(function () {
jQuery(this).next().fadeIn();
},
function () {
jQuery(this).next().fadeOut();
});
});
</script>
</composite:implementation> </composite:implementation>
</html> </html>
/* General css, use for non-layout purposes for general elements */
/* userlistview popup */
.userdata_popup {
position: absolute;
border: 1px solid black;
backgrond: white;
border-radius: 3px;
display: none;
}
/* general class for hoverable usage */
.hoverable {
}
\ No newline at end of file
/* General css, use for non-layout purposes for general elements */
/* userlistview popup */
.userdata_popup {
position: absolute;
border: 1px solid black;
background: white;
border-radius: 3px;
display: none;
width: 300px;
height: 150px;
}
/* general class for hoverable usage */
.hoverable {
}
\ No newline at end of file
...@@ -330,6 +330,7 @@ permissiondenied.alreadyLoggedIn = You don't have enough rights ...@@ -330,6 +330,7 @@ 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.
place.buyable = Buyable
place.code = Placecode place.code = Placecode
place.commit = Save place.commit = Save
place.description = Description place.description = Description
...@@ -363,6 +364,7 @@ placegroup.details = Details ...@@ -363,6 +364,7 @@ placegroup.details = Details
placegroup.edit = Show placegroup.edit = Show
placegroup.edited = Edited placegroup.edited = Edited
placegroup.name = Name placegroup.name = Name
placegroup.placename = Place
placegroup.places = Places placegroup.places = Places
placegroup.printPdf = Print placecodes placegroup.printPdf = Print placecodes
......
...@@ -317,6 +317,7 @@ permissiondenied.alreadyLoggedIn = Sinulla ei ole riitt\u00E4v\u00E4sti oikeuksi ...@@ -317,6 +317,7 @@ permissiondenied.alreadyLoggedIn = Sinulla ei ole riitt\u00E4v\u00E4sti oikeuksi
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.
place.buyable = Ostettavissa
place.code = Paikkakoodi place.code = Paikkakoodi
place.commit = Tallenna place.commit = Tallenna
place.description = Kuvaus place.description = Kuvaus
...@@ -352,6 +353,7 @@ placegroup.details = Tiedot ...@@ -352,6 +353,7 @@ placegroup.details = Tiedot
placegroup.edit = N\u00E4yt\u00E4 placegroup.edit = N\u00E4yt\u00E4
placegroup.edited = Muokattu placegroup.edited = Muokattu
placegroup.name = Nimi placegroup.name = Nimi
placegroup.placename = Paikka
placegroup.places = Paikat placegroup.places = Paikat
placegroup.printPdf = Tulosta paikkakoodit placegroup.printPdf = Tulosta paikkakoodit
......
package fi.insomnia.bortal.web.cdiview.shop; package fi.insomnia.bortal.web.cdiview.shop;
import java.math.BigDecimal; import java.util.List;
import java.util.Iterator;
import javax.ejb.EJB; import javax.ejb.EJB;
import javax.enterprise.context.ConversationScoped; import javax.enterprise.context.ConversationScoped;
import javax.faces.model.ListDataModel;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Named; import javax.inject.Named;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.beans.BillBeanLocal; import fi.insomnia.bortal.beans.FoodWaveBeanLocal;
import fi.insomnia.bortal.beans.EventBeanLocal;
import fi.insomnia.bortal.beans.ProductBeanLocal;
import fi.insomnia.bortal.enums.apps.ShopPermission; import fi.insomnia.bortal.enums.apps.ShopPermission;
import fi.insomnia.bortal.model.Bill;
import fi.insomnia.bortal.model.EventUser; import fi.insomnia.bortal.model.EventUser;
import fi.insomnia.bortal.model.Product; import fi.insomnia.bortal.model.FoodWave;
import fi.insomnia.bortal.model.ProductFlag;
import fi.insomnia.bortal.web.annotations.SelectedUser; import fi.insomnia.bortal.web.annotations.SelectedUser;
import fi.insomnia.bortal.web.cdiview.GenericCDIView; import fi.insomnia.bortal.web.cdiview.GenericCDIView;
import fi.insomnia.bortal.web.helpers.ProductShopItem;
@Named @Named
@ConversationScoped @ConversationScoped
public class FoodShopView extends GenericCDIView { public class FoodShopView extends GenericCDIView {
private static final Logger logger = LoggerFactory.getLogger(FoodShopView.class); private static final Logger logger = LoggerFactory.getLogger(FoodShopView.class);
/**
*
*/
private static final long serialVersionUID = 1288114954999406683L;
@EJB
private transient ProductBeanLocal productBean;
@EJB
private transient BillBeanLocal billbean;
@EJB private static final long serialVersionUID = 1288114954999406683L;
private transient EventBeanLocal eventbean;
@Inject @Inject
@SelectedUser @SelectedUser
private EventUser user; private EventUser user;
private boolean payInstant; @EJB
private FoodWaveBeanLocal foodwavebean;
private BigDecimal cash = BigDecimal.ZERO;
private transient ListDataModel<ProductShopItem> shoppingcart;
@Inject
private BillListView billListView;
@Inject
private BillReviewView billReviewView;
public void initBillView()
{
if (requirePermissions(ShopPermission.LIST_USERPRODUCTS) && shoppingcart == null) {
shoppingcart = new ListDataModel<ProductShopItem>(ProductShopItem.productList(productBean.listUserShoppableProducts()));
logger.debug("Initialized billing shoppingcart to {}", shoppingcart);
this.beginConversation();
}
}
public void initShopView() {
if (requirePermissions(ShopPermission.SHOP_TO_OTHERS) && shoppingcart == null) {
shoppingcart = new ListDataModel<ProductShopItem>(ProductShopItem.productGTList(productBean.findProductsByFlag(ProductFlag.FOODWAVE_ITEM)));
logger.debug("Initialized shoppingcart to {}", shoppingcart);
this.beginConversation();
}
}
public String add(Integer count)
{
ProductShopItem item = shoppingcart.getRowData();
item.setCount(item.getCount().add(BigDecimal.valueOf(count)));
return null;
}
public String addOne()
{
return add(1);
}
public String addMinusOne()
{
return add(-1);
}
public String addTen()
{
return add(10);
}
public String addMinusTen()
{
return add(-10);
}
public BigDecimal getAccountBalance() private List<FoodWave> foodwaves;
{ private Integer foodwaveId;
BigDecimal ret = user.getAccountBalance(); private FoodWave foodwave;
ret = ret.add(getCash());
ret = ret.subtract(getTotalPrice());
logger.info("User accountbalance {}, cash{}, total {}. retBalance {}", new Object[] {
user.getAccountBalance(), getCash(), getTotalPrice(), ret
});
return ret;
}
public BigDecimal getTotalPrice() public void initFoodwaves()
{ {
BigDecimal ret = BigDecimal.ZERO; if (super.requirePermissions(ShopPermission.SHOP_FOODWAVE))
for (ProductShopItem cart : shoppingcart)
{ {
ret = ret.add(cart.getPrice()); foodwaves = foodwavebean.findShoppableFoodwaves();
}
return ret;
}
public String commitBillCart() {
logger.debug("Committing billCart");
if (!productsInCart()) {
super.addFaceMessage("productshop.noItemsInCart");
return null;
}
Bill bill = new Bill(eventbean.getCurrentEvent(), user);
bill.setOurReference(eventbean.getCurrentEvent().getName());
for (ProductShopItem shopitem : shoppingcart) {
if (shopitem.getCount().compareTo(BigDecimal.ZERO) > 0) {
bill.addProduct(shopitem.getProduct(), shopitem.getCount());
} }
} }
billbean.createBill(bill);
addFaceMessage("productshop.billCreated");
cash = BigDecimal.ZERO;
shoppingcart = null;
billReviewView.setBill(bill);
return "showCreatedBill"; public void initFoodwave()
}
public String commitShoppingCart()
{ {
EventUser retuser = null; if (super.requirePermissions(ShopPermission.SHOP_FOODWAVE) && foodwave == null)
for (ProductShopItem shopitem : shoppingcart) {
if (shopitem.getCount().compareTo(BigDecimal.ZERO) > 0) {
retuser = productBean.createAccountEvent(shopitem.getProduct(), shopitem.getCount(), user).getUser();
}
}
if (cash != null && cash.compareTo(BigDecimal.ZERO) != 0)
{
Product credProd = productBean.findCreditProduct();
retuser = productBean.createAccountEvent(credProd, cash, user).getUser();
}
if (user != null)
{ {
user = retuser; foodwave = foodwavebean.findFoodwave(foodwaveId);
} super.beginConversation();
shoppingcart = null;
cash = BigDecimal.ZERO;
return null;
}
public void setUser(EventUser user) {
this.user = user;
} }
public EventUser getUser() {
return user;
} }
public void setShoppingcart(ListDataModel<ProductShopItem> shoppingcart) {
this.shoppingcart = shoppingcart;
}
public ListDataModel<ProductShopItem> getShoppingcart() {
return shoppingcart;
}
private boolean productsInCart() {
Iterator<ProductShopItem> nullcheckIter = shoppingcart.iterator();
while (nullcheckIter.hasNext()) {
if (nullcheckIter.next().getCount().compareTo(BigDecimal.ZERO) > 0) {
return true;
}
}
return false;
}
public void setPayInstant(boolean payInstant) {
if (payInstant)
{
getCash();
}
this.payInstant = payInstant;
}
public boolean isPayInstant() {
return payInstant;
}
public BillListView getBillListView() {
return billListView;
}
public void setBillListView(BillListView billListView) {
this.billListView = billListView;
}
public BigDecimal getCash() {
if (payInstant) {
cash = getTotalPrice();
logger.info("Getting instantcash as {}", cash);
}
if (cash == null) {
cash = BigDecimal.ZERO;
}
return cash;
}
public void setCash(BigDecimal cash) {
this.cash = cash;
}
} }
package fi.insomnia.bortal.web.cdiview.shop;
import javax.ejb.EJB;
import javax.enterprise.context.ConversationScoped;
import javax.faces.model.ListDataModel;
import javax.inject.Named;
import fi.insomnia.bortal.beans.FoodWaveBeanLocal;
import fi.insomnia.bortal.enums.apps.ShopPermission;
import fi.insomnia.bortal.model.FoodWaveTemplate;
import fi.insomnia.bortal.web.cdiview.GenericCDIView;
@Named
@ConversationScoped
public class FoodWaveView extends GenericCDIView {
private static final long serialVersionUID = 7281708393927365603L;
@EJB
private FoodWaveBeanLocal foodwaveBean;
private ListDataModel<FoodWaveTemplate> templates;
private FoodWaveTemplate template;
public void initTemplateList()
{
if (super.requirePermissions(ShopPermission.MANAGE_PRODUCTS))
{
templates = new ListDataModel<FoodWaveTemplate>(foodwaveBean.getTemplates());
super.beginConversation();
}
}
public void initCreateTemplate()
{
if (super.requirePermissions(ShopPermission.MANAGE_PRODUCTS) && getTemplate() == null)
{
setTemplate(new FoodWaveTemplate());
super.beginConversation();
}
}
public String editTemplate()
{
setTemplate(templates.getRowData());
return "/foodadmin/editTemplate";
}
public String saveTemplate()
{
setTemplate(foodwaveBean.saveOrCreateTemplate(getTemplate()));
return null;
}
public FoodWaveTemplate getTemplate() {
return template;
}
public void setTemplate(FoodWaveTemplate template) {
this.template = template;
}
}
...@@ -53,7 +53,7 @@ Huom! Lue komennot läpi ja muokkaa muuttujat sopiviksi! ...@@ -53,7 +53,7 @@ Huom! Lue komennot läpi ja muokkaa muuttujat sopiviksi!
12. Glassfish Default Principal to Role Mapping 12. Glassfish Default Principal to Role Mapping
HUOM! 403 asioista, ellei tätä ole ruksittu:
403 asioista, ellei tätä ole ruksittu:
Configurations -> server-config -> Security -> Default Principal To Role Mapping -> Enabled Configurations -> server-config -> Security -> Default Principal To Role Mapping -> Enabled
13. Käynnistä glassfish uudelleen että kaikki asetukset tulevat voimaan...
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!