Commit 823c4408 by Tuomas Riihimäki

Insomnian aloitustilanne.

1 parent 431b6cbd
Showing with 412 additions and 108 deletions
......@@ -10,12 +10,16 @@ import java.util.Map.Entry;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.enums.Permission;
import fi.insomnia.bortal.enums.RolePermission;
import fi.insomnia.bortal.facade.AccountEventFacade;
import fi.insomnia.bortal.model.AccountEvent;
import fi.insomnia.bortal.model.EventPk;
import fi.insomnia.bortal.model.LanEvent;
import fi.insomnia.bortal.model.Place;
import fi.insomnia.bortal.model.Product;
import fi.insomnia.bortal.model.Role;
import fi.insomnia.bortal.model.User;
......@@ -37,6 +41,10 @@ public class AccountEventBean implements AccountEventBeanLocal {
private EventBeanLocal eventBean;
@EJB
private ProductBeanLocal prodbean;
@EJB
private PlaceBeanLocal placebean;
private static final Logger logger = LoggerFactory.getLogger(AccountEventBean.class);
public AccountEventBean() {
super();
......@@ -76,20 +84,36 @@ public class AccountEventBean implements AccountEventBeanLocal {
@Override
public List<AccountEvent> shopCash(User shoppingUser, Map<Product, BigDecimal> shopMap, boolean buyInstant) {
logger.debug("Shoping cash. buyinstant {}", buyInstant);
userbean.fatalPermission(Permission.SHOP, RolePermission.EXECUTE, "User tried to create accountEvents via shop without SHOP:EXECUTE");
ArrayList<AccountEvent> ret = new ArrayList<AccountEvent>();
LanEvent ev = eventBean.getCurrentEvent();
User seller = userbean.getCurrentUser();
BigDecimal tot = BigDecimal.ZERO;
for (Entry<Product, BigDecimal> prodentry : shopMap.entrySet()) {
AccountEvent ac = new AccountEvent(ev, shoppingUser, prodentry.getKey(), prodentry.getKey().getPrice(), prodentry.getValue(), Calendar.getInstance());
if (buyInstant && prodentry.getKey().getPrice().compareTo(BigDecimal.ZERO) > 0) {
tot = tot.add(prodentry.getValue().multiply(prodentry.getKey().getPrice()));
}
if (prodentry.getKey().isPrepaidInstant() && prodentry.getKey().getPlaces() != null && prodentry.getKey().getPlaces().size() > 0) {
for (Place p : prodentry.getKey().getPlaces()) {
if (!p.isTaken()) {
placebean.lockPlaces(shoppingUser, p);
break;
}
}
}
ac.setSeller(seller);
shoppingUser.getAccountEvents().add(ac);
}
logger.debug("ShopCash price {}", tot);
if (buyInstant && tot.compareTo(BigDecimal.ZERO) > 0) {
logger.debug("Creating buy instant product!");
Product creditProd = prodbean.findCreditProduct();
AccountEvent ac = new AccountEvent(ev, shoppingUser, creditProd, creditProd.getPrice(), tot, Calendar.getInstance());
shoppingUser.getAccountEvents().add(ac);
......
......@@ -263,4 +263,40 @@ public class PlaceBean implements PlaceBeanLocal {
}
}
@Override
public Place lockPlaces(User user, Place place) {
if (place.isTaken()) {
logger.warn("Place {} is already taken", place);
throw new PermissionDeniedException(secubean, userbean.getCurrentUser(), "NO RIGHT");
}
userbean.fatalPermission(Permission.SHOP, RolePermission.EXECUTE, "User tried to lock place without SHOP:EXECUTE");
LanEvent ev = eventBean.getCurrentEvent();
PlaceGroup pg = new PlaceGroup(ev, Calendar.getInstance(), Calendar.getInstance(), true);
pg.setCreator(user);
user.getPlaceGroups().add(pg);
place.reserve(user);
place.buy(pg);
pg.getMembers().add(new GroupMembership(ev, pg, place, gmemfacade.createInviteToken(ev)));
boolean foundGm = false;
for (GroupMembership gm : user.getGroupMemberships()) {
if (gm.getId().getEventId().equals(ev.getId())) {
foundGm = true;
break;
}
}
if (!foundGm) {
GroupMembership gm = pg.getMembers().get(0);
gm.setUser(user);
user.getGroupMemberships().add(gm);
// gmemfacade.merge(gm);
}
pgfacade.create(pg);
// userbean.mergeChanges(user);
return placeFacade.merge(place);
}
}
......@@ -81,15 +81,14 @@ public class PlaceGroupBean implements PlaceGroupBeanLocal {
List<GroupMembership> ret = gmemfacade.findMemberOrCreator(eventbean.getCurrentEvent(), user);
return ret;
}
@Override
public List<GroupMembership> getMemberships(User user)
{
public List<GroupMembership> getMemberships(User user) {
userbean.fatalNotLoggedIn();
List<GroupMembership> ret = gmemfacade.findMemberships(eventbean.getCurrentEvent(), user);
return ret;
return ret;
}
@Override
public boolean associateToToken(User user, String token) {
token = token.trim();
......@@ -99,6 +98,7 @@ public class PlaceGroupBean implements PlaceGroupBeanLocal {
if (mem != null && mem.getUser() == null) {
mem.setUser(user);
user.getGroupMemberships().add(mem);
gmemfacade.merge(mem);
ret = true;
}
......
......@@ -269,8 +269,12 @@ public class UserBean implements UserBeanLocal {
@Override
public UserImage uploadImage(Integer userid, String contentType, byte[] image, String filename, String description) {
fatalNotLoggedIn();
User user = getCurrentUser();
logger.debug("uploading image to userid {}", userid);
if (userid == null || userid.equals(0)) {
userid = user.getId();
}
if (!getCurrentUser().getId().equals(userid)) {
fatalPermission(Permission.USER_MANAGEMENT, RolePermission.EXECUTE, "usert tried to save picture to userid " + userid + " without sufficient permissions!");
user = userFacade.find(userid);
......@@ -284,7 +288,10 @@ public class UserBean implements UserBeanLocal {
// setting uploaded image as the default.
user.setCurrentImage(userimage);
user.getUserImageList().add(userimage);
userFacade.merge(user);
return userimage;
}
......@@ -303,7 +310,6 @@ public class UserBean implements UserBeanLocal {
return ret;
}
public List<User> searchName(String name) {
return userFacade.searchForName(name);
}
......@@ -362,5 +368,9 @@ public class UserBean implements UserBeanLocal {
}
@Override
public User findById(Integer id) {
return userFacade.find(id);
}
}
package fi.insomnia.bortal.beans;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Date;
import javax.annotation.Resource;
......@@ -38,6 +43,8 @@ public class UtilBean implements UtilBeanLocal {
private static final Logger logger = LoggerFactory.getLogger(UtilBean.class);
private static final int SCALEWIDTH = 640;
@PersistenceContext
private EntityManager em;
......@@ -84,10 +91,13 @@ public class UtilBean implements UtilBeanLocal {
}
public void convertImage(User user) {
public boolean convertImage(User user) {
UserImage oldpic = user.getCurrentImage();
if (oldpic == null || oldpic.getMimeType() == null || oldpic.getMimeType().isEmpty() || oldpic.getMimeType().contains("jpeg")) {
return;
if (oldpic == null || oldpic.getMimeType() == null || oldpic.getMimeType().isEmpty()) {
return false;
}
for (String imgtype : ImageIO.getReaderFormatNames()) {
logger.debug("found imgtype {}", imgtype);
}
logger.debug("converting users image id {}, type {} to jpeg", oldpic.getId(), oldpic.getMimeType());
......@@ -96,9 +106,32 @@ public class UtilBean implements UtilBeanLocal {
try {
BufferedImage face = ImageIO.read(naamastream);
boolean isJpeg = oldpic.getMimeType().contains("jpeg");
if (face == null) {
return false;
}
if (face.getWidth() > 700) {
logger.debug("Scaling from {} {} ", face.getWidth(), face.getHeight());
BigDecimal scale = new BigDecimal(SCALEWIDTH).divide(new BigDecimal(face.getWidth()), 5, RoundingMode.HALF_UP);
int height = scale.multiply(new BigDecimal(face.getHeight())).intValue();
BufferedImage scaledImage = new BufferedImage(
SCALEWIDTH, height, face.getType());
Graphics2D graphics2D = scaledImage.createGraphics();
graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BILINEAR);
graphics2D.drawImage(face, 0, 0, SCALEWIDTH, height, null);
face = scaledImage;
} else if (isJpeg) {
return false;
}
ByteArrayOutputStream naamaout = new ByteArrayOutputStream();
ImageIO.write(face, "jpeg", naamaout);
UserImage img = new UserImage();
UserImage img = new UserImage(user);
img.setDescription("changed imagetype from image id: " + oldpic.getId());
img.setImageData(naamaout.toByteArray());
img.setMimeType("image/jpeg");
......@@ -106,10 +139,11 @@ public class UtilBean implements UtilBeanLocal {
user.setCurrentImage(img);
user.getUserImageList().add(img);
userbean.mergeChanges(user);
} catch (IOException e) {
logger.warn("error converting image ", e);
}
return true;
}
}
......@@ -46,4 +46,6 @@ public interface PlaceBeanLocal {
void checkMemberships();
Place lockPlaces(User rowData, Place place);
}
......@@ -53,6 +53,8 @@ public interface UserBeanLocal {
List<Role> findUsersRoles(User u);
User findById(Integer integer);
}
......@@ -9,8 +9,9 @@ public interface UtilBeanLocal {
boolean sendMail(MailMessage message);
void convertImage(User user);
boolean convertImage(User user);
void checkAllUsersImages();
}
......@@ -249,7 +249,7 @@ public class User implements ModelInterface {
}
public String getWholeName() {
return new StringBuilder(firstnames).append(" ").append(lastname).toString();
return new StringBuilder().append(firstnames).append(" ").append(lastname).toString();
}
public String getLastname() {
......
<!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:ui="http://java.sun.com/jsf/facelets">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets">
<head>
<title><ui:insert name="title">Default title</ui:insert></title>
<title><ui:insert name="title">Default title</ui:insert></title>
</head>
<body>
<object >
<param name="foo" width="640" height="480"
value="flash/eventmap.swf?mapId=1">
<embed width="640" height="480"
src="flash/eventmap.swf?mapId=1"> </embed></param>
</object>
<object>
<param name="foo" width="640" height="480" value="flash/Uploader.swf"><embed width="640" height="480"
src="flash/Uploader.swf"> </embed></param>
</object>
</body>
</html>
......@@ -31,7 +31,8 @@
<h:commandButton value="Check all users images" action="#{TestDataView.checkImages()}" />
<br />
<h:commandButton value="Resize all images" action="#{TestDataView.convertImages()}" />
<br />
</h:form>
</h:body>
</html>
......
<!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:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<title></title>
</h:head>
<h:body>
<ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml">
<ui:param name="thispage" value="page.viewexpired" />
<ui:define name="content">
<param name="foo" width="640" height="480"
value="#{request.contextPath}/flash/Uploader.swf"><embed width="640"
height="480" src="#{request.contextPath}/flash/Uploader.swf"> </embed></param>
</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">
......@@ -55,8 +56,45 @@
<h:commandButton id="commitbtn" action="#{placeView.save()}" value="#{i18n['place.commit']}" />
</h:form>
<h:panelGrid columns="2" rendered="#{empty placeView.place.group}">
<h:form id="usersearchform">
<h:outputText value="#{i18n['user.searchUser']}" />
<h:inputText value="#{placeView.searchuser}" />
<h:commandButton action="#{placeView.searchUser()}" value="#{i18n['user.search']}" />
</h:form>
</h:panelGrid>
<h:form id="userReserveList" rendered="#{!empty placeView.userlist}">
<h:dataTable value="#{placeView.userlist}" var="user">
<h:column>
<f:facet name="header">
<h:outputText value="Id" />
</f:facet>
<h:outputText value="#{user.id}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{i18n['user.login']}" />
</f:facet>
<h:outputText value="#{user.login}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{i18n['user.nick']}" />
</f:facet>
<h:outputText value="#{user.nick}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{i18n['user.firstNames']}" />
</f:facet>
<h:outputText value="#{user.firstnames}" />
</h:column>
<h:column>
<h:commandButton action="#{placeView.reserveForUser()}" value="#{i18n['place.reserveForUser']}" />
</h:column>
</h:dataTable>
</h:form>
#{placeView.initGroupsPlacelist()}
<h:form rendered="#{!empty placeView.place.group and placeView.place.group.places.size() gt 0}">
......@@ -94,6 +132,13 @@
<h:column>
<h:commandButton action="#{placeView.editPlacegroupPlace()}" value="#{i18n['place.edit']}" />
</h:column>
<h:column>
<h:outputText value="#{place.placeReserver.user.wholeName}" />
(<h:outputText value="#{place.placeReserver.user.nick}" />)
</h:column>
<h:column>
</h:column>
</h:dataTable>
......
......@@ -50,6 +50,8 @@
<h:commandButton action="#{userView.edit()}" value="#{i18n['user.edit']}" />
</h:column>
</h:dataTable>
</h:form>
</composite:implementation>
</html>
......
......@@ -8,13 +8,9 @@
</composite:interface>
<composite:implementation>
<tools:canWrite target="USER_MANAGEMENT">
<h:form>
<h:commandButton action="#{userView.nothing()}" value="reload page" />
</h:form>
</tools:canWrite>
<a href="#{request.contextPath}/flash/Uploader.swf" onclick="var newwin = window.open('#{request.contextPath}/flash/Uploader.swf?userid=#{userView.user.id}', 'imagesubmitpopup', 'height=480,width=640'); this.target='imagesubmitpopup'; newwin.focus(); return false; " target="_blank">#{i18n['userimage.webcam']}</a>
<form
onsubmit="window.open('', 'imagesubmitpopup', 'height=200,width=400'); this.target='imagesubmitpopup'; return true; "
onsubmit="window.open('', 'imagesubmitpopup', 'height=240,width=320'); this.target='imagesubmitpopup'; return true; "
action="#{request.contextPath}/UploadServlet?type=userimage" enctype="multipart/form-data" method="post">
<p><input type="hidden" name="id" value="#{userView.user.id}" /> Voit lisätä kuvan kävijälippuasi varten. Näin
nopeutat asiointiasi tapahtumaan tullessasi.</p>
......@@ -28,7 +24,9 @@
</h:panelGrid></form>
<h2>#{i18n['user.thisIsCurrentImage']}</h2>
<h:form>
<h:commandButton action="#{userView.reloadUser()}" value="Päivitä kuva" />
</h:form>
<h:outputText rendered="#{empty userView.user.currentImage}" value="#{i18n['user.noCurrentImage']}" />
<h:panelGroup rendered="#{!empty userView.user.currentImage}">
<img width="300" src="#{request.contextPath}/Userimage?imageid=#{userView.user.currentImage.id}" alt="image" />
......@@ -38,6 +36,8 @@
<div><h:outputText value="Mime: #{userView.user.currentImage.mimeType}" /> <h:form id="imageconvert">
<h:commandButton action="#{userView.recheckImagetype()}" value="Check imagetype" />
</h:form></div>
</tools:canWrite>
</composite:implementation>
......
......@@ -31,63 +31,64 @@
</h:form>
</h:panelGrid>
<h:dataTable rendered="#{!empty readerView.userlist}" border="1" id="userassoclist" value="#{readerView.userlist}"
var="user">
<h:column>
<f:facet name="header">
<h:outputText value="Id" />
</f:facet>
<h:outputText value="#{user.user.id}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{i18n['user.login']}" />
</f:facet>
<h:outputText value="#{user.user.login}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{i18n['user.nick']}" />
</f:facet>
<h:outputText value="#{user.user.nick}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{i18n['user.firstNames']}" />
</f:facet>
<h:outputText value="#{user.user.firstnames}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{i18n['user.lastName']}" />
</f:facet>
<h:outputText value="#{user.user.lastname}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{i18n['user.email']}" />
</f:facet>
<h:outputText value="#{user.user.email}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{i18n['readerview.cards']}" />
</f:facet>
<h:dataTable value="#{user.cards}" var="card">
<h:column>
<h:outputText value="#{card.template.name}" />
</h:column>
<h:column>
<h:outputText value="#{card.printCount}" />
</h:column>
<h:column>
<h:commandButton action="#{readerView.assocToCard()}" value="#{i18n['reader.assocToCard']}" />
</h:column>
</h:dataTable>
</h:column>
</h:dataTable>
<h:form rendered="#{!empty readerView.userlist}" id="usercardclickform">
<h:dataTable border="1" id="userassoclist" value="#{readerView.userlist}" var="user">
<h:column>
<f:facet name="header">
<h:outputText value="Id" />
</f:facet>
<h:outputText value="#{user.user.id}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{i18n['user.login']}" />
</f:facet>
<h:outputText value="#{user.user.login}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{i18n['user.nick']}" />
</f:facet>
<h:outputText value="#{user.user.nick}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{i18n['user.firstNames']}" />
</f:facet>
<h:outputText value="#{user.user.firstnames}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{i18n['user.lastName']}" />
</f:facet>
<h:outputText value="#{user.user.lastname}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{i18n['user.email']}" />
</f:facet>
<h:outputText value="#{user.user.email}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{i18n['readerview.cards']}" />
</f:facet>
<h:dataTable value="#{user.cards}" var="card">
<h:column>
<h:outputText value="#{card.template.name}" />
</h:column>
<h:column>
<h:outputText value="#{card.printCount}" />
</h:column>
<h:column>
<h:commandButton action="#{readerView.assocToCard()}" value="#{i18n['reader.assocToCard']}" />
</h:column>
</h:dataTable>
</h:column>
</h:dataTable>
</h:form>
</ui:define>
</ui:composition>
</h:body>
......
......@@ -13,16 +13,24 @@
<h:panelGrid columns="2">
<h:outputLabel value="#{i18n['shop.user']}" />
<h:outputText value="#{productShopView.shoppingUser.wholeName} #{productShopView.shoppingUser.nick}" />
<h:outputLabel value="#{i18n['shop.accountBalance']}" />
<h:outputText value="#{productShopView.shoppingUser.accountBalance}">
<f:convertNumber />
</h:outputText>
<h:outputText value="#{i18n['product.shopInstant']}" />
<h:selectBooleanCheckbox value="#{productShopView.payInstant}" />
</h:panelGrid>
<products:shop commitaction="#{productShopView.commitShoppingCart()}" items="#{productShopView.billCart}"
commitValue="#{i18n['productshop.commit']}" />
</ui:define>
</ui:composition>
</h:body>
</html>
\ No newline at end of file
......@@ -19,6 +19,15 @@
</h:panelGrid>
<users:sendImage />
<h:dataTable border="1" id="user" value="#{userView.user.userImageList}" var="img">
<h:column>
<h:outputText value="#{img.name}" />
</h:column>
<h:column>
<h:outputText value="#{img.mimeType}" />
</h:column>
</h:dataTable>
</ui:define>
</ui:composition>
......
......@@ -21,6 +21,8 @@
<tools:canWrite target="MAP">
<h1>#{i18n['user.placegroups']}</h1>
<h:form id="placegrouplist">
<h:dataTable border="1" id="placegroup" value="#{userView.placegroups}" var="placegroup">
......
......@@ -22,6 +22,7 @@ import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.beans.EventMapBeanLocal;
import fi.insomnia.bortal.beans.UserBeanLocal;
import fi.insomnia.bortal.beans.UtilBeanLocal;
import fi.insomnia.bortal.model.UserImage;
/**
......@@ -53,6 +54,9 @@ public class UploadServlet extends HttpServlet {
@EJB
private EventMapBeanLocal eventmapbean;
@EJB
private UtilBeanLocal utilbean;
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
......@@ -73,14 +77,22 @@ public class UploadServlet extends HttpServlet {
String description = "";
String filename = "";
String idstr = request.getParameter("id");
if (idstr != null) {
destId = Integer.parseInt(idstr);
}
for (Object ti : upload.parseRequest(request)) {
if (ti instanceof FileItem) {
FileItem fi = (FileItem) ti;
if (fi.getFieldName().equals("id")) {
destId = Integer.parseInt(fi.getString());
} else if (fi.getFieldName().equals("description")) {
description = fi.getString();
} else if (fi.getFieldName().equals("file")) {
} else if (fi.getFieldName().equals("file") || fi.getFieldName().equals("Filedata")) {
imagedata = fi.get();
filename = fi.getName();
contenttype = fi.getContentType();
......@@ -90,7 +102,9 @@ public class UploadServlet extends HttpServlet {
}
String type = request.getParameter("type");
if (type.equals("userimage")) {
userbean.uploadImage(destId, contenttype, imagedata, filename, description);
logger.debug("Uploading userimage for user {}");
UserImage userimage = userbean.uploadImage(destId, contenttype, imagedata, filename, description);
utilbean.convertImage(userimage.getUser());
} else if (type.equals("mapimage")) {
eventmapbean.sendImage(destId, imagedata);
} else {
......
......@@ -21,6 +21,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.beans.UserBeanLocal;
import fi.insomnia.bortal.model.User;
import fi.insomnia.bortal.model.UserImage;
/**
......@@ -59,17 +60,31 @@ public class UserImageServlet extends HttpServlet {
* response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String imageidobj = request.getParameter("imageid");
String useridStr = request.getParameter("userid");
String keyhashStr = request.getParameter("hash");
UserImage image = null;
if (useridStr != null && "i-AW1Nfzk5KTi8iaLYua".equals(keyhashStr)) {
int userid = Integer.parseInt(useridStr);
User usr = userbean.findById(userid);
if (usr != null) {
image = usr.getCurrentImage();
}
int imageid = 0;
if (imageidobj != null) {
imageid = Integer.parseInt(imageidobj);
}
} else {
String imageidobj = request.getParameter("imageid");
UserImage image = userbean.findUserImage(imageid);
int imageid = 0;
if (imageidobj != null) {
imageid = Integer.parseInt(imageidobj);
}
image = userbean.findUserImage(imageid);
}
if (image == null) {
response.setStatus(HttpServletResponse.SC_NOT_FOUND);
response.getWriter().append("Not Found");
response.getWriter().append("Not Found");
} else {
response.setContentType(image.getMimeType());
response.getOutputStream().write(image.getImageData());
......
......@@ -12,7 +12,9 @@ import fi.insomnia.bortal.beans.PlaceBeanLocal;
import fi.insomnia.bortal.beans.UserBeanLocal;
import fi.insomnia.bortal.enums.Permission;
import fi.insomnia.bortal.enums.RolePermission;
import fi.insomnia.bortal.exceptions.BortalCatchableException;
import fi.insomnia.bortal.model.Place;
import fi.insomnia.bortal.model.User;
@ManagedBean(name = "placeView")
@SessionScoped
......@@ -26,10 +28,29 @@ public class PlaceView {
private PlaceBeanLocal placebean;
private ListDataModel<Place> placesPlacegroup;
private String searchuser;
private ListDataModel<User> userlist;
public String editPlace(Place place) {
this.place = place;
logger.debug("editing place {}", place);
searchuser = null;
userlist = null;
return "/place/edit";
}
public String reserveForUser() {
place = placebean.lockPlaces(userlist.getRowData(), place);
searchuser = null;
userlist = null;
return null;
}
public String searchUser() {
userlist = new ListDataModel<User>(userbean.searchName(searchuser));
return null;
}
public Place getPlace() {
......@@ -82,4 +103,20 @@ public class PlaceView {
placebean.checkMemberships();
return null;
}
public void setSearchuser(String searchuser) {
this.searchuser = searchuser;
}
public String getSearchuser() {
return searchuser;
}
public void setUserlist(ListDataModel<User> userlist) {
this.userlist = userlist;
}
public ListDataModel<User> getUserlist() {
return userlist;
}
}
......@@ -57,6 +57,8 @@ public class ProductShopView {
@EJB
private AccountEventBeanLocal accountEventBean;
private boolean payInstant;
private boolean productsInCart() {
Iterator<ProductShopItem> nullcheckIter = billCart.iterator();
while (nullcheckIter.hasNext()) {
......@@ -113,11 +115,13 @@ public class ProductShopView {
}
}
List<AccountEvent> executed = accountEventBean.shopCash(shoppingUser, shopMap, true);
List<AccountEvent> executed = accountEventBean.shopCash(shoppingUser, shopMap, isPayInstant());
return "success";
}
public void initUsershoppable() {
setPayInstant(true);
logger.debug("Creating new BillCart");
userBean.fatalPermission(Permission.BILL, RolePermission.EXECUTE);
......@@ -126,6 +130,7 @@ public class ProductShopView {
}
public void initShoppableProducts() {
setPayInstant(true);
userBean.fatalPermission(Permission.SHOP, RolePermission.EXECUTE);
billCart = new ListDataModel<ProductShopItem>(ProductShopItem.productList(productBean.getProducts()));
......@@ -147,4 +152,12 @@ public class ProductShopView {
return shoppingUser;
}
public void setPayInstant(boolean payInstant) {
this.payInstant = payInstant;
}
public boolean isPayInstant() {
return payInstant;
}
}
......@@ -10,6 +10,9 @@ import javax.faces.bean.ManagedProperty;
import javax.faces.bean.SessionScoped;
import javax.faces.model.ListDataModel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.beans.EventBeanLocal;
import fi.insomnia.bortal.beans.ReaderBeanLocal;
import fi.insomnia.bortal.beans.UserBeanLocal;
......@@ -26,7 +29,7 @@ public class ReaderView extends GenericView {
@ManagedProperty(value = "#{rfidContainer}")
private RfidContainer container;
@ManagedProperty(value = "#{shopView}")
@ManagedProperty(value = "#{productShopView}")
private ProductShopView shopview;
private ListDataModel<String> readerlist;
private String readername;
......@@ -34,6 +37,7 @@ public class ReaderView extends GenericView {
private RfidEvent rfidevent;
private String placecode;
private String usersearch;
@EJB
private ReaderBeanLocal readerBean;
......@@ -42,6 +46,8 @@ public class ReaderView extends GenericView {
@EJB
private EventBeanLocal eventbean;
private ListDataModel<UserCardWrapper> userlist;
private static final Logger logger = LoggerFactory.getLogger(ReaderView.class);
public String searchforuser() {
setUserlist(initUserCardWrapper(userbean.searchName(usersearch + "%")));
......@@ -64,7 +70,7 @@ public class ReaderView extends GenericView {
placecode = "";
ret = "assocToUser";
} else {
getShopview().setShoppingUser(rfidevent.getEvent().getPrintedCard().getUser());
ret = "shopToUser";
}
......@@ -75,7 +81,9 @@ public class ReaderView extends GenericView {
public String assocToCard() {
UserCardWrapper usr = userlist.getRowData();
PrintedCard card = usr.getCards().getRowData();
readerBean.assocTagToCard(rfidevent.getTag(), readername, card);
logger.debug("Associng card {} to card tag {}", card.getId(), rfidevent.getTag());
rfidevent.setEvent(readerBean.assocTagToCard(rfidevent.getTag(), readername, card));
rfidevent.addMessage("Associated to user " + usr.getUser().getNick());
getShopview().setShoppingUser(usr.getUser());
return "shopToUser";
}
......@@ -157,7 +165,6 @@ public class ReaderView extends GenericView {
return userlist;
}
public void setShopview(ProductShopView shopview) {
this.shopview = shopview;
}
......@@ -166,7 +173,6 @@ public class ReaderView extends GenericView {
return shopview;
}
public class UserCardWrapper {
private User user;
......
......@@ -104,4 +104,12 @@ public class TestDataView {
utilbean.checkAllUsersImages();
return null;
}
public String convertImages() {
for (User u : userbean.getUsers()) {
utilbean.convertImage(u);
}
return null;
}
}
......@@ -73,9 +73,14 @@ public class UserView extends GenericView {
return "userEdit";
}
public String reloadUser() {
user = userBean.findById(user.getId());
return null;
}
public String shop() {
userBean.fatalPermission(Permission.SHOP, RolePermission.EXECUTE, "no rights to shop to user without SHOP:EXECUTE");
shopview.setShoppingUser(items.getRowData());
shopview.setShoppingUser(items.getRowData());
// shopview.setUser(items.getRowData());
return "/shop/shopToUser";
......
......@@ -35,7 +35,7 @@ productshop.commit=Osta
product.boughtTotal=Tuotteita laskutettu
product.paid=Maksettu
product.prepaidInstant=Luodaan kun prepaid maksetaan
shop.accountBalance=Tilin saldo
placegroup.printPdf=Tulosta paikkakoodit
placegroup.name=Nimi
......@@ -108,8 +108,13 @@ user.hasImage=Kuva
user.noImage=EI kuvaa
user.noCurrentImage=Ei kuvaa
userimage.webcam=Ota kuva webkameralla
sidebar.utils.testdata=Testdata
sidebar.utils.flushCache=Flush Cache
sidebar.shop.readerEvents=Lukijan tapahtumat
sidebar.shop.readerlist=Nyt lukijat
placetoken.token=Paikkakoodi
placetoken.commit=Liit
......@@ -164,6 +169,8 @@ user.successfullySaved=Tiedot tallennettu onnistuneesti
user.roles=Roolit
user.uploadimage=Lhet kuva
user.imagelist=Tallennetut kuvat
user.shop=Osta
imagefile.file=Kuvatiedosto
imagefile.description=Kuvaus
user.imagesubmit=Lhet kuva
......@@ -236,14 +243,17 @@ cardTemplate.roles=Yhdistetyt roolit
topmenu.rfidshop=Staffshop
readerview.cards=Kortit ( tulostuslkm )
reader.assocToCard=Yhdist korttiin
reader.name=Lukijan nimi
readerevent.associateToUser=Yhdist kyttjn
readerevent.shopToUser=Osta kyttjlle
topmenu.placemap=Paikkakartta
userview.passwordsChanged=Salasana vaihdettu
userview.passwordTooShort=Salasana liian lyhyt. Pit olla vhintn 5 merkki pitk.
userview.loginstringFaulty=Kyttjtunnus virheellinen. Pit olla vhintn kaksi merkki pitk.
product.shopInstant=Luo kteismaksu tuotteille
productshop.noItemsInCart=Ostoskorissa ei ole tuotteita
shop.accountBalance=Tilin saldo
shop.user=Myydn
accountevent.quantity=Lukumr
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!