Commit 3081bf18 by Tuomas Riihimäki

eh... Pitäis opetella committaamaan pienempiä paloja....

  - Verkkomaksu varmistusjuttuja.
  - Productin prepaidInstant ja userPrepaid korvattu productFlageillä
  - Kuvanuppimisjuttuja ( JPG on saatanasta... Rikkoo kaikki muista formaateista konvertoidut kuvat.. Käytetään PNG:tä )
  - Luotu uusi PrivatePermission jutuke eventille, jonne voi tallentaa juttuja joita ei haluta EJB kerroksen ulkopuolelle ilman riittäviä oikeuksia ( eg. verkkomaksuavaiet )
  - Mahdollisuus luoda lennosta paikkoja ( esim pelilisenssit ) -> Placelta not null Map rajoitus pois...
  - Varmaan jotain muutakin....
.
1 parent d8fa1439
Showing with 967 additions and 663 deletions
...@@ -7,10 +7,6 @@ ...@@ -7,10 +7,6 @@
<attribute name="owner.project.facets" value="jst.ejb"/> <attribute name="owner.project.facets" value="jst.ejb"/>
</attributes> </attributes>
</classpathentry> </classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<attributes>
<attribute name="owner.project.facets" value="java"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="build/classes"/> <classpathentry kind="output" path="build/classes"/>
</classpath> </classpath>
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ejb-jar xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:ejb="http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd" version="3.1"> <ejb-jar xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
<display-name>LanBortalBeans </display-name> xmlns="http://java.sun.com/xml/ns/javaee" xmlns:ejb="http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd"
version="3.1">
<display-name>LanBortalBeans</display-name>
<ejb-client-jar>LanBortalBeansClient.jar</ejb-client-jar> <ejb-client-jar>LanBortalBeansClient.jar</ejb-client-jar>
</ejb-jar> </ejb-jar>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sun-ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 9.0 EJB 3.0//EN" "http://www.sun.com/software/appserver/dtds/sun-ejb-jar_3_0-0.dtd"> <!DOCTYPE sun-ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 9.0 EJB 3.0//EN" "http://www.sun.com/software/appserver/dtds/sun-ejb-jar_3_0-0.dtd">
<sun-ejb-jar> <sun-ejb-jar>
<enterprise-beans/> <enterprise-beans />
</sun-ejb-jar> </sun-ejb-jar>
...@@ -20,8 +20,8 @@ import fi.insomnia.bortal.enums.apps.UserPermission; ...@@ -20,8 +20,8 @@ import fi.insomnia.bortal.enums.apps.UserPermission;
import fi.insomnia.bortal.facade.AccountEventFacade; import fi.insomnia.bortal.facade.AccountEventFacade;
import fi.insomnia.bortal.model.AccountEvent; import fi.insomnia.bortal.model.AccountEvent;
import fi.insomnia.bortal.model.EventUser; import fi.insomnia.bortal.model.EventUser;
import fi.insomnia.bortal.model.IUser;
import fi.insomnia.bortal.model.Product; import fi.insomnia.bortal.model.Product;
import fi.insomnia.bortal.model.ProductFlag;
import fi.insomnia.bortal.model.Role; import fi.insomnia.bortal.model.Role;
/** /**
...@@ -80,7 +80,7 @@ public class AccountEventBean implements AccountEventBeanLocal { ...@@ -80,7 +80,7 @@ public class AccountEventBean implements AccountEventBeanLocal {
} }
@Override @Override
public List<Role> getRolesFromAccountEvents(IUser u) { public List<Role> getRolesFromAccountEvents(EventUser u) {
return accountfacade.findProvidedRoles(eventBean.getCurrentEvent(), u); return accountfacade.findProvidedRoles(eventBean.getCurrentEvent(), u);
} }
...@@ -107,7 +107,7 @@ public class AccountEventBean implements AccountEventBeanLocal { ...@@ -107,7 +107,7 @@ public class AccountEventBean implements AccountEventBeanLocal {
tot = tot.add(prodentry.getValue().multiply(prodentry.getKey().getPrice())); tot = tot.add(prodentry.getValue().multiply(prodentry.getKey().getPrice()));
} }
if (prodentry.getKey().isPrepaidInstant() && prodentry.getKey().getPlaces() != null && !prodentry.getKey().getPlaces().isEmpty()) { if (prodentry.getKey().getProductFlags().contains(ProductFlag.RESERVE_PLACE_WHEN_BOUGHT) || prodentry.getKey().getProductFlags().contains(ProductFlag.CREATE_NEW_PLACE_WHEN_BOUGHT)) {
logger.debug("Prepaidplace"); logger.debug("Prepaidplace");
placebean.lockPlaceProduct(shoppingUser, prodentry.getKey(), BigDecimal.ONE); placebean.lockPlaceProduct(shoppingUser, prodentry.getKey(), BigDecimal.ONE);
......
...@@ -25,9 +25,11 @@ import fi.insomnia.bortal.facade.BillLineFacade; ...@@ -25,9 +25,11 @@ import fi.insomnia.bortal.facade.BillLineFacade;
import fi.insomnia.bortal.model.AccountEvent; import fi.insomnia.bortal.model.AccountEvent;
import fi.insomnia.bortal.model.Bill; import fi.insomnia.bortal.model.Bill;
import fi.insomnia.bortal.model.BillLine; import fi.insomnia.bortal.model.BillLine;
import fi.insomnia.bortal.model.EventUser;
import fi.insomnia.bortal.model.IUser; import fi.insomnia.bortal.model.IUser;
import fi.insomnia.bortal.model.LanEvent; import fi.insomnia.bortal.model.LanEvent;
import fi.insomnia.bortal.model.Product; import fi.insomnia.bortal.model.Product;
import fi.insomnia.bortal.model.ProductFlag;
import fi.insomnia.bortal.util.MailMessage; import fi.insomnia.bortal.util.MailMessage;
import fi.insomnia.bortal.utilities.I18n; import fi.insomnia.bortal.utilities.I18n;
...@@ -41,7 +43,8 @@ import fi.insomnia.bortal.utilities.I18n; ...@@ -41,7 +43,8 @@ import fi.insomnia.bortal.utilities.I18n;
BillPermission.S_READ_ALL, BillPermission.S_READ_ALL,
BillPermission.S_VIEW_OWN, BillPermission.S_VIEW_OWN,
BillPermission.S_WRITE_ALL, BillPermission.S_WRITE_ALL,
SpecialPermission.S_USER SpecialPermission.S_USER,
SpecialPermission.S_VERKKOMAKSU_CHECK,
}) })
public class BillBean implements BillBeanLocal { public class BillBean implements BillBeanLocal {
...@@ -196,7 +199,7 @@ public class BillBean implements BillBeanLocal { ...@@ -196,7 +199,7 @@ public class BillBean implements BillBeanLocal {
} }
@Override @Override
@RolesAllowed(BillPermission.S_WRITE_ALL) @RolesAllowed({ BillPermission.S_WRITE_ALL, SpecialPermission.S_VERKKOMAKSU_CHECK })
public void markPaid(Bill bill, Calendar when) { public void markPaid(Bill bill, Calendar when) {
if (bill.getAccountEvent() != null || bill.getPaidDate() != null) if (bill.getAccountEvent() != null || bill.getPaidDate() != null)
...@@ -220,9 +223,12 @@ public class BillBean implements BillBeanLocal { ...@@ -220,9 +223,12 @@ public class BillBean implements BillBeanLocal {
for (BillLine bl : bill.getBillLines()) { for (BillLine bl : bill.getBillLines()) {
Product prod = bl.getLineProduct(); Product prod = bl.getLineProduct();
if (prod != null) { if (prod != null) {
if (prod.isPrepaidInstant()) { if (prod.getProductFlags().contains(ProductFlag.PREPAID_INSTANT_CREATE)) {
logger.debug("Creating Bill prepaidInstant product {}, {}", prod.getName(), bl.getQuantity()); logger.debug("Creating Bill prepaidInstant product {}, {}", prod.getName(), bl.getQuantity());
if (prod.getPlaces().size() > 0) { if (prod.getProductFlags().contains(ProductFlag.RESERVE_PLACE_WHEN_BOUGHT)
|| prod.getProductFlags().contains(ProductFlag.CREATE_NEW_PLACE_WHEN_BOUGHT))
{
placebean.lockPlaceProduct(bill.getUser(), prod, bl.getQuantity()); placebean.lockPlaceProduct(bill.getUser(), prod, bl.getQuantity());
} }
...@@ -256,7 +262,7 @@ public class BillBean implements BillBeanLocal { ...@@ -256,7 +262,7 @@ public class BillBean implements BillBeanLocal {
@Override @Override
@RolesAllowed({ BillPermission.S_VIEW_OWN, BillPermission.S_READ_ALL }) @RolesAllowed({ BillPermission.S_VIEW_OWN, BillPermission.S_READ_ALL })
public List<Bill> find(IUser user) { public List<Bill> find(EventUser user) {
if (!permbean.isCurrentUser(user) && !permbean.hasPermission(BillPermission.READ_ALL)) { if (!permbean.isCurrentUser(user) && !permbean.hasPermission(BillPermission.READ_ALL)) {
loggingBean.logMessage(SecurityLogType.permissionDenied, permbean.getCurrentUser(), "Not enought rights to get bill list for user "); loggingBean.logMessage(SecurityLogType.permissionDenied, permbean.getCurrentUser(), "Not enought rights to get bill list for user ");
throw new EJBAccessException("Could not list bills for another user"); throw new EJBAccessException("Could not list bills for another user");
......
package fi.insomnia.bortal.beans; package fi.insomnia.bortal.beans;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List;
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.LocalBean; import javax.ejb.LocalBean;
...@@ -13,14 +15,18 @@ import org.slf4j.Logger; ...@@ -13,14 +15,18 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.clientutils.BortalLocalContextHolder; import fi.insomnia.bortal.clientutils.BortalLocalContextHolder;
import fi.insomnia.bortal.enums.apps.EventPermission;
import fi.insomnia.bortal.enums.apps.SpecialPermission; import fi.insomnia.bortal.enums.apps.SpecialPermission;
import fi.insomnia.bortal.facade.EventFacade; import fi.insomnia.bortal.facade.EventFacade;
import fi.insomnia.bortal.facade.EventOrganiserFacade; import fi.insomnia.bortal.facade.EventOrganiserFacade;
import fi.insomnia.bortal.facade.LanEventDomainFacade; import fi.insomnia.bortal.facade.LanEventDomainFacade;
import fi.insomnia.bortal.facade.LanEventPrivatePropertyFacade;
import fi.insomnia.bortal.facade.LanEventPropertyFacade; import fi.insomnia.bortal.facade.LanEventPropertyFacade;
import fi.insomnia.bortal.model.EventOrganiser; import fi.insomnia.bortal.model.EventOrganiser;
import fi.insomnia.bortal.model.LanEvent; import fi.insomnia.bortal.model.LanEvent;
import fi.insomnia.bortal.model.LanEventDomain; import fi.insomnia.bortal.model.LanEventDomain;
import fi.insomnia.bortal.model.LanEventPrivateProperty;
import fi.insomnia.bortal.model.LanEventPrivatePropertyKey;
import fi.insomnia.bortal.model.LanEventProperty; import fi.insomnia.bortal.model.LanEventProperty;
import fi.insomnia.bortal.model.LanEventPropertyKey; import fi.insomnia.bortal.model.LanEventPropertyKey;
...@@ -29,6 +35,11 @@ import fi.insomnia.bortal.model.LanEventPropertyKey; ...@@ -29,6 +35,11 @@ import fi.insomnia.bortal.model.LanEventPropertyKey;
*/ */
@Stateless @Stateless
@LocalBean @LocalBean
@DeclareRoles({ EventPermission.S_MANAGE_PRIVATE_PROPERTIES,
EventPermission.S_MANAGE_PROPERTIES,
SpecialPermission.S_ORGANISATION_ADMIN,
SpecialPermission.S_SUPERADMIN,
})
public class EventBean implements EventBeanLocal { public class EventBean implements EventBeanLocal {
private static final String DEFAULT_EVENT_NAME = "Default event"; private static final String DEFAULT_EVENT_NAME = "Default event";
...@@ -51,6 +62,8 @@ public class EventBean implements EventBeanLocal { ...@@ -51,6 +62,8 @@ public class EventBean implements EventBeanLocal {
private LanEventDomainFacade domainfacade; private LanEventDomainFacade domainfacade;
@EJB @EJB
private LanEventPropertyFacade eventPropertyFacade; private LanEventPropertyFacade eventPropertyFacade;
@EJB
private LanEventPrivatePropertyFacade eventPrivatePropertyFacade;
@Override @Override
public LanEvent getEventByHostname(String hostname) { public LanEvent getEventByHostname(String hostname) {
...@@ -143,6 +156,32 @@ public class EventBean implements EventBeanLocal { ...@@ -143,6 +156,32 @@ public class EventBean implements EventBeanLocal {
} }
@Override @Override
@RolesAllowed({ EventPermission.S_MANAGE_PRIVATE_PROPERTIES, SpecialPermission.S_ORGANISATION_ADMIN })
public List<LanEventPrivateProperty> getPrivateProperties()
{
return eventPrivatePropertyFacade.findAllForEvent();
}
// This method should not be overridden!
// Private properties should not be viewable outside EJB layer
// without MANAGE_PRIVATE_PROPERTIES role
public LanEventPrivateProperty getPrivateProperty(LanEventPrivatePropertyKey property) {
logger.info("Returning property {} from {}", property, eventPrivatePropertyFacade);
return eventPrivatePropertyFacade.getPropertyForEvent(property);
}
public String getPrivatePropertyString(LanEventPrivatePropertyKey property) {
LanEventPrivateProperty retProp = eventPrivatePropertyFacade.getPropertyForEvent(property);
String ret = null;
if (retProp == null) {
ret = property.getDefaultvalue();
} else {
ret = retProp.getTextvalue();
}
return ret;
}
@Override
public LanEventProperty getProperty(LanEventPropertyKey property) { public LanEventProperty getProperty(LanEventPropertyKey property) {
return eventPropertyFacade.find(getCurrentEvent(), property); return eventPropertyFacade.find(getCurrentEvent(), property);
} }
...@@ -185,4 +224,28 @@ public class EventBean implements EventBeanLocal { ...@@ -185,4 +224,28 @@ public class EventBean implements EventBeanLocal {
return ret; return ret;
} }
@Override
@RolesAllowed({ SpecialPermission.S_SUPERADMIN, SpecialPermission.S_ORGANISATION_ADMIN })
public EventOrganiser mergeChanges(EventOrganiser eventorg) {
return eventOrganiserFacade.merge(eventorg);
}
@Override
@RolesAllowed({ EventPermission.S_MANAGE_PRIVATE_PROPERTIES, SpecialPermission.S_ORGANISATION_ADMIN })
public LanEventPrivateProperty saveOrCreatePrivateProperty(LanEventPrivateProperty privateProperty) {
LanEventPrivateProperty ret = null;
logger.info("Saving property {}, eventorg {}, key {}", new Object[] { privateProperty.getEvent(), privateProperty.getEventorg(), privateProperty.getKey() });
if (privateProperty.getId() == null)
{
ret = privateProperty;
// eventPropertyFacade.create(property);
eventPrivatePropertyFacade.create(privateProperty);
} else {
ret = eventPrivatePropertyFacade.merge(privateProperty);
}
return ret;
}
} }
...@@ -9,6 +9,7 @@ import org.slf4j.Logger; ...@@ -9,6 +9,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.enums.apps.MapPermission; import fi.insomnia.bortal.enums.apps.MapPermission;
import fi.insomnia.bortal.facade.EventFacade;
import fi.insomnia.bortal.facade.EventMapFacade; import fi.insomnia.bortal.facade.EventMapFacade;
import fi.insomnia.bortal.model.EventMap; import fi.insomnia.bortal.model.EventMap;
import fi.insomnia.bortal.model.LanEvent; import fi.insomnia.bortal.model.LanEvent;
...@@ -25,6 +26,8 @@ public class EventMapBean implements EventMapBeanLocal { ...@@ -25,6 +26,8 @@ public class EventMapBean implements EventMapBeanLocal {
@EJB @EJB
private EventBeanLocal eventbean; private EventBeanLocal eventbean;
@EJB
private EventFacade eventfacade;
private static final Logger logger = LoggerFactory.getLogger(EventMapBean.class); private static final Logger logger = LoggerFactory.getLogger(EventMapBean.class);
...@@ -63,4 +66,13 @@ public class EventMapBean implements EventMapBeanLocal { ...@@ -63,4 +66,13 @@ public class EventMapBean implements EventMapBeanLocal {
public EventMap find(Integer mapId) { public EventMap find(Integer mapId) {
return eventmapfacade.find(mapId); return eventmapfacade.find(mapId);
} }
@Override
@RolesAllowed(MapPermission.S_MANAGE_MAPS)
public EventMap clearPlaces(EventMap map) {
EventMap leMap = eventmapfacade.reload(map);
leMap.getPlaces().clear();
return leMap;
}
} }
...@@ -11,8 +11,8 @@ import fi.insomnia.bortal.enums.apps.SpecialPermission; ...@@ -11,8 +11,8 @@ import fi.insomnia.bortal.enums.apps.SpecialPermission;
import fi.insomnia.bortal.facade.EventFacade; import fi.insomnia.bortal.facade.EventFacade;
import fi.insomnia.bortal.facade.EventOrganiserFacade; import fi.insomnia.bortal.facade.EventOrganiserFacade;
import fi.insomnia.bortal.model.EventOrganiser; import fi.insomnia.bortal.model.EventOrganiser;
import fi.insomnia.bortal.model.IUser;
import fi.insomnia.bortal.model.LanEvent; import fi.insomnia.bortal.model.LanEvent;
import fi.insomnia.bortal.model.User;
/** /**
* Session Bean implementation class EventOrganiserBean * Session Bean implementation class EventOrganiserBean
...@@ -76,7 +76,7 @@ public class EventOrganiserBean implements EventOrganiserBeanLocal { ...@@ -76,7 +76,7 @@ public class EventOrganiserBean implements EventOrganiserBeanLocal {
// } // }
@Override @Override
public List<EventOrganiser> getOrganisations(IUser user) { public List<EventOrganiser> getOrganisations(User user) {
// TODO: korjaa!!! // TODO: korjaa!!!
return null; return null;
} }
......
...@@ -72,7 +72,7 @@ public class JaasBean implements JaasBeanLocal, JaasBeanRemote { ...@@ -72,7 +72,7 @@ public class JaasBean implements JaasBeanLocal, JaasBeanRemote {
secubean.logMessage(SecurityLogType.permissionDenied, eventUser.getUser(), "Login failed: wrong password for username ", username); secubean.logMessage(SecurityLogType.permissionDenied, eventUser.getUser(), "Login failed: wrong password for username ", username);
} }
} else { } else {
secubean.logMessage(SecurityLogType.permissionDenied, (User)null, "Login failed: Username not found: ", username); secubean.logMessage(SecurityLogType.permissionDenied, (User) null, "Login failed: Username not found: ", username);
} }
...@@ -93,15 +93,20 @@ public class JaasBean implements JaasBeanLocal, JaasBeanRemote { ...@@ -93,15 +93,20 @@ public class JaasBean implements JaasBeanLocal, JaasBeanRemote {
roleset.add(UserPermission.ANYUSER.getFullName()); roleset.add(UserPermission.ANYUSER.getFullName());
if (usr == null) { if (usr == null) {
if (SpecialPermission.VERKKOMAKSU_CHECKER.name().equals(user)) {
roleset.add(SpecialPermission.VERKKOMAKSU_CHECKER.name());
}
usr = permbean.getAnonEventUser(); usr = permbean.getAnonEventUser();
roleset.add(SpecialPermission.ANONYMOUS.name()); roleset.add(SpecialPermission.ANONYMOUS.name());
} }
if (usr != null && !usr.isAnonymous()) { if (!usr.isAnonymous()) {
roleset.add(SpecialPermission.USER.name()); roleset.add(SpecialPermission.USER.name());
} }
// TODO: EI NÄIN!!!!! Superadmin ei saa kaikkia oikkia!! // TODO: EI NÄIN!!!!! Superadmin ei saa kaikkia oikkia!!
if (usr != null && usr.isSuperadmin()) {
if (usr.isSuperadmin()) {
for (BortalApplication app : BortalApplication.values()) { for (BortalApplication app : BortalApplication.values()) {
for (IAppPermission perm : app.getPermissions()) { for (IAppPermission perm : app.getPermissions()) {
roleset.add(perm.getFullName()); roleset.add(perm.getFullName());
......
...@@ -76,6 +76,10 @@ public class Menubean implements MenubeanLocal { ...@@ -76,6 +76,10 @@ public class Menubean implements MenubeanLocal {
frontTopnavi.addPage(menuitemfacade.findOrCreate("/auth/loginError"), null).setVisible(false); frontTopnavi.addPage(menuitemfacade.findOrCreate("/auth/loginError"), null).setVisible(false);
frontTopnavi.addPage(menuitemfacade.findOrCreate("/auth/logout"), null).setVisible(false); frontTopnavi.addPage(menuitemfacade.findOrCreate("/auth/logout"), null).setVisible(false);
frontTopnavi.addPage(menuitemfacade.findOrCreate("/auth/logoutResponse"), null).setVisible(false); frontTopnavi.addPage(menuitemfacade.findOrCreate("/auth/logoutResponse"), null).setVisible(false);
frontTopnavi.addPage(menuitemfacade.findOrCreate("/auth/resetPassword"), null).setVisible(false);
frontTopnavi.addPage(menuitemfacade.findOrCreate("/auth/resetMailSent"), null).setVisible(false);
frontTopnavi.addPage(menuitemfacade.findOrCreate("/auth/passwordChanged"), null).setVisible(false);
frontTopnavi.addPage(menuitemfacade.findOrCreate("/auth/notauthorized"), null).setVisible(false);
MenuNavigation userTopnavi = usernavi.addPage(null, null); MenuNavigation userTopnavi = usernavi.addPage(null, null);
userTopnavi.setKey("topnavi.user"); userTopnavi.setKey("topnavi.user");
...@@ -94,7 +98,12 @@ public class Menubean implements MenubeanLocal { ...@@ -94,7 +98,12 @@ public class Menubean implements MenubeanLocal {
shopTopmenu.addPage(menuitemfacade.findOrCreate("/shop/createBill"), BillPermission.CREATE_BILL); shopTopmenu.addPage(menuitemfacade.findOrCreate("/shop/createBill"), BillPermission.CREATE_BILL);
shopTopmenu.addPage(menuitemfacade.findOrCreate("/bill/list"), BillPermission.VIEW_OWN); shopTopmenu.addPage(menuitemfacade.findOrCreate("/bill/list"), BillPermission.VIEW_OWN);
shopTopmenu.addPage(menuitemfacade.findOrCreate("/bill/edit"), null).setVisible(false); shopTopmenu.addPage(menuitemfacade.findOrCreate("/bill/edit"), null).setVisible(false);
shopTopmenu.addPage(menuitemfacade.findOrCreate("/bill/showBill"), null).setVisible(false);
shopTopmenu.addPage(menuitemfacade.findOrCreate("/shop/assocToUser"), null).setVisible(false); shopTopmenu.addPage(menuitemfacade.findOrCreate("/shop/assocToUser"), null).setVisible(false);
shopTopmenu.addPage(menuitemfacade.findOrCreate("/svm/failure"), null).setVisible(false);
shopTopmenu.addPage(menuitemfacade.findOrCreate("/svm/notification"), null).setVisible(false);
shopTopmenu.addPage(menuitemfacade.findOrCreate("/svm/pending"), null).setVisible(false);
shopTopmenu.addPage(menuitemfacade.findOrCreate("/svm/success"), null).setVisible(false);
MenuNavigation pollTopmenu = usernavi.addPage(null, null); MenuNavigation pollTopmenu = usernavi.addPage(null, null);
pollTopmenu.setKey("topnavi.poll"); pollTopmenu.setKey("topnavi.poll");
...@@ -156,11 +165,13 @@ public class Menubean implements MenubeanLocal { ...@@ -156,11 +165,13 @@ public class Menubean implements MenubeanLocal {
prodnavi.addPage(menuitemfacade.findOrCreate("/product/list"), ShopPermission.LIST_ALL_PRODUCTS); prodnavi.addPage(menuitemfacade.findOrCreate("/product/list"), ShopPermission.LIST_ALL_PRODUCTS);
prodnavi.addPage(menuitemfacade.findOrCreate("/product/create"), ShopPermission.MANAGE_PRODUCTS); prodnavi.addPage(menuitemfacade.findOrCreate("/product/create"), ShopPermission.MANAGE_PRODUCTS);
prodnavi.addPage(menuitemfacade.findOrCreate("/product/createDiscount"), null).setVisible(false); prodnavi.addPage(menuitemfacade.findOrCreate("/product/createDiscount"), null).setVisible(false);
prodnavi.addPage(menuitemfacade.findOrCreate("/product/edit"), null).setVisible(false);
MenuNavigation contentnavi = adminnavi.addPage(null, null); MenuNavigation contentnavi = adminnavi.addPage(null, null);
contentnavi.setKey("topnavi.contents"); contentnavi.setKey("topnavi.contents");
contentnavi.addPage(menuitemfacade.findOrCreate("/pages/list"), ContentPermission.MANAGE_PAGES); contentnavi.addPage(menuitemfacade.findOrCreate("/pages/list"), ContentPermission.MANAGE_PAGES);
contentnavi.addPage(menuitemfacade.findOrCreate("/pages/create"), ContentPermission.MANAGE_PAGES); contentnavi.addPage(menuitemfacade.findOrCreate("/pages/create"), ContentPermission.MANAGE_PAGES);
contentnavi.addPage(menuitemfacade.findOrCreate("/pages/edit"), null).setVisible(false);
} }
......
...@@ -15,6 +15,7 @@ import org.slf4j.LoggerFactory; ...@@ -15,6 +15,7 @@ import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.enums.apps.BillPermission; import fi.insomnia.bortal.enums.apps.BillPermission;
import fi.insomnia.bortal.enums.apps.CompoPermission; import fi.insomnia.bortal.enums.apps.CompoPermission;
import fi.insomnia.bortal.enums.apps.ContentPermission; import fi.insomnia.bortal.enums.apps.ContentPermission;
import fi.insomnia.bortal.enums.apps.EventPermission;
import fi.insomnia.bortal.enums.apps.IAppPermission; import fi.insomnia.bortal.enums.apps.IAppPermission;
import fi.insomnia.bortal.enums.apps.MapPermission; import fi.insomnia.bortal.enums.apps.MapPermission;
import fi.insomnia.bortal.enums.apps.PollPermission; import fi.insomnia.bortal.enums.apps.PollPermission;
...@@ -84,6 +85,9 @@ import fi.insomnia.bortal.model.User; ...@@ -84,6 +85,9 @@ import fi.insomnia.bortal.model.User;
CompoPermission.S_SUBMIT_ENTRY, CompoPermission.S_SUBMIT_ENTRY,
CompoPermission.S_VIEW_COMPOS, CompoPermission.S_VIEW_COMPOS,
EventPermission.S_MANAGE_PRIVATE_PROPERTIES,
EventPermission.S_MANAGE_PROPERTIES,
}) })
public class PermissionBean implements PermissionBeanLocal { public class PermissionBean implements PermissionBeanLocal {
......
...@@ -20,6 +20,7 @@ import javax.annotation.security.DeclareRoles; ...@@ -20,6 +20,7 @@ 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.EJBAccessException; import javax.ejb.EJBAccessException;
import javax.ejb.EJBException;
import javax.ejb.LocalBean; import javax.ejb.LocalBean;
import javax.ejb.Stateless; import javax.ejb.Stateless;
import javax.ejb.Timeout; import javax.ejb.Timeout;
...@@ -45,6 +46,7 @@ import fi.insomnia.bortal.model.LanEvent; ...@@ -45,6 +46,7 @@ import fi.insomnia.bortal.model.LanEvent;
import fi.insomnia.bortal.model.Place; import fi.insomnia.bortal.model.Place;
import fi.insomnia.bortal.model.PlaceGroup; import fi.insomnia.bortal.model.PlaceGroup;
import fi.insomnia.bortal.model.Product; import fi.insomnia.bortal.model.Product;
import fi.insomnia.bortal.model.ProductFlag;
/** /**
* *
...@@ -53,7 +55,9 @@ import fi.insomnia.bortal.model.Product; ...@@ -53,7 +55,9 @@ import fi.insomnia.bortal.model.Product;
@Stateless @Stateless
@LocalBean @LocalBean
@DeclareRoles({ MapPermission.S_BUY_PLACES, @DeclareRoles({ MapPermission.S_BUY_PLACES,
MapPermission.S_MANAGE_MAPS }) MapPermission.S_MANAGE_MAPS,
MapPermission.S_VIEW,
})
public class PlaceBean implements PlaceBeanLocal { public class PlaceBean implements PlaceBeanLocal {
private static final String PLACE_RESERVE_TIMEOUTER = "Map reserve timeouter"; private static final String PLACE_RESERVE_TIMEOUTER = "Map reserve timeouter";
private static final Logger logger = LoggerFactory.getLogger(PlaceBean.class); private static final Logger logger = LoggerFactory.getLogger(PlaceBean.class);
...@@ -163,12 +167,10 @@ public class PlaceBean implements PlaceBeanLocal { ...@@ -163,12 +167,10 @@ public class PlaceBean implements PlaceBeanLocal {
} }
// TODO: Kantakysely tähän!
@Override @Override
@RolesAllowed(MapPermission.S_VIEW)
public Place findPlace(EventMap e, int x, int y) { public Place findPlace(EventMap e, int x, int y) {
return placeFacade.find(e, x, y); return placeFacade.find(e, x, y);
} }
/** /**
...@@ -176,7 +178,9 @@ public class PlaceBean implements PlaceBeanLocal { ...@@ -176,7 +178,9 @@ public class PlaceBean implements PlaceBeanLocal {
* buy() method should be called after this when buying place; * buy() method should be called after this when buying place;
* *
* @param place * @param place
* place to be reserved
* @param user * @param user
* User for whom the place should be reserved.
* @return true when successfull. On any error false. * @return true when successfull. On any error false.
*/ */
@Override @Override
...@@ -280,47 +284,58 @@ public class PlaceBean implements PlaceBeanLocal { ...@@ -280,47 +284,58 @@ public class PlaceBean implements PlaceBeanLocal {
} }
// This method should not be available in the local bean client // This method should not be available in the local bean client
void lockPlaceProduct(EventUser user, Product prod, BigDecimal quantity) { public void lockPlaceProduct(EventUser user, Product prod, BigDecimal quantity) {
int loop = quantity.intValue();
// BigDecimal loop = BigDecimal.ZERO; // BigDecimal loop = BigDecimal.ZERO;
LanEvent event = eventBean.getCurrentEvent(); LanEvent event = eventBean.getCurrentEvent();
PlaceGroup pg = new PlaceGroup(event, Calendar.getInstance(), PlaceGroup pg = new PlaceGroup(event, Calendar.getInstance(), Calendar.getInstance(), true);
Calendar.getInstance(), true);
pg.setCreator(user); pg.setCreator(user);
pgfacade.create(pg);
boolean associatedToPlace = false;
for (Place p : prod.getPlaces()) { // If user is not yet associated to this type of product, find it out...
for (GroupMembership gm : user.getGroupMemberships()) {
if (prod.equals(gm.getPlaceReservation().getProduct())) {
associatedToPlace = true;
break;
}
}
if (!p.isTaken()) { for (int i = 0; i < quantity.intValue(); ++i)
{
Place freePlace = null;
buy(p, pg, user); if (prod.getProductFlags().contains(ProductFlag.CREATE_NEW_PLACE_WHEN_BOUGHT))
--loop; {
// if (quantity.equals(BigDecimal.ONE)) { freePlace = new Place();
// boolean gmassoc = false; freePlace.setProduct(prod);
// for (GroupMembership gm : user.getGroupMemberships()) { freePlace.setProvidesRole(prod.getProvides());
// if (gm.getId().getEventId().equals(event.getId())) { placeFacade.create(freePlace);
// gmassoc = true; } else if (prod.getPlaces() != null)
// break; {
// } for (Place p : prod.getPlaces()) {
// if (!p.isTaken()) {
// } freePlace = p;
// if (!gmassoc) {
// logger.debug("Group membership not found. Associating user {} to place {}",
// user.getNick(), currgm.getPlaceReservation().getName());
// user.getGroupMemberships().add(currgm);
// currgm.setUser(user);
// }
// }
if (loop <= 0) {
break; break;
} }
} }
} }
if (freePlace == null) {
throw new EJBException("Could find a place to be reserved....");
}
GroupMembership gm = buy(freePlace, pg, user);
if (!associatedToPlace)
{
associatedToPlace = true;
gm.setUser(user);
}
}
// user.getPlaceGroups().add(pg); // user.getPlaceGroups().add(pg);
pgfacade.create(pg);
} }
private void buy(Place p, PlaceGroup pg, IUser user) { private GroupMembership buy(Place p, PlaceGroup pg, IUser user) {
p.setGroup(pg); p.setGroup(pg);
p.setReleaseTime(null); p.setReleaseTime(null);
// Current user temporarily used at place reservation. When buying // Current user temporarily used at place reservation. When buying
...@@ -329,6 +344,7 @@ public class PlaceBean implements PlaceBeanLocal { ...@@ -329,6 +344,7 @@ public class PlaceBean implements PlaceBeanLocal {
GroupMembership membership = new GroupMembership(pg, p, gmemfacade.createInviteToken()); GroupMembership membership = new GroupMembership(pg, p, gmemfacade.createInviteToken());
pg.getMembers().add(membership); pg.getMembers().add(membership);
p.setPlaceReserver(membership); p.setPlaceReserver(membership);
return membership;
} }
...@@ -336,7 +352,6 @@ public class PlaceBean implements PlaceBeanLocal { ...@@ -336,7 +352,6 @@ public class PlaceBean implements PlaceBeanLocal {
@RolesAllowed(MapPermission.S_MANAGE_MAPS) @RolesAllowed(MapPermission.S_MANAGE_MAPS)
public int setBuyable(EventMap map, String like, boolean b) { public int setBuyable(EventMap map, String like, boolean b) {
return placeFacade.setBuyable(map, like, b); return placeFacade.setBuyable(map, like, b);
} }
// @Override // @Override
......
...@@ -70,7 +70,7 @@ public class ProductBean implements ProductBeanLocal { ...@@ -70,7 +70,7 @@ public class ProductBean implements ProductBeanLocal {
@Override @Override
@RolesAllowed(ShopPermission.S_LIST_USERPRODUCTS) @RolesAllowed(ShopPermission.S_LIST_USERPRODUCTS)
public List<Product> listUserShoppableProducts() { public List<Product> listUserShoppableProducts() {
return productFacade.findPrepaidProducts(); return productFacade.findProductsByFlag(ProductFlag.USER_SHOPPABLE);
} }
@Override @Override
...@@ -184,7 +184,7 @@ public class ProductBean implements ProductBeanLocal { ...@@ -184,7 +184,7 @@ public class ProductBean implements ProductBeanLocal {
} }
@RolesAllowed(ShopPermission.S_MANAGE_PRODUCTS) @RolesAllowed(ShopPermission.S_MANAGE_PRODUCTS)
public List<Product> findProductsByFlag(ProductFlag ... productFlags) { public List<Product> findProductsByFlag(ProductFlag... productFlags) {
return productFacade.findProductsByFlag(productFlags); return productFacade.findProductsByFlag(productFlags);
} }
......
...@@ -197,7 +197,9 @@ public class UserBean implements UserBeanLocal { ...@@ -197,7 +197,9 @@ public class UserBean implements UserBeanLocal {
throw new EJBAccessException("No permission to upload image as another user"); throw new EJBAccessException("No permission to upload image as another user");
} }
UserImage userimage = new UserImage(user.getUser()); UserImage userimage = null;
userimage = new UserImage(user.getUser());
userimage.setMimeType(contentType); userimage.setMimeType(contentType);
userimage.setImageData(image); userimage.setImageData(image);
userimage.setName(filename); userimage.setName(filename);
...@@ -281,12 +283,13 @@ public class UserBean implements UserBeanLocal { ...@@ -281,12 +283,13 @@ public class UserBean implements UserBeanLocal {
User user = userFacade.findByLogin(username); User user = userFacade.findByLogin(username);
String hash = PasswordFunctions.generateRandomString(25); String hash = PasswordFunctions.generateRandomString(25);
logger.info("Initializing password sending: {}, hash: {}", user, hash); logger.info("Initializing password sending: {}, hash: {}", user, hash);
String path = MessageFormat.format(url, new Object[] { user.getId().toString(), hash });
if (hash == null || hash.length() < 20 || user == null || user.getEmail() == null || user.getEmail().length() <= 5) { if (hash == null || hash.length() < 20 || user == null || user.getEmail() == null || user.getEmail().length() <= 5) {
logger.info("Not sending email with params {} {}", new Object[] { user, hash }); logger.info("Not sending email with params {} {}", new Object[] { user, hash });
return false; return false;
} }
String path = MessageFormat.format(url, new Object[] { user.getId().toString(), hash });
MailMessage msg = new MailMessage(); MailMessage msg = new MailMessage();
msg.setTo(user); msg.setTo(user);
msg.setSubject(I18n.get("passwordreset.mailSubject")); msg.setSubject(I18n.get("passwordreset.mailSubject"));
...@@ -357,6 +360,30 @@ public class UserBean implements UserBeanLocal { ...@@ -357,6 +360,30 @@ public class UserBean implements UserBeanLocal {
eventUserFacade.create(user); eventUserFacade.create(user);
} }
// private void jaiCrop()
// {
// SeekableStream seekableStream =
// SeekableStream.wrapInputStream(naamastream, false);
// PlanarImage naamaimage = JAI.create("Stream", seekableStream);
//
// // Origin point where you want to start cropping
// Point p = new Point(150, 150);
// // The size of the area that you want to crop
// Dimension d = new Dimension(90, 70);
// Rectangle r = new Rectangle(p, d);
//
// ParameterBlock pb = new ParameterBlock();
// pb.addSource(naamaimage);
//
// pb.add((float) r.getX());
// pb.add((float) r.getY());
// pb.add((float) r.getWidth());
// pb.add((float) r.getHeight());
//
// // Creates the cropped area
// RenderedOp image = JAI.create("crop", pb);
// }
@Override @Override
public UserImage saveCroppedImage(UserImage currimage, int left, int top, int width, int height) throws IOException { public UserImage saveCroppedImage(UserImage currimage, int left, int top, int width, int height) throws IOException {
currimage = imagefacade.find(currimage.getId()); currimage = imagefacade.find(currimage.getId());
...@@ -364,23 +391,21 @@ public class UserBean implements UserBeanLocal { ...@@ -364,23 +391,21 @@ public class UserBean implements UserBeanLocal {
logger.info("Current image {}, current user {}", currimage, user); logger.info("Current image {}, current user {}", currimage, user);
user = userFacade.find(user.getId()); user = userFacade.find(user.getId());
ByteArrayInputStream naamastream = new ByteArrayInputStream(currimage.getImageData());
ByteArrayInputStream naamastream = new BufferedImage face = ImageIO.read(naamastream);
ByteArrayInputStream(currimage.getImageData()); BufferedImage newface = face.getSubimage(left, top, width, height);
BufferedImage face;
face = ImageIO.read(naamastream);
BufferedImage newFace = face.getSubimage(left, top, width, height);
ByteArrayOutputStream naamaout = new ByteArrayOutputStream(); ByteArrayOutputStream naamaout = new ByteArrayOutputStream();
ImageIO.write(newFace, "jpeg", naamaout);
UserImage ret = new UserImage(user); // JPG rikkoo asioita jos lähde ei ole JPG, tai muuten tunnettu
ret.setMimeType(currimage.getMimeType()); // ilmeisesti alpha rikkoo asioita...
ImageIO.write(newface, "png", naamaout);
UserImage ret = new UserImage(user);
ret.setMimeType("image/png");
User curruser = permbean.getCurrentUser().getUser(); User curruser = permbean.getCurrentUser().getUser();
ret.setDescription("Cropped by: [" + curruser.getId() + "] " + curruser.getWholeName() + " from image: " + currimage.getId()); ret.setDescription("Cropped by: [" + curruser.getId() + "] " + curruser.getWholeName() + " from image: " + currimage.getId());
ret.setImageData(naamaout.toByteArray()); ret.setImageData(naamaout.toByteArray());
ret.setMimeType(currimage.getMimeType()); // ret.setMimeType("image/jpeg");
if (user.getUserImageList() == null) if (user.getUserImageList() == null)
{ {
user.setUserImageList(new ArrayList<UserImage>()); user.setUserImageList(new ArrayList<UserImage>());
......
...@@ -41,9 +41,10 @@ import org.xml.sax.SAXException; ...@@ -41,9 +41,10 @@ import org.xml.sax.SAXException;
import fi.insomnia.bortal.beanutil.DecimalXMLAdapter; import fi.insomnia.bortal.beanutil.DecimalXMLAdapter;
import fi.insomnia.bortal.clientutils.BortalLocalContextHolder; import fi.insomnia.bortal.clientutils.BortalLocalContextHolder;
import fi.insomnia.bortal.enums.apps.BillPermission; import fi.insomnia.bortal.enums.apps.BillPermission;
import fi.insomnia.bortal.facade.BillFacade;
import fi.insomnia.bortal.model.Bill; import fi.insomnia.bortal.model.Bill;
import fi.insomnia.bortal.model.LanEventProperty; import fi.insomnia.bortal.model.LanEventPrivateProperty;
import fi.insomnia.bortal.model.LanEventPropertyKey; import fi.insomnia.bortal.model.LanEventPrivatePropertyKey;
import fi.insomnia.bortal.util.SvmReturnType; import fi.insomnia.bortal.util.SvmReturnType;
import fi.insomnia.bortal.util.VerkkomaksutReturnEntry; import fi.insomnia.bortal.util.VerkkomaksutReturnEntry;
import fi.insomnia.bortal.verkkomaksutfi.PaymentEntry; import fi.insomnia.bortal.verkkomaksutfi.PaymentEntry;
...@@ -59,20 +60,23 @@ public class VerkkomaksutFiBean implements VerkkomaksutFiBeanLocal { ...@@ -59,20 +60,23 @@ public class VerkkomaksutFiBean implements VerkkomaksutFiBeanLocal {
private static final Logger logger = LoggerFactory.getLogger(VerkkomaksutFiBean.class); private static final Logger logger = LoggerFactory.getLogger(VerkkomaksutFiBean.class);
private static final char CHECKSUM_SEP = '|'; private static final char CHECKSUM_SEP = '|';
@EJB @EJB
private EventBean lanbean; private EventBean eventbean;
@EJB @EJB
private BillBean billBean; private PermissionBeanLocal permbean;
@EJB
private VerkkomaksuRunner vmrunner;
@EJB @EJB
private LoggingBeanLocal logbean; private LoggingBeanLocal logbean;
@EJB @EJB
private PermissionBeanLocal permbean; private BillFacade billFacade;
@Override @Override
public boolean isSvmEnabled() public boolean isSvmEnabled()
{ {
LanEventProperty expire = lanbean.getProperty(LanEventPropertyKey.VERKKOMAKSU_KEY_EXPIRE); LanEventPrivateProperty expire = eventbean.getPrivateProperty(LanEventPrivatePropertyKey.VERKKOMAKSU_KEY_EXPIRE);
String merchantid = lanbean.getPropertyString(LanEventPropertyKey.VERKKOMAKSU_MERCHANT_ID); String merchantid = eventbean.getPrivatePropertyString(LanEventPrivatePropertyKey.VERKKOMAKSU_MERCHANT_ID);
String merchantPassword = lanbean.getPropertyString(LanEventPropertyKey.VERKKOMAKSU_MERCHANT_PASSWORD); String merchantPassword = eventbean.getPrivatePropertyString(LanEventPrivatePropertyKey.VERKKOMAKSU_MERCHANT_PASSWORD);
return !((expire != null && new Date().after(expire.getDateValue())) return !((expire != null && new Date().after(expire.getDateValue()))
|| merchantid == null || merchantid.isEmpty() || merchantid == null || merchantid.isEmpty()
|| merchantPassword == null || merchantPassword.isEmpty()); || merchantPassword == null || merchantPassword.isEmpty());
...@@ -81,7 +85,12 @@ public class VerkkomaksutFiBean implements VerkkomaksutFiBeanLocal { ...@@ -81,7 +85,12 @@ public class VerkkomaksutFiBean implements VerkkomaksutFiBeanLocal {
@Override @Override
public boolean validateReturn(SvmReturnType type, String orderNumber, String timestamp, String paid, String method, String authcode) public boolean validateReturn(SvmReturnType type, String orderNumber, String timestamp, String paid, String method, String authcode)
{ {
String merchantPassword = lanbean.getPropertyString(LanEventPropertyKey.VERKKOMAKSU_MERCHANT_PASSWORD);
if (authcode == null || authcode.isEmpty() || orderNumber == null || orderNumber.isEmpty() || timestamp == null || timestamp.isEmpty())
{
return false;
}
String merchantPassword = eventbean.getPrivatePropertyString(LanEventPrivatePropertyKey.VERKKOMAKSU_MERCHANT_PASSWORD);
StringBuilder sumSource = new StringBuilder().append(orderNumber).append(CHECKSUM_SEP) StringBuilder sumSource = new StringBuilder().append(orderNumber).append(CHECKSUM_SEP)
.append(timestamp).append(CHECKSUM_SEP) .append(timestamp).append(CHECKSUM_SEP)
...@@ -96,7 +105,7 @@ public class VerkkomaksutFiBean implements VerkkomaksutFiBeanLocal { ...@@ -96,7 +105,7 @@ public class VerkkomaksutFiBean implements VerkkomaksutFiBeanLocal {
final String calculatedHash = new String(Hex.encodeHex(resultByte)); final String calculatedHash = new String(Hex.encodeHex(resultByte));
logger.info("calculated checksum for svv message: {}, comparing to {}", calculatedHash, authcode); logger.info("calculated checksum for svv message: {}, comparing to {}", calculatedHash, authcode);
if (authcode.toUpperCase().equals(calculatedHash.toUpperCase())) { if (authcode.toUpperCase().equals(calculatedHash.toUpperCase())) {
Bill bill = billBean.findById(Integer.parseInt(orderNumber)); Bill bill = billFacade.find(Integer.parseInt(orderNumber));
if (bill != null) if (bill != null)
{ {
// If bill is unpaid, mark it paid... // If bill is unpaid, mark it paid...
...@@ -105,7 +114,7 @@ public class VerkkomaksutFiBean implements VerkkomaksutFiBeanLocal { ...@@ -105,7 +114,7 @@ public class VerkkomaksutFiBean implements VerkkomaksutFiBeanLocal {
} else if (bill.getAccountEvent() == null } else if (bill.getAccountEvent() == null
&& bill.getPaidDate() == null && bill.getPaidDate() == null
&& (SvmReturnType.NOTIFICATION.equals(type) || SvmReturnType.SUCCESS.equals(type))) { && (SvmReturnType.NOTIFICATION.equals(type) || SvmReturnType.SUCCESS.equals(type))) {
billBean.markPaid(bill, Calendar.getInstance()); vmrunner.markPaid(bill, Calendar.getInstance());
logbean.logMessage(SecurityLogType.verkkomaksu, permbean.getCurrentUser(), "Validated order number ", orderNumber, " bill ", bill == null ? "null" : bill.toString(), " with authcode: ", authcode); logbean.logMessage(SecurityLogType.verkkomaksu, permbean.getCurrentUser(), "Validated order number ", orderNumber, " bill ", bill == null ? "null" : bill.toString(), " with authcode: ", authcode);
ret = true; ret = true;
} else { } else {
...@@ -130,9 +139,9 @@ public class VerkkomaksutFiBean implements VerkkomaksutFiBeanLocal { ...@@ -130,9 +139,9 @@ public class VerkkomaksutFiBean implements VerkkomaksutFiBeanLocal {
public VerkkomaksutReturnEntry getSvmToken(Bill bill) public VerkkomaksutReturnEntry getSvmToken(Bill bill)
{ {
LanEventProperty expire = lanbean.getProperty(LanEventPropertyKey.VERKKOMAKSU_KEY_EXPIRE); LanEventPrivateProperty expire = eventbean.getPrivateProperty(LanEventPrivatePropertyKey.VERKKOMAKSU_KEY_EXPIRE);
String merchantid = lanbean.getPropertyString(LanEventPropertyKey.VERKKOMAKSU_MERCHANT_ID); String merchantid = eventbean.getPrivatePropertyString(LanEventPrivatePropertyKey.VERKKOMAKSU_MERCHANT_ID);
String merchantPassword = lanbean.getPropertyString(LanEventPropertyKey.VERKKOMAKSU_MERCHANT_PASSWORD); String merchantPassword = eventbean.getPrivatePropertyString(LanEventPrivatePropertyKey.VERKKOMAKSU_MERCHANT_PASSWORD);
if ((expire != null && new Date().after(expire.getDateValue())) if ((expire != null && new Date().after(expire.getDateValue()))
|| merchantid == null || merchantid.isEmpty() || merchantid == null || merchantid.isEmpty()
|| merchantPassword == null || merchantPassword.isEmpty()) || merchantPassword == null || merchantPassword.isEmpty())
...@@ -144,11 +153,12 @@ public class VerkkomaksutFiBean implements VerkkomaksutFiBeanLocal { ...@@ -144,11 +153,12 @@ public class VerkkomaksutFiBean implements VerkkomaksutFiBeanLocal {
PaymentEntry message = new PaymentEntry(returnUrl); PaymentEntry message = new PaymentEntry(returnUrl);
message.setOrderNumber(bill.getId().toString()); message.setOrderNumber(bill.getId().toString());
message.setReferenceNumber(bill.getReferenceNumber());
message.setPrice(bill.totalPrice()); message.setPrice(bill.totalPrice());
// message.setDescription(); // message.setDescription();
VerkkomaksutReturnEntry ret = sendMessage(message, merchantid, merchantPassword); VerkkomaksutReturnEntry ret = sendMessage(message, merchantid, merchantPassword);
if (ret != null)
if (ret.isError()) { if (ret.isError()) {
logbean.logMessage(SecurityLogType.verkkomaksu, permbean.getCurrentUser(), "User trieed to create new token for bill: ", bill.toString(), " but received error: ", ret.getErrorCode(), " message ", ret.getErrorMessage()); logbean.logMessage(SecurityLogType.verkkomaksu, permbean.getCurrentUser(), "User trieed to create new token for bill: ", bill.toString(), " but received error: ", ret.getErrorCode(), " message ", ret.getErrorMessage());
} else { } else {
......
...@@ -12,7 +12,7 @@ import javax.persistence.criteria.Root; ...@@ -12,7 +12,7 @@ import javax.persistence.criteria.Root;
import fi.insomnia.bortal.beans.EventBeanLocal; import fi.insomnia.bortal.beans.EventBeanLocal;
import fi.insomnia.bortal.model.AccountEvent; import fi.insomnia.bortal.model.AccountEvent;
import fi.insomnia.bortal.model.AccountEvent_; import fi.insomnia.bortal.model.AccountEvent_;
import fi.insomnia.bortal.model.IUser; import fi.insomnia.bortal.model.EventUser;
import fi.insomnia.bortal.model.LanEvent; import fi.insomnia.bortal.model.LanEvent;
import fi.insomnia.bortal.model.Product_; import fi.insomnia.bortal.model.Product_;
import fi.insomnia.bortal.model.Role; import fi.insomnia.bortal.model.Role;
...@@ -29,7 +29,7 @@ public class AccountEventFacade extends IntegerPkGenericFacade<AccountEvent> { ...@@ -29,7 +29,7 @@ public class AccountEventFacade extends IntegerPkGenericFacade<AccountEvent> {
@EJB @EJB
private EventBeanLocal eventbean; private EventBeanLocal eventbean;
public List<Role> findProvidedRoles(LanEvent event, IUser u) { public List<Role> findProvidedRoles(LanEvent event, EventUser u) {
CriteriaBuilder cb = getEm().getCriteriaBuilder(); CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<Role> cq = cb.createQuery(Role.class); CriteriaQuery<Role> cq = cb.createQuery(Role.class);
...@@ -48,7 +48,7 @@ public class AccountEventFacade extends IntegerPkGenericFacade<AccountEvent> { ...@@ -48,7 +48,7 @@ public class AccountEventFacade extends IntegerPkGenericFacade<AccountEvent> {
return getEm().createQuery(cq).getResultList(); return getEm().createQuery(cq).getResultList();
} }
public List<AccountEvent> getAccountEvents(IUser user) { public List<AccountEvent> getAccountEvents(EventUser user) {
CriteriaBuilder cb = getEm().getCriteriaBuilder(); CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<AccountEvent> cq = cb.createQuery(AccountEvent.class); CriteriaQuery<AccountEvent> cq = cb.createQuery(AccountEvent.class);
......
...@@ -12,7 +12,7 @@ import javax.persistence.criteria.Root; ...@@ -12,7 +12,7 @@ import javax.persistence.criteria.Root;
import fi.insomnia.bortal.beans.EventBeanLocal; import fi.insomnia.bortal.beans.EventBeanLocal;
import fi.insomnia.bortal.model.Bill; import fi.insomnia.bortal.model.Bill;
import fi.insomnia.bortal.model.Bill_; import fi.insomnia.bortal.model.Bill_;
import fi.insomnia.bortal.model.IUser; import fi.insomnia.bortal.model.EventUser;
@Stateless @Stateless
@LocalBean @LocalBean
...@@ -54,7 +54,7 @@ public class BillFacade extends IntegerPkGenericFacade<Bill> { ...@@ -54,7 +54,7 @@ public class BillFacade extends IntegerPkGenericFacade<Bill> {
return getEm().createQuery(cq).getResultList(); return getEm().createQuery(cq).getResultList();
} }
public List<Bill> find(IUser user) { public List<Bill> find(EventUser user) {
CriteriaBuilder cb = getEm().getCriteriaBuilder(); CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<Bill> cq = cb.createQuery(Bill.class); CriteriaQuery<Bill> cq = cb.createQuery(Bill.class);
Root<Bill> root = cq.from(Bill.class); Root<Bill> root = cq.from(Bill.class);
......
...@@ -14,9 +14,9 @@ import org.slf4j.Logger; ...@@ -14,9 +14,9 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.beans.EventBeanLocal; import fi.insomnia.bortal.beans.EventBeanLocal;
import fi.insomnia.bortal.model.EventUser;
import fi.insomnia.bortal.model.GroupMembership; import fi.insomnia.bortal.model.GroupMembership;
import fi.insomnia.bortal.model.GroupMembership_; import fi.insomnia.bortal.model.GroupMembership_;
import fi.insomnia.bortal.model.IUser;
import fi.insomnia.bortal.model.PlaceGroup; import fi.insomnia.bortal.model.PlaceGroup;
import fi.insomnia.bortal.model.PlaceGroup_; import fi.insomnia.bortal.model.PlaceGroup_;
import fi.insomnia.bortal.model.Place_; import fi.insomnia.bortal.model.Place_;
...@@ -66,7 +66,7 @@ public class GroupMembershipFacade extends IntegerPkGenericFacade<GroupMembershi ...@@ -66,7 +66,7 @@ public class GroupMembershipFacade extends IntegerPkGenericFacade<GroupMembershi
return getSingleNullableResult(getEm().createQuery(cq)); return getSingleNullableResult(getEm().createQuery(cq));
} }
public List<GroupMembership> findMemberOrCreator(IUser user) { public List<GroupMembership> findMemberOrCreator(EventUser user) {
CriteriaBuilder cb = getEm().getCriteriaBuilder(); CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<GroupMembership> cq = cb.createQuery(GroupMembership.class); CriteriaQuery<GroupMembership> cq = cb.createQuery(GroupMembership.class);
Root<GroupMembership> root = cq.from(GroupMembership.class); Root<GroupMembership> root = cq.from(GroupMembership.class);
...@@ -87,7 +87,7 @@ public class GroupMembershipFacade extends IntegerPkGenericFacade<GroupMembershi ...@@ -87,7 +87,7 @@ public class GroupMembershipFacade extends IntegerPkGenericFacade<GroupMembershi
return getEm().createQuery(cq).getResultList(); return getEm().createQuery(cq).getResultList();
} }
public List<GroupMembership> findMemberships(IUser user) { public List<GroupMembership> findMemberships(EventUser user) {
CriteriaBuilder cb = getEm().getCriteriaBuilder(); CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<GroupMembership> cq = cb.createQuery(GroupMembership.class); CriteriaQuery<GroupMembership> cq = cb.createQuery(GroupMembership.class);
Root<GroupMembership> root = cq.from(GroupMembership.class); Root<GroupMembership> root = cq.from(GroupMembership.class);
......
...@@ -16,7 +16,7 @@ import org.slf4j.LoggerFactory; ...@@ -16,7 +16,7 @@ import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.model.EventMap; import fi.insomnia.bortal.model.EventMap;
import fi.insomnia.bortal.model.EventMap_; import fi.insomnia.bortal.model.EventMap_;
import fi.insomnia.bortal.model.IUser; import fi.insomnia.bortal.model.EventUser;
import fi.insomnia.bortal.model.LanEvent; import fi.insomnia.bortal.model.LanEvent;
import fi.insomnia.bortal.model.Place; import fi.insomnia.bortal.model.Place;
import fi.insomnia.bortal.model.Place_; import fi.insomnia.bortal.model.Place_;
...@@ -57,7 +57,7 @@ public class PlaceFacade extends IntegerPkGenericFacade<Place> { ...@@ -57,7 +57,7 @@ public class PlaceFacade extends IntegerPkGenericFacade<Place> {
} }
} }
public List<Place> findUsersReservations(LanEvent event, IUser user) { public List<Place> findUsersReservations(LanEvent event, EventUser user) {
CriteriaBuilder cb = getEm().getCriteriaBuilder(); CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<Place> cq = cb.createQuery(Place.class); CriteriaQuery<Place> cq = cb.createQuery(Place.class);
......
...@@ -10,7 +10,7 @@ import javax.persistence.criteria.CriteriaQuery; ...@@ -10,7 +10,7 @@ import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root; import javax.persistence.criteria.Root;
import fi.insomnia.bortal.beans.EventBeanLocal; import fi.insomnia.bortal.beans.EventBeanLocal;
import fi.insomnia.bortal.model.IUser; import fi.insomnia.bortal.model.EventUser;
import fi.insomnia.bortal.model.PlaceGroup; import fi.insomnia.bortal.model.PlaceGroup;
import fi.insomnia.bortal.model.PlaceGroup_; import fi.insomnia.bortal.model.PlaceGroup_;
...@@ -26,7 +26,7 @@ public class PlaceGroupFacade extends IntegerPkGenericFacade<PlaceGroup> { ...@@ -26,7 +26,7 @@ public class PlaceGroupFacade extends IntegerPkGenericFacade<PlaceGroup> {
super(PlaceGroup.class); super(PlaceGroup.class);
} }
public List<PlaceGroup> find(IUser user) { public List<PlaceGroup> find(EventUser user) {
CriteriaBuilder cb = getEm().getCriteriaBuilder(); CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<PlaceGroup> cq = cb.createQuery(PlaceGroup.class); CriteriaQuery<PlaceGroup> cq = cb.createQuery(PlaceGroup.class);
Root<PlaceGroup> root = cq.from(PlaceGroup.class); Root<PlaceGroup> root = cq.from(PlaceGroup.class);
......
...@@ -53,27 +53,17 @@ public class ProductFacade extends IntegerPkGenericFacade<Product> { ...@@ -53,27 +53,17 @@ public class ProductFacade extends IntegerPkGenericFacade<Product> {
return getEm().createQuery(cq).getResultList(); return getEm().createQuery(cq).getResultList();
} }
public List<Product> findProductsByFlag(ProductFlag ... productFlags) {
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<Product> cq = cb.createQuery(Product.class);
Root<Product> root = cq.from(Product.class);
cq.where(cb.equal(root.get(Product_.event), eventbean.getCurrentEvent()),
root.get(Product_.productFlags).in(Arrays.asList(productFlags)));
return getEm().createQuery(cq).getResultList(); public List<Product> findProductsByFlag(ProductFlag... productFlags) {
}
public List<Product> findPrepaidProducts() {
CriteriaBuilder cb = getEm().getCriteriaBuilder(); CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<Product> cq = cb.createQuery(Product.class); CriteriaQuery<Product> cq = cb.createQuery(Product.class);
Root<Product> root = cq.from(Product.class); Root<Product> root = cq.from(Product.class);
cq.where(cb.equal(root.get(Product_.event), eventbean.getCurrentEvent()), cq.where(cb.equal(root.get(Product_.event), eventbean.getCurrentEvent()),
cb.isTrue(root.get(Product_.prepaid))); root.get(Product_.productFlags).in(Arrays.asList(productFlags)));
cq.orderBy(cb.asc(root.get(Product_.sort))); cq.orderBy(cb.asc(root.get(Product_.sort)));
return getEm().createQuery(cq).getResultList(); return getEm().createQuery(cq).getResultList();
} }
} }
...@@ -14,7 +14,6 @@ import javax.persistence.criteria.Root; ...@@ -14,7 +14,6 @@ import javax.persistence.criteria.Root;
import fi.insomnia.bortal.beans.EventBeanLocal; import fi.insomnia.bortal.beans.EventBeanLocal;
import fi.insomnia.bortal.model.EventUser; import fi.insomnia.bortal.model.EventUser;
import fi.insomnia.bortal.model.IUser;
import fi.insomnia.bortal.model.PageContent; import fi.insomnia.bortal.model.PageContent;
import fi.insomnia.bortal.model.PageContent_; import fi.insomnia.bortal.model.PageContent_;
import fi.insomnia.bortal.model.Role; import fi.insomnia.bortal.model.Role;
...@@ -45,7 +44,7 @@ public class SitePageFacade extends IntegerPkGenericFacade<SitePage> { ...@@ -45,7 +44,7 @@ public class SitePageFacade extends IntegerPkGenericFacade<SitePage> {
// return getSingleNullableResult(getEm().createQuery(cq)); // return getSingleNullableResult(getEm().createQuery(cq));
// } // }
public List<SitePage> findForUser(IUser user, SitePage siteroot) { public List<SitePage> findForUser(EventUser user, SitePage siteroot) {
CriteriaBuilder cb = getEm().getCriteriaBuilder(); CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<SitePage> cq = cb.createQuery(SitePage.class); CriteriaQuery<SitePage> cq = cb.createQuery(SitePage.class);
Root<SitePage> root = cq.from(SitePage.class); Root<SitePage> root = cq.from(SitePage.class);
......
package fi.insomnia.bortal.verkkomaksutfi; package fi.insomnia.bortal.verkkomaksutfi;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
@XmlAccessorType(XmlAccessType.FIELD)
public class ContactAddressEntry { public class ContactAddressEntry {
private String street; private String street;
......
package fi.insomnia.bortal.verkkomaksutfi; package fi.insomnia.bortal.verkkomaksutfi;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
@XmlAccessorType(XmlAccessType.FIELD)
public class ContactEntry { public class ContactEntry {
private String firstName; private String firstName;
private String lastName; private String lastName;
......
...@@ -21,7 +21,7 @@ public class PaymentEntry { ...@@ -21,7 +21,7 @@ public class PaymentEntry {
private OrderDetailsEntry orderDetails; private OrderDetailsEntry orderDetails;
private String orderNumber = ""; private String orderNumber = "";
private String currency = "EUR"; private String currency = "EUR";
private String referennceNumber; private Integer referenceNumber;
private String description; private String description;
private AvailableLocales locale = AvailableLocales.fi_FI; private AvailableLocales locale = AvailableLocales.fi_FI;
...@@ -75,14 +75,6 @@ public class PaymentEntry { ...@@ -75,14 +75,6 @@ public class PaymentEntry {
this.orderDetails = orderDetails; this.orderDetails = orderDetails;
} }
public String getReferennceNumber() {
return referennceNumber;
}
public void setReferennceNumber(String referennceNumber) {
this.referennceNumber = referennceNumber;
}
public String getDescription() { public String getDescription() {
return description; return description;
} }
...@@ -107,4 +99,12 @@ public class PaymentEntry { ...@@ -107,4 +99,12 @@ public class PaymentEntry {
this.price = price; this.price = price;
} }
public Integer getReferenceNumber() {
return referenceNumber;
}
public void setReferenceNumber(Integer referenceNumber) {
this.referenceNumber = referenceNumber;
}
} }
...@@ -2,10 +2,13 @@ package fi.insomnia.bortal.verkkomaksutfi; ...@@ -2,10 +2,13 @@ package fi.insomnia.bortal.verkkomaksutfi;
import java.math.BigDecimal; import java.math.BigDecimal;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import fi.insomnia.bortal.beanutil.DecimalXMLAdapter; import fi.insomnia.bortal.beanutil.DecimalXMLAdapter;
@XmlAccessorType(XmlAccessType.FIELD)
public class ProductEntry { public class ProductEntry {
private String title; private String title;
......
...@@ -3,6 +3,10 @@ package fi.insomnia.bortal.verkkomaksutfi; ...@@ -3,6 +3,10 @@ package fi.insomnia.bortal.verkkomaksutfi;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
@XmlAccessorType(XmlAccessType.FIELD)
public class ProductsListEntry { public class ProductsListEntry {
private List<ProductEntry> product = new ArrayList<ProductEntry>(); private List<ProductEntry> product = new ArrayList<ProductEntry>();
......
package fi.insomnia.bortal.verkkomaksutfi; package fi.insomnia.bortal.verkkomaksutfi;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
@XmlAccessorType(XmlAccessType.FIELD)
public class UrlSetEntry { public class UrlSetEntry {
public UrlSetEntry() public UrlSetEntry()
......
...@@ -8,7 +8,6 @@ import javax.ejb.Local; ...@@ -8,7 +8,6 @@ import javax.ejb.Local;
import fi.insomnia.bortal.model.AccountEvent; import fi.insomnia.bortal.model.AccountEvent;
import fi.insomnia.bortal.model.EventUser; import fi.insomnia.bortal.model.EventUser;
import fi.insomnia.bortal.model.IUser;
import fi.insomnia.bortal.model.Product; import fi.insomnia.bortal.model.Product;
import fi.insomnia.bortal.model.Role; import fi.insomnia.bortal.model.Role;
...@@ -21,9 +20,9 @@ public interface AccountEventBeanLocal { ...@@ -21,9 +20,9 @@ public interface AccountEventBeanLocal {
AccountEvent find(Integer id); AccountEvent find(Integer id);
List<Role> getRolesFromAccountEvents(IUser u);
void shopCash(EventUser shoppingUser, Map<Product, BigDecimal> void shopCash(EventUser shoppingUser, Map<Product, BigDecimal>
shopMap, boolean buyInstant); shopMap, boolean buyInstant);
List<Role> getRolesFromAccountEvents(EventUser u);
} }
...@@ -9,7 +9,7 @@ import javax.ejb.Local; ...@@ -9,7 +9,7 @@ import javax.ejb.Local;
import fi.insomnia.bortal.bortal.views.BillSummary; import fi.insomnia.bortal.bortal.views.BillSummary;
import fi.insomnia.bortal.model.Bill; import fi.insomnia.bortal.model.Bill;
import fi.insomnia.bortal.model.IUser; import fi.insomnia.bortal.model.EventUser;
@Local @Local
public interface BillBeanLocal { public interface BillBeanLocal {
...@@ -34,6 +34,6 @@ public interface BillBeanLocal { ...@@ -34,6 +34,6 @@ public interface BillBeanLocal {
Bill save(Bill bill); Bill save(Bill bill);
List<Bill> find(IUser user); List<Bill> find(EventUser user);
} }
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.EventOrganiser;
import fi.insomnia.bortal.model.LanEvent; import fi.insomnia.bortal.model.LanEvent;
import fi.insomnia.bortal.model.LanEventPrivateProperty;
import fi.insomnia.bortal.model.LanEventProperty; import fi.insomnia.bortal.model.LanEventProperty;
import fi.insomnia.bortal.model.LanEventPropertyKey; import fi.insomnia.bortal.model.LanEventPropertyKey;
...@@ -25,4 +29,10 @@ public interface EventBeanLocal { ...@@ -25,4 +29,10 @@ public interface EventBeanLocal {
String getPropertyString(LanEventPropertyKey property); String getPropertyString(LanEventPropertyKey property);
LanEventProperty saveOrCreateProperty(LanEventProperty property); LanEventProperty saveOrCreateProperty(LanEventProperty property);
EventOrganiser mergeChanges(EventOrganiser eventorg);
List<LanEventPrivateProperty> getPrivateProperties();
LanEventPrivateProperty saveOrCreatePrivateProperty(LanEventPrivateProperty privateProperty);
} }
...@@ -15,4 +15,6 @@ public interface EventMapBeanLocal { ...@@ -15,4 +15,6 @@ public interface EventMapBeanLocal {
EventMap find(Integer mapId); EventMap find(Integer mapId);
EventMap clearPlaces(EventMap map);
} }
...@@ -5,8 +5,8 @@ import java.util.List; ...@@ -5,8 +5,8 @@ import java.util.List;
import javax.ejb.Local; import javax.ejb.Local;
import fi.insomnia.bortal.model.EventOrganiser; import fi.insomnia.bortal.model.EventOrganiser;
import fi.insomnia.bortal.model.IUser;
import fi.insomnia.bortal.model.LanEvent; import fi.insomnia.bortal.model.LanEvent;
import fi.insomnia.bortal.model.User;
@Local @Local
public interface EventOrganiserBeanLocal { public interface EventOrganiserBeanLocal {
...@@ -21,7 +21,7 @@ public interface EventOrganiserBeanLocal { ...@@ -21,7 +21,7 @@ public interface EventOrganiserBeanLocal {
LanEvent findEvent(Integer eventid); LanEvent findEvent(Integer eventid);
List<EventOrganiser> getOrganisations(IUser user); List<EventOrganiser> getOrganisations(User user);
boolean hasOrgPermission(Integer orgId); boolean hasOrgPermission(Integer orgId);
......
package fi.insomnia.bortal.salespoint; package fi.insomnia.bortal.salespoint;
import fi.insomnia.bortal.model.IUser; import fi.insomnia.bortal.model.EventUser;
public class SalesSession { public class SalesSession {
IUser cashierUser; EventUser cashierUser;
IUser customerUser; EventUser customerUser;
Cart shoppingCart; Cart shoppingCart;
} }
...@@ -29,6 +29,8 @@ import org.eclipse.persistence.annotations.OptimisticLockingType; ...@@ -29,6 +29,8 @@ import org.eclipse.persistence.annotations.OptimisticLockingType;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.utilities.BillUtils;
/** /**
* The system can send bills to the users. When user pays bill a AccountEvent * The system can send bills to the users. When user pays bill a AccountEvent
* row is created for product whose price is +1 and Bills paidDate is changed to * row is created for product whose price is +1 and Bills paidDate is changed to
...@@ -115,6 +117,11 @@ public class Bill extends GenericEntity { ...@@ -115,6 +117,11 @@ public class Bill extends GenericEntity {
@OneToMany(mappedBy = "bill", cascade = CascadeType.ALL) @OneToMany(mappedBy = "bill", cascade = CascadeType.ALL)
private List<BillLine> billLines; private List<BillLine> billLines;
public boolean isPaid()
{
return accountEvent != null || paidDate != null;
}
/** /**
* When the bill is paid this AccountEvent is created and this is a * When the bill is paid this AccountEvent is created and this is a
* reference to that accountAction. if this bill * reference to that accountAction. if this bill
...@@ -139,6 +146,11 @@ public class Bill extends GenericEntity { ...@@ -139,6 +146,11 @@ public class Bill extends GenericEntity {
return null; return null;
} }
public Integer getReferenceNumber()
{
return BillUtils.createReferenceNumber(getReferenceNumberBase());
}
/** /**
* Commodity function to calculate the total price of the bill. * Commodity function to calculate the total price of the bill.
* *
......
...@@ -7,7 +7,7 @@ import javax.persistence.metamodel.ListAttribute; ...@@ -7,7 +7,7 @@ import javax.persistence.metamodel.ListAttribute;
import javax.persistence.metamodel.SingularAttribute; import javax.persistence.metamodel.SingularAttribute;
import javax.persistence.metamodel.StaticMetamodel; import javax.persistence.metamodel.StaticMetamodel;
@Generated(value="Dali", date="2012-05-16T02:51:16.302+0300") @Generated(value="Dali", date="2012-08-21T16:13:39.892+0300")
@StaticMetamodel(Bill.class) @StaticMetamodel(Bill.class)
public class Bill_ extends GenericEntity_ { public class Bill_ extends GenericEntity_ {
public static volatile SingularAttribute<Bill, LanEvent> event; public static volatile SingularAttribute<Bill, LanEvent> event;
......
...@@ -14,22 +14,16 @@ import javax.persistence.Table; ...@@ -14,22 +14,16 @@ import javax.persistence.Table;
import org.eclipse.persistence.annotations.OptimisticLocking; import org.eclipse.persistence.annotations.OptimisticLocking;
import org.eclipse.persistence.annotations.OptimisticLockingType; import org.eclipse.persistence.annotations.OptimisticLockingType;
import org.eclipse.persistence.annotations.PrivateOwned;
/** /**
* *
*/ */
@Entity @Entity
@Table(name = "maps") @Table(name = "maps")
// @NamedQueries({
// @NamedQuery(name = "EventMap.findAll", query = "SELECT e FROM EventMap e"),
// @NamedQuery(name = "EventMap.findByName", query =
// "SELECT e FROM EventMap e WHERE e.name = :name") })
@OptimisticLocking(type = OptimisticLockingType.CHANGED_COLUMNS) @OptimisticLocking(type = OptimisticLockingType.CHANGED_COLUMNS)
public class EventMap extends GenericEntity { public class EventMap extends GenericEntity {
/**
*
*/
private static final long serialVersionUID = 3411450245513673619L; private static final long serialVersionUID = 3411450245513673619L;
@ManyToOne() @ManyToOne()
...@@ -52,6 +46,7 @@ public class EventMap extends GenericEntity { ...@@ -52,6 +46,7 @@ public class EventMap extends GenericEntity {
@OrderBy("name") @OrderBy("name")
@OneToMany(cascade = CascadeType.ALL, mappedBy = "map") @OneToMany(cascade = CascadeType.ALL, mappedBy = "map")
@PrivateOwned
private List<Place> places = new ArrayList<Place>(); private List<Place> places = new ArrayList<Place>();
@OneToMany(mappedBy = "eventMap") @OneToMany(mappedBy = "eventMap")
......
...@@ -5,7 +5,7 @@ import javax.persistence.metamodel.ListAttribute; ...@@ -5,7 +5,7 @@ import javax.persistence.metamodel.ListAttribute;
import javax.persistence.metamodel.SingularAttribute; import javax.persistence.metamodel.SingularAttribute;
import javax.persistence.metamodel.StaticMetamodel; import javax.persistence.metamodel.StaticMetamodel;
@Generated(value="Dali", date="2012-05-12T14:43:39.059+0300") @Generated(value="Dali", date="2012-08-22T04:30:56.900+0300")
@StaticMetamodel(EventMap.class) @StaticMetamodel(EventMap.class)
public class EventMap_ extends GenericEntity_ { public class EventMap_ extends GenericEntity_ {
public static volatile SingularAttribute<EventMap, LanEvent> event; public static volatile SingularAttribute<EventMap, LanEvent> event;
......
...@@ -6,12 +6,7 @@ public enum LanEventPropertyKey { ...@@ -6,12 +6,7 @@ public enum LanEventPropertyKey {
INVITEMAIL_CONTENT(Type.TEXT, "You have been invited to Stream demoparty by {1}.\n\nYou can register to stream demparty intranet at: {0}\n\nAfter registering to the intranet you can buy a ticket to Stream demoparty reduced price and invite your friends to join the party with you. More information can be found in the intranet. Remember also to visit our website at http://www.streamparty.org and join us at #streamparty in IRCNet. If you have any questions about this mail, registering to intranet, or anything else regarding Stream demoparty, please send us email to info@streamparty.org\n\n-- \nStream organizing\ninfo@streamparty.org"), INVITEMAIL_CONTENT(Type.TEXT, "You have been invited to Stream demoparty by {1}.\n\nYou can register to stream demparty intranet at: {0}\n\nAfter registering to the intranet you can buy a ticket to Stream demoparty reduced price and invite your friends to join the party with you. More information can be found in the intranet. Remember also to visit our website at http://www.streamparty.org and join us at #streamparty in IRCNet. If you have any questions about this mail, registering to intranet, or anything else regarding Stream demoparty, please send us email to info@streamparty.org\n\n-- \nStream organizing\ninfo@streamparty.org"),
PORTAL_EMAIL_ADDRESS(Type.TEXT, "intra@streamparty.org"), PORTAL_EMAIL_ADDRESS(Type.TEXT, "intra@streamparty.org"),
PORTAL_EMAIL_NAME(Type.TEXT, "Streamparty intranet"), PORTAL_EMAIL_NAME(Type.TEXT, "Streamparty intranet"),
ADMIN_MAIL(Type.TEXT, "intra@streamparty.org"), ADMIN_MAIL(Type.TEXT, "intra@streamparty.org"), ;
VERKKOMAKSU_KEY_EXPIRE(Type.DATE, null),
VERKKOMAKSU_MERCHANT_ID(Type.TEXT, null),
VERKKOMAKSU_MERCHANT_PASSWORD(Type.TEXT, null),
;
private enum Type { private enum Type {
TEXT, DATE, DATA TEXT, DATE, DATA
}; };
......
...@@ -69,8 +69,8 @@ public class Place extends GenericEntity { ...@@ -69,8 +69,8 @@ public class Place extends GenericEntity {
@JoinColumn(name = "provided_role_id", referencedColumnName = Role.ID_COLUMN) @JoinColumn(name = "provided_role_id", referencedColumnName = Role.ID_COLUMN)
private Role providesRole; private Role providesRole;
@JoinColumn(name = "map_id", referencedColumnName = EventMap.ID_COLUMN, nullable = false) @JoinColumn(name = "map_id", referencedColumnName = EventMap.ID_COLUMN, nullable = true)
@ManyToOne(optional = false, cascade = CascadeType.ALL) @ManyToOne(optional = true, cascade = CascadeType.ALL)
private EventMap map; private EventMap map;
/** /**
* Which ticket type is this place sold as * Which ticket type is this place sold as
...@@ -148,7 +148,7 @@ public class Place extends GenericEntity { ...@@ -148,7 +148,7 @@ public class Place extends GenericEntity {
} }
public void setGroup(PlaceGroup group) { public void setGroup(PlaceGroup group) {
if (group != null && !group.getEvent().equals(map.getEvent())) { if (group != null && map != null && !group.getEvent().equals(map.getEvent())) {
throw new RuntimeException("Can not set Group from different Event to Place!"); throw new RuntimeException("Can not set Group from different Event to Place!");
} }
this.group = group; this.group = group;
...@@ -225,7 +225,7 @@ public class Place extends GenericEntity { ...@@ -225,7 +225,7 @@ public class Place extends GenericEntity {
* *
* @return Is the place reserved ( not bought for user) * @return Is the place reserved ( not bought for user)
*/ */
public boolean isReservedFor(IUser u) { public boolean isReservedFor(EventUser u) {
return (u.equals(getCurrentUser()) && getGroup() == null); return (u.equals(getCurrentUser()) && getGroup() == null);
} }
......
...@@ -12,6 +12,7 @@ import java.util.List; ...@@ -12,6 +12,7 @@ import java.util.List;
import java.util.Set; import java.util.Set;
import javax.persistence.CascadeType; import javax.persistence.CascadeType;
import javax.persistence.CollectionTable;
import javax.persistence.Column; import javax.persistence.Column;
import javax.persistence.ElementCollection; import javax.persistence.ElementCollection;
import javax.persistence.Entity; import javax.persistence.Entity;
...@@ -37,6 +38,8 @@ import org.eclipse.persistence.annotations.PrivateOwned; ...@@ -37,6 +38,8 @@ import org.eclipse.persistence.annotations.PrivateOwned;
@OptimisticLocking(type = OptimisticLockingType.CHANGED_COLUMNS) @OptimisticLocking(type = OptimisticLockingType.CHANGED_COLUMNS)
public class Product extends GenericEntity { public class Product extends GenericEntity {
private static final String PRODUCTFLAG_TABLE_PRODUCTID = "product_id";
private static final String PRODUCTFLAG_TABLE_COLUMN = "productflags";
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
public static final String EVENT_ID_COLUMN = "event_id"; public static final String EVENT_ID_COLUMN = "event_id";
@ManyToOne() @ManyToOne()
...@@ -57,17 +60,15 @@ public class Product extends GenericEntity { ...@@ -57,17 +60,15 @@ public class Product extends GenericEntity {
@Column(name = "barcode") @Column(name = "barcode")
private String barcode; private String barcode;
@Column(name = "prepaid")
private boolean prepaid = false;
@Enumerated(EnumType.STRING) @Enumerated(EnumType.STRING)
@PrivateOwned @PrivateOwned
@ElementCollection() @ElementCollection()
@CollectionTable(
joinColumns = @JoinColumn(name = PRODUCTFLAG_TABLE_PRODUCTID, referencedColumnName = ID_COLUMN),
uniqueConstraints = @UniqueConstraint(columnNames = { PRODUCTFLAG_TABLE_PRODUCTID, PRODUCTFLAG_TABLE_COLUMN }))
@Column(name = PRODUCTFLAG_TABLE_COLUMN)
private Set<ProductFlag> productFlags = new HashSet<ProductFlag>(); private Set<ProductFlag> productFlags = new HashSet<ProductFlag>();
@Column(name = "instant_shop")
private boolean prepaidInstant = false;
@JoinColumn(name = "provided_role_id", referencedColumnName = Role.ID_COLUMN) @JoinColumn(name = "provided_role_id", referencedColumnName = Role.ID_COLUMN)
@ManyToOne @ManyToOne
private Role provides; private Role provides;
...@@ -84,7 +85,7 @@ public class Product extends GenericEntity { ...@@ -84,7 +85,7 @@ public class Product extends GenericEntity {
@JoinColumn(name = "discount_id", referencedColumnName = Discount.ID_COLUMN) @JoinColumn(name = "discount_id", referencedColumnName = Discount.ID_COLUMN)
}, },
joinColumns = { joinColumns = {
@JoinColumn(name = "product_id", referencedColumnName = Product.ID_COLUMN) @JoinColumn(name = PRODUCTFLAG_TABLE_PRODUCTID, referencedColumnName = Product.ID_COLUMN)
}) })
private List<Discount> discounts; private List<Discount> discounts;
...@@ -94,13 +95,13 @@ public class Product extends GenericEntity { ...@@ -94,13 +95,13 @@ public class Product extends GenericEntity {
@ManyToMany() @ManyToMany()
@JoinTable(name = "product_foodwavetemplate", @JoinTable(name = "product_foodwavetemplate",
joinColumns = { joinColumns = {
@JoinColumn(name = "product_id", referencedColumnName = Product.ID_COLUMN), @JoinColumn(name = PRODUCTFLAG_TABLE_PRODUCTID, referencedColumnName = Product.ID_COLUMN),
}, },
inverseJoinColumns = { inverseJoinColumns = {
@JoinColumn(name = "food_wave_template_id", referencedColumnName = FoodWaveTemplate.ID_COLUMN) @JoinColumn(name = "food_wave_template_id", referencedColumnName = FoodWaveTemplate.ID_COLUMN)
}, },
uniqueConstraints = { uniqueConstraints = {
@UniqueConstraint(columnNames = { "product_id", "food_wave_template_id" }) @UniqueConstraint(columnNames = { PRODUCTFLAG_TABLE_PRODUCTID, "food_wave_template_id" })
}) })
private List<FoodWaveTemplate> foodWaveTemplates; private List<FoodWaveTemplate> foodWaveTemplates;
...@@ -213,21 +214,6 @@ public class Product extends GenericEntity { ...@@ -213,21 +214,6 @@ public class Product extends GenericEntity {
return foodWaveTemplates; return foodWaveTemplates;
} }
/**
* @return the prepaid
*/
public boolean isPrepaid() {
return prepaid;
}
/**
* @param prepaid
* the prepaid to set
*/
public void setPrepaid(boolean prepaid) {
this.prepaid = prepaid;
}
public void setVat(BigDecimal vat) { public void setVat(BigDecimal vat) {
this.vat = vat; this.vat = vat;
} }
...@@ -244,14 +230,6 @@ public class Product extends GenericEntity { ...@@ -244,14 +230,6 @@ public class Product extends GenericEntity {
return unitName; return unitName;
} }
public void setPrepaidInstant(boolean prepaidInstant) {
this.prepaidInstant = prepaidInstant;
}
public boolean isPrepaidInstant() {
return prepaidInstant;
}
public void setProvides(Role provides) { public void setProvides(Role provides) {
this.provides = provides; this.provides = provides;
} }
......
...@@ -3,11 +3,14 @@ package fi.insomnia.bortal.model; ...@@ -3,11 +3,14 @@ package fi.insomnia.bortal.model;
public enum ProductFlag { public enum ProductFlag {
FOODWAVE_ITEM, FOODWAVE_ITEM,
PREPAID_CREDIT PREPAID_CREDIT,
; CREATE_NEW_PLACE_WHEN_BOUGHT,
RESERVE_PLACE_WHEN_BOUGHT,
PREPAID_INSTANT_CREATE, USER_SHOPPABLE;
private static final String KEY_PREFIX = "productFlag."; private static final String KEY_PREFIX = "productFlag.";
private final String key; private final String key;
private ProductFlag() { private ProductFlag() {
key = KEY_PREFIX + name(); key = KEY_PREFIX + name();
} }
......
...@@ -7,7 +7,7 @@ import javax.persistence.metamodel.SetAttribute; ...@@ -7,7 +7,7 @@ import javax.persistence.metamodel.SetAttribute;
import javax.persistence.metamodel.SingularAttribute; import javax.persistence.metamodel.SingularAttribute;
import javax.persistence.metamodel.StaticMetamodel; import javax.persistence.metamodel.StaticMetamodel;
@Generated(value="Dali", date="2012-08-19T19:24:42.761+0300") @Generated(value="Dali", date="2012-08-24T01:13:32.136+0300")
@StaticMetamodel(Product.class) @StaticMetamodel(Product.class)
public class Product_ extends GenericEntity_ { public class Product_ extends GenericEntity_ {
public static volatile SingularAttribute<Product, LanEvent> event; public static volatile SingularAttribute<Product, LanEvent> event;
...@@ -16,9 +16,7 @@ public class Product_ extends GenericEntity_ { ...@@ -16,9 +16,7 @@ public class Product_ extends GenericEntity_ {
public static volatile SingularAttribute<Product, BigDecimal> price; public static volatile SingularAttribute<Product, BigDecimal> price;
public static volatile SingularAttribute<Product, Integer> sort; public static volatile SingularAttribute<Product, Integer> sort;
public static volatile SingularAttribute<Product, String> barcode; public static volatile SingularAttribute<Product, String> barcode;
public static volatile SingularAttribute<Product, Boolean> prepaid;
public static volatile SetAttribute<Product, ProductFlag> productFlags; public static volatile SetAttribute<Product, ProductFlag> productFlags;
public static volatile SingularAttribute<Product, Boolean> prepaidInstant;
public static volatile SingularAttribute<Product, Role> provides; public static volatile SingularAttribute<Product, Role> provides;
public static volatile ListAttribute<Product, Place> places; public static volatile ListAttribute<Product, Place> places;
public static volatile ListAttribute<Product, AccountEvent> accountEvents; public static volatile ListAttribute<Product, AccountEvent> accountEvents;
......
...@@ -8,7 +8,6 @@ import javax.persistence.Column; ...@@ -8,7 +8,6 @@ import javax.persistence.Column;
import javax.persistence.Entity; import javax.persistence.Entity;
import javax.persistence.EnumType; import javax.persistence.EnumType;
import javax.persistence.Enumerated; import javax.persistence.Enumerated;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn; import javax.persistence.JoinColumn;
import javax.persistence.OneToMany; import javax.persistence.OneToMany;
import javax.persistence.OneToOne; import javax.persistence.OneToOne;
...@@ -104,7 +103,7 @@ public class User extends GenericEntity implements IUser { ...@@ -104,7 +103,7 @@ public class User extends GenericEntity implements IUser {
@Column(name = "superadmin") @Column(name = "superadmin")
private boolean superadmin = false; private boolean superadmin = false;
@OneToMany(mappedBy = "user", fetch = FetchType.LAZY, cascade = CascadeType.ALL) @OneToMany(mappedBy = "user", cascade = CascadeType.ALL)
@OrderBy @OrderBy
@PrivateOwned @PrivateOwned
private List<UserImage> userImageList; private List<UserImage> userImageList;
...@@ -112,73 +111,38 @@ public class User extends GenericEntity implements IUser { ...@@ -112,73 +111,38 @@ public class User extends GenericEntity implements IUser {
@Transient @Transient
private static final Logger logger = LoggerFactory.getLogger(User.class); private static final Logger logger = LoggerFactory.getLogger(User.class);
/*
* (non-Javadoc)
*
* @see fi.insomnia.bortal.model.IUser#getCreated()
*/
@Override @Override
public Calendar getCreated() { public Calendar getCreated() {
return created; return created;
} }
/*
* (non-Javadoc)
*
* @see fi.insomnia.bortal.model.IUser#setCreated(java.util.Calendar)
*/
@Override @Override
public void setCreated(Calendar created) { public void setCreated(Calendar created) {
this.created = created; this.created = created;
} }
/*
* (non-Javadoc)
*
* @see fi.insomnia.bortal.model.IUser#getActive()
*/
@Override @Override
public boolean getActive() { public boolean getActive() {
return active; return active;
} }
/*
* (non-Javadoc)
*
* @see fi.insomnia.bortal.model.IUser#setActive(boolean)
*/
@Override @Override
public void setActive(boolean active) { public void setActive(boolean active) {
this.active = active; this.active = active;
} }
/*
* (non-Javadoc)
*
* @see fi.insomnia.bortal.model.IUser#getPassword()
*/
@Override @Override
public String getPassword() { public String getPassword() {
logger.warn("Directly reading raw User password"); logger.warn("Directly reading raw User password");
return password; return password;
} }
/*
* (non-Javadoc)
*
* @see fi.insomnia.bortal.model.IUser#setPassword(java.lang.String)
*/
@Override @Override
public void setPassword(String password) { public void setPassword(String password) {
logger.warn("Directly settings raw User password"); logger.warn("Directly settings raw User password");
this.password = password; this.password = password;
} }
/*
* (non-Javadoc)
*
* @see fi.insomnia.bortal.model.IUser#getWholeName()
*/
@Override @Override
public String getWholeName() { public String getWholeName() {
String ret = new StringBuilder().append(firstnames).append(" ").append(lastname).toString().trim(); String ret = new StringBuilder().append(firstnames).append(" ").append(lastname).toString().trim();
...@@ -188,201 +152,101 @@ public class User extends GenericEntity implements IUser { ...@@ -188,201 +152,101 @@ public class User extends GenericEntity implements IUser {
return ret; return ret;
} }
/*
* (non-Javadoc)
*
* @see fi.insomnia.bortal.model.IUser#getLastname()
*/
@Override @Override
public String getLastname() { public String getLastname() {
return lastname; return lastname;
} }
/*
* (non-Javadoc)
*
* @see fi.insomnia.bortal.model.IUser#setLastname(java.lang.String)
*/
@Override @Override
public void setLastname(String lastname) { public void setLastname(String lastname) {
this.lastname = lastname; this.lastname = lastname;
} }
/*
* (non-Javadoc)
*
* @see fi.insomnia.bortal.model.IUser#getFirstnames()
*/
@Override @Override
public String getFirstnames() { public String getFirstnames() {
return firstnames; return firstnames;
} }
/*
* (non-Javadoc)
*
* @see fi.insomnia.bortal.model.IUser#setFirstnames(java.lang.String)
*/
@Override @Override
public void setFirstnames(String firstnames) { public void setFirstnames(String firstnames) {
this.firstnames = firstnames; this.firstnames = firstnames;
} }
/*
* (non-Javadoc)
*
* @see fi.insomnia.bortal.model.IUser#getBirthday()
*/
@Override @Override
public Calendar getBirthday() { public Calendar getBirthday() {
return birthday; return birthday;
} }
/*
* (non-Javadoc)
*
* @see fi.insomnia.bortal.model.IUser#setBirthday(java.util.Calendar)
*/
@Override @Override
public void setBirthday(Calendar birthday) { public void setBirthday(Calendar birthday) {
this.birthday = birthday; this.birthday = birthday;
} }
/*
* (non-Javadoc)
*
* @see fi.insomnia.bortal.model.IUser#getNick()
*/
@Override @Override
public String getNick() { public String getNick() {
return nick; return nick;
} }
/*
* (non-Javadoc)
*
* @see fi.insomnia.bortal.model.IUser#setNick(java.lang.String)
*/
@Override @Override
public void setNick(String nick) { public void setNick(String nick) {
this.nick = nick; this.nick = nick;
} }
/*
* (non-Javadoc)
*
* @see fi.insomnia.bortal.model.IUser#getEmail()
*/
@Override @Override
public String getEmail() { public String getEmail() {
return email; return email;
} }
/*
* (non-Javadoc)
*
* @see fi.insomnia.bortal.model.IUser#setEmail(java.lang.String)
*/
@Override @Override
public void setEmail(String email) { public void setEmail(String email) {
this.email = email; this.email = email;
} }
/*
* (non-Javadoc)
*
* @see fi.insomnia.bortal.model.IUser#getAddress()
*/
@Override @Override
public String getAddress() { public String getAddress() {
return address; return address;
} }
/*
* (non-Javadoc)
*
* @see fi.insomnia.bortal.model.IUser#setAddress(java.lang.String)
*/
@Override @Override
public void setAddress(String address) { public void setAddress(String address) {
this.address = address; this.address = address;
} }
/*
* (non-Javadoc)
*
* @see fi.insomnia.bortal.model.IUser#getZip()
*/
@Override @Override
public String getZip() { public String getZip() {
return zip; return zip;
} }
/*
* (non-Javadoc)
*
* @see fi.insomnia.bortal.model.IUser#setZip(java.lang.String)
*/
@Override @Override
public void setZip(String zip) { public void setZip(String zip) {
this.zip = zip; this.zip = zip;
} }
/*
* (non-Javadoc)
*
* @see fi.insomnia.bortal.model.IUser#getTown()
*/
@Override @Override
public String getTown() { public String getTown() {
return town; return town;
} }
/*
* (non-Javadoc)
*
* @see fi.insomnia.bortal.model.IUser#setTown(java.lang.String)
*/
@Override @Override
public void setTown(String town) { public void setTown(String town) {
this.town = town; this.town = town;
} }
/*
* (non-Javadoc)
*
* @see fi.insomnia.bortal.model.IUser#getPhone()
*/
@Override @Override
public String getPhone() { public String getPhone() {
return phone; return phone;
} }
/*
* (non-Javadoc)
*
* @see fi.insomnia.bortal.model.IUser#setPhone(java.lang.String)
*/
@Override @Override
public void setPhone(String phone) { public void setPhone(String phone) {
this.phone = phone; this.phone = phone;
} }
/*
* (non-Javadoc)
*
* @see fi.insomnia.bortal.model.IUser#getLogin()
*/
@Override @Override
public String getLogin() { public String getLogin() {
return login; return login;
} }
/*
* (non-Javadoc)
*
* @see fi.insomnia.bortal.model.IUser#setLogin(java.lang.String)
*/
@Override @Override
public void setLogin(String login) { public void setLogin(String login) {
// Do not allow anonymous userchange // Do not allow anonymous userchange
...@@ -396,166 +260,83 @@ public class User extends GenericEntity implements IUser { ...@@ -396,166 +260,83 @@ public class User extends GenericEntity implements IUser {
} }
/*
* (non-Javadoc)
*
* @see fi.insomnia.bortal.model.IUser#getUserImageList()
*/
@Override @Override
public List<UserImage> getUserImageList() { public List<UserImage> getUserImageList() {
return userImageList; return userImageList;
} }
/*
* (non-Javadoc)
*
* @see fi.insomnia.bortal.model.IUser#setUserImageList(java.util.List)
*/
@Override @Override
public void setUserImageList(List<UserImage> userImageList) { public void setUserImageList(List<UserImage> userImageList) {
this.userImageList = userImageList; this.userImageList = userImageList;
} }
/*
* (non-Javadoc)
*
* @see fi.insomnia.bortal.model.IUser#getConfirmHash()
*/
@Override @Override
public String getConfirmHash() { public String getConfirmHash() {
return confirmHash; return confirmHash;
} }
/*
* (non-Javadoc)
*
* @see fi.insomnia.bortal.model.IUser#setConfirmHash(java.lang.String)
*/
@Override @Override
public void setConfirmHash(String confirmHash) { public void setConfirmHash(String confirmHash) {
this.confirmHash = confirmHash; this.confirmHash = confirmHash;
} }
/*
* (non-Javadoc)
*
* @see fi.insomnia.bortal.model.IUser#getConfirmTime()
*/
@Override @Override
public Calendar getConfirmTime() { public Calendar getConfirmTime() {
return confirmTime; return confirmTime;
} }
/*
* (non-Javadoc)
*
* @see fi.insomnia.bortal.model.IUser#setConfirmTime(java.util.Calendar)
*/
@Override @Override
public void setConfirmTime(Calendar confirmTime) { public void setConfirmTime(Calendar confirmTime) {
this.confirmTime = confirmTime; this.confirmTime = confirmTime;
} }
/*
* (non-Javadoc)
*
* @see fi.insomnia.bortal.model.IUser#resetPassword(java.lang.String)
*/
@Override @Override
public void resetPassword(String password) { public void resetPassword(String password) {
String newEncryptedPassword = PasswordFunctions.getEncryptedPassword(password); String newEncryptedPassword = PasswordFunctions.getEncryptedPassword(password);
this.password = newEncryptedPassword; // Bypass setter this.password = newEncryptedPassword; // Bypass setter
} }
/*
* (non-Javadoc)
*
* @see fi.insomnia.bortal.model.IUser#checkPassword(java.lang.String)
*/
@Override @Override
public boolean checkPassword(String plainPassword) { public boolean checkPassword(String plainPassword) {
boolean matches = PasswordFunctions.checkPlainPassword(plainPassword, this.password); boolean matches = PasswordFunctions.checkPlainPassword(plainPassword, this.password);
return matches; return matches;
} }
/*
* (non-Javadoc)
*
* @see fi.insomnia.bortal.model.IUser#setSuperadmin(boolean)
*/
@Override @Override
public void setSuperadmin(boolean superadmin) { public void setSuperadmin(boolean superadmin) {
this.superadmin = superadmin; this.superadmin = superadmin;
} }
/*
* (non-Javadoc)
*
* @see fi.insomnia.bortal.model.IUser#isSuperadmin()
*/
@Override @Override
public boolean isSuperadmin() { public boolean isSuperadmin() {
return superadmin; return superadmin;
} }
/*
* (non-Javadoc)
*
* @see fi.insomnia.bortal.model.IUser#setPostalTown(java.lang.String)
*/
@Override @Override
public void setPostalTown(String postalTown) { public void setPostalTown(String postalTown) {
this.postalTown = postalTown; this.postalTown = postalTown;
} }
/*
* (non-Javadoc)
*
* @see fi.insomnia.bortal.model.IUser#getPostalTown()
*/
@Override @Override
public String getPostalTown() { public String getPostalTown() {
return postalTown; return postalTown;
} }
/*
* (non-Javadoc)
*
* @see
* fi.insomnia.bortal.model.IUser#setGender(fi.insomnia.bortal.enums.Gender)
*/
@Override @Override
public void setGender(Gender gender) { public void setGender(Gender gender) {
this.gender = gender; this.gender = gender;
} }
/*
* (non-Javadoc)
*
* @see fi.insomnia.bortal.model.IUser#getGender()
*/
@Override @Override
public Gender getGender() { public Gender getGender() {
return gender; return gender;
} }
/*
* (non-Javadoc)
*
* @see
* fi.insomnia.bortal.model.IUser#setCurrentImage(fi.insomnia.bortal.model
* .UserImage)
*/
@Override @Override
public void setCurrentImage(UserImage currentImage) { public void setCurrentImage(UserImage currentImage) {
this.currentImage = currentImage; this.currentImage = currentImage;
} }
/*
* (non-Javadoc)
*
* @see fi.insomnia.bortal.model.IUser#getCurrentImage()
*/
@Override @Override
public UserImage getCurrentImage() { public UserImage getCurrentImage() {
return currentImage; return currentImage;
...@@ -564,11 +345,6 @@ public class User extends GenericEntity implements IUser { ...@@ -564,11 +345,6 @@ public class User extends GenericEntity implements IUser {
@Transient @Transient
private Boolean isAnon; private Boolean isAnon;
/*
* (non-Javadoc)
*
* @see fi.insomnia.bortal.model.IUser#isAnonymous()
*/
@Override @Override
public boolean isAnonymous() { public boolean isAnonymous() {
if (isAnon == null) { if (isAnon == null) {
......
...@@ -4,8 +4,11 @@ ...@@ -4,8 +4,11 @@
*/ */
package fi.insomnia.bortal.model; package fi.insomnia.bortal.model;
import static javax.persistence.FetchType.LAZY;
import java.util.Calendar; import java.util.Calendar;
import javax.persistence.Basic;
import javax.persistence.Column; import javax.persistence.Column;
import javax.persistence.Entity; import javax.persistence.Entity;
import javax.persistence.JoinColumn; import javax.persistence.JoinColumn;
...@@ -25,15 +28,6 @@ import org.eclipse.persistence.annotations.OptimisticLockingType; ...@@ -25,15 +28,6 @@ import org.eclipse.persistence.annotations.OptimisticLockingType;
@Entity @Entity
@Table(name = "user_images") @Table(name = "user_images")
@OptimisticLocking(type = OptimisticLockingType.CHANGED_COLUMNS) @OptimisticLocking(type = OptimisticLockingType.CHANGED_COLUMNS)
// @NamedQueries({
// @NamedQuery(name = "UserImage.findAll", query = "SELECT u FROM UserImage u"),
//
// @NamedQuery(name = "UserImage.findByName", query =
// "SELECT u FROM UserImage u WHERE u.name = :name"),
// @NamedQuery(name = "UserImage.findByDescription", query =
// "SELECT u FROM UserImage u WHERE u.description = :description"),
// @NamedQuery(name = "UserImage.findByMimeType", query =
// "SELECT u FROM UserImage u WHERE u.mimeType = :mimeType") })
public class UserImage extends GenericEntity { public class UserImage extends GenericEntity {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
...@@ -54,6 +48,7 @@ public class UserImage extends GenericEntity { ...@@ -54,6 +48,7 @@ public class UserImage extends GenericEntity {
@Lob @Lob
@Column(name = "image_data") @Column(name = "image_data")
@Basic(fetch = LAZY)
private byte[] imageData; private byte[] imageData;
@JoinColumn(name = "user_id", referencedColumnName = "id") @JoinColumn(name = "user_id", referencedColumnName = "id")
......
...@@ -5,7 +5,7 @@ import javax.annotation.Generated; ...@@ -5,7 +5,7 @@ import javax.annotation.Generated;
import javax.persistence.metamodel.SingularAttribute; import javax.persistence.metamodel.SingularAttribute;
import javax.persistence.metamodel.StaticMetamodel; import javax.persistence.metamodel.StaticMetamodel;
@Generated(value="Dali", date="2012-05-12T14:43:39.129+0300") @Generated(value="Dali", date="2012-08-22T04:39:06.347+0300")
@StaticMetamodel(UserImage.class) @StaticMetamodel(UserImage.class)
public class UserImage_ extends GenericEntity_ { public class UserImage_ extends GenericEntity_ {
public static volatile SingularAttribute<UserImage, Calendar> uploaded; public static volatile SingularAttribute<UserImage, Calendar> uploaded;
......
...@@ -3,6 +3,7 @@ package fi.insomnia.bortal.enums; ...@@ -3,6 +3,7 @@ package fi.insomnia.bortal.enums;
import fi.insomnia.bortal.enums.apps.BillPermission; import fi.insomnia.bortal.enums.apps.BillPermission;
import fi.insomnia.bortal.enums.apps.CompoPermission; import fi.insomnia.bortal.enums.apps.CompoPermission;
import fi.insomnia.bortal.enums.apps.ContentPermission; import fi.insomnia.bortal.enums.apps.ContentPermission;
import fi.insomnia.bortal.enums.apps.EventPermission;
import fi.insomnia.bortal.enums.apps.IAppPermission; import fi.insomnia.bortal.enums.apps.IAppPermission;
import fi.insomnia.bortal.enums.apps.MapPermission; import fi.insomnia.bortal.enums.apps.MapPermission;
import fi.insomnia.bortal.enums.apps.PollPermission; import fi.insomnia.bortal.enums.apps.PollPermission;
...@@ -21,6 +22,7 @@ public enum BortalApplication { ...@@ -21,6 +22,7 @@ public enum BortalApplication {
TERMINAL(TerminalPermission.class), TERMINAL(TerminalPermission.class),
SALESPOINT(SalespointPermission.class), SALESPOINT(SalespointPermission.class),
COMPO(CompoPermission.class), COMPO(CompoPermission.class),
EVENT(EventPermission.class),
; ;
......
package fi.insomnia.bortal.enums.apps; package fi.insomnia.bortal.enums.apps;
public enum SpecialPermission { public enum SpecialPermission {
SUPERADMIN, USER, ANONYMOUS, ORGANISATION_ADMIN; SUPERADMIN,
USER,
ANONYMOUS,
ORGANISATION_ADMIN,
VERKKOMAKSU_CHECKER
;
public static final String S_USER = "USER"; public static final String S_USER = "USER";
public static final String S_SUPERADMIN = "SUPERADMIN"; public static final String S_SUPERADMIN = "SUPERADMIN";
public static final String S_ANONYMOUS = "ANONYMOUS"; public static final String S_ANONYMOUS = "ANONYMOUS";
public static final String S_ORGANISATION_ADMIN = "ORGANISATION_ADMIN"; public static final String S_ORGANISATION_ADMIN = "ORGANISATION_ADMIN";
public static final String S_VERKKOMAKSU_CHECK = "VERKKOMAKSU_CHECKER";
} }
...@@ -9,7 +9,8 @@ ...@@ -9,7 +9,8 @@
</session-config> </session-config>
<context-param> <context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name> <param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Production</param-value> <!-- <param-value>Production</param-value> -->
<param-value>Development</param-value>
</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>
......
...@@ -9,6 +9,9 @@ ...@@ -9,6 +9,9 @@
<f:viewParam name="billid" value="#{billEditView.billid}" /> <f:viewParam name="billid" value="#{billEditView.billid}" />
<f:event type="preRenderView" listener="#{billEditView.initView}" /> <f:event type="preRenderView" listener="#{billEditView.initView}" />
</f:metadata> </f:metadata>
<ui:define name="title">
<h1>#{i18n['page.bill.edit.header']}</h1>
</ui:define>
<ui:define name="content"> <ui:define name="content">
<h:form id="billform"> <h:form id="billform">
......
...@@ -12,46 +12,61 @@ ...@@ -12,46 +12,61 @@
</f:metadata> </f:metadata>
<ui:define name="content"> <ui:define name="content">
<h:form id="orgform"> <h:form id="orgform">
<h:panelGrid columns="2"> <h:panelGrid columns="3">
<h:outputLabel value="#{i18n['eventorg.organisation']}:" /> <h:outputLabel for="id" value="#{i18n['eventorg.id']}:" />
<h:inputText value="#{eventorgView.eventorg.organisation}" /> <h:outputText id="id" value="#{eventorgView.eventorg.id}" />
<h:message for="id" />
<h:outputLabel value="#{i18n['eventorg.bundleCountry']}:" /> <h:outputLabel for="org" value="#{i18n['eventorg.organisation']}:" />
<h:inputText value="#{eventorgView.eventorg.bundleCountry}" /> <h:inputText size="50" id="org" value="#{eventorgView.eventorg.organisation}" />
<h:message for="org" />
<h:outputLabel value="#{i18n['eventorg.billAddress1']}:" /> <h:outputLabel for="bc" value="#{i18n['eventorg.bundleCountry']}:" />
<h:inputText value="#{eventorgView.eventorg.billAddress1}" /> <h:inputText size="50" id="bc" value="#{eventorgView.eventorg.bundleCountry}" />
<h:message for="bc" />
<h:outputLabel value="#{i18n['eventorg.billAddress2']}:" /> <h:outputLabel for="addr1" value="#{i18n['eventorg.billAddress1']}:" />
<h:inputText value="#{eventorgView.eventorg.billAddress2}" /> <h:inputText size="50" id="addr1" value="#{eventorgView.eventorg.billAddress1}" />
<h:message for="addr1" />
<h:outputLabel value="#{i18n['eventorg.billAddress3']}:" /> <h:outputLabel for="addr2" value="#{i18n['eventorg.billAddress2']}:" />
<h:inputText value="#{eventorgView.eventorg.billAddress3}" /> <h:inputText size="50" id="addr2" value="#{eventorgView.eventorg.billAddress2}" />
<h:message for="addr2" />
<h:outputLabel value="#{i18n['eventorg.billAddress4']}:" /> <h:outputLabel for="addr3" value="#{i18n['eventorg.billAddress3']}:" />
<h:inputText value="#{eventorgView.eventorg.billAddress4}" /> <h:inputText size="50" id="addr3" value="#{eventorgView.eventorg.billAddress3}" />
<h:message for="addr3" />
<h:outputLabel value="#{i18n['eventorg.bankNumber1']}:" /> <h:outputLabel for="addr4" value="#{i18n['eventorg.billAddress4']}:" />
<h:inputText value="#{eventorgView.eventorg.bankNumber1}" /> <h:inputText size="50" id="addr4" value="#{eventorgView.eventorg.billAddress4}" />
<h:message for="addr4" />
<h:outputLabel value="#{i18n['eventorg.bankNumber2']}:" /> <h:outputLabel for="bankname1" value="#{i18n['eventorg.bankName1']}:" />
<h:inputText value="#{eventorgView.eventorg.bankNumber2}" /> <h:inputText size="50" id="bankname1" value="#{eventorgView.eventorg.bankName1}" />
<h:message for="bankname1" />
<h:outputLabel value="#{i18n['eventorg.bankName1']}:" /> <h:outputLabel for="bank1" value="#{i18n['eventorg.bankNumber1']}:" />
<h:inputText value="#{eventorgView.eventorg.bankName1}" /> <h:inputText size="50" id="bank1" value="#{eventorgView.eventorg.bankNumber1}" />
<h:message for="bank1" />
<h:outputLabel for="bankname2" value="#{i18n['eventorg.bankName2']}:" />
<h:inputText size="50" id="bankname2" value="#{eventorgView.eventorg.bankName2}" />
<h:message for="bankname2" />
<h:outputLabel for="bank2" value="#{i18n['eventorg.bankNumber2']}:" />
<h:inputText size="50" id="bank2" value="#{eventorgView.eventorg.bankNumber2}" />
<h:message for="bank2" />
<h:outputLabel value="#{i18n['eventorg.bankName2']}:" />
<h:inputText value="#{eventorgView.eventorg.bankName2}" />
<h:commandButton id="commitbtn" action="#{eventorgView.saveEvent()}" value="#{i18n['eventorg.save']}" />
</h:panelGrid> </h:panelGrid>
<h:commandButton id="commitbtn" action="#{eventorgView.saveEventorg()}" value="#{i18n['eventorg.save']}" />
</h:form> </h:form>
<h2>#{i18n['eventorg.createevent']}</h2> <h2>#{i18n['eventorg.createevent']}</h2>
<h:form id="createevent"> <h:form id="createevent">
<h:outputLabel for="createEventName" value="#{i18n['event.name']}" /> <h:outputLabel for="createEventName" value="#{i18n['event.name']}" />
<h:inputText id="createEventName" value="#{eventorgView.eventname}" /> <h:inputText size="50" id="createEventName" value="#{eventorgView.eventname}" />
<h:commandButton action="#{eventorgView.createEvent()}" value="#{i18n['eventorg.createEvent']}" /> <h:commandButton action="#{eventorgView.createEvent()}" value="#{i18n['eventorg.createEvent']}" />
</h:form> </h:form>
......
<!DOCTYPE html <!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:p="http://primefaces.org/ui"
xmlns:p="http://primefaces.org/ui" xmlns:users="http://java.sun.com/jsf/composite/tools/user" xmlns:c="http://java.sun.com/jsp/jstl/core"> xmlns:users="http://java.sun.com/jsf/composite/tools/user" xmlns:c="http://java.sun.com/jsp/jstl/core">
<h:body> <h:body>
<ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml"> <ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml">
<f:metadata> <f:metadata>
...@@ -11,33 +11,43 @@ ...@@ -11,33 +11,43 @@
</f:metadata> </f:metadata>
<ui:define name="content"> <ui:define name="content">
<h:form id="orgform"> <h:form id="orgform">
<h:panelGrid columns="2"> <h:panelGrid columns="3">
<h:outputLabel value="#{i18n['event.name']}:" /> <h:outputLabel for="id" value="#{i18n['event.id']}:" />
<h:inputText value="#{eventorgView.event.name}" /> <h:inputText id="id" value="#{eventorgView.event.name}" />
<h:message for="id" />
<h:outputLabel for="name" value="#{i18n['event.name']}:" />
<h:inputText id="name" value="#{eventorgView.event.name}" />
<h:message for="name" />
<h:outputLabel value="#{i18n['event.referenceNumberBase']}:" /> <h:outputLabel for="refbase" value="#{i18n['event.referenceNumberBase']}:" />
<h:inputText value="#{eventorgView.event.referenceNumberBase}" /> <h:inputText id="refbase" value="#{eventorgView.event.referenceNumberBase}" />
<h:message for="refbase" />
<h:outputLabel value="#{i18n['event.nextBillNumber']}:" /> <h:outputLabel for="nextbillnr" value="#{i18n['event.nextBillNumber']}:" />
<h:inputText value="#{eventorgView.event.nextBillNumber}" /> <h:inputText id="nextbillnr" value="#{eventorgView.event.nextBillNumber}" />
<h:message for="nextbillnr" />
<h:outputLabel value="#{i18n['event.startTime']}:" /> <h:outputLabel for="starttime" value="#{i18n['event.startTime']}:" />
<h:inputText value="#{eventorgView.event.startTime}"> <h:inputText id="starttime" value="#{eventorgView.event.startTime}">
<f:convertDateTime pattern="#{sessionHandler.datetimeFormat}" timeZone="#{sessionHandler.timezone}" /> <f:convertDateTime pattern="#{sessionHandler.datetimeFormat}" timeZone="#{sessionHandler.timezone}" />
</h:inputText> </h:inputText>
<h:message for="starttime" />
<h:outputLabel value="#{i18n['event.endTime']}:" /> <h:outputLabel for="endTime" value="#{i18n['event.endTime']}:" />
<h:inputText value="#{eventorgView.event.endTime}"> <h:inputText id="endTime" value="#{eventorgView.event.endTime}">
<f:convertDateTime pattern="#{sessionHandler.datetimeFormat}" timeZone="#{sessionHandler.timezone}" /> <f:convertDateTime pattern="#{sessionHandler.datetimeFormat}" timeZone="#{sessionHandler.timezone}" />
</h:inputText> </h:inputText>
<h:outputLabel value="#{i18n['event.defaultRole']}:" /> <h:message for="endTime" />
<h:selectOneMenu converter="#{roleConverter}" value="#{eventorgView.event.defaultRole}"> <h:outputLabel for="defaultrole" value="#{i18n['event.defaultRole']}:" />
<h:selectOneMenu id="defaultrole" converter="#{roleConverter}" value="#{eventorgView.event.defaultRole}">
<f:selectItems var="role" itemLabel="#{role.name}" value="#{eventorgView.event.roles}" /> <f:selectItems var="role" itemLabel="#{role.name}" value="#{eventorgView.event.roles}" />
</h:selectOneMenu> </h:selectOneMenu>
<h:message for="defaultrole" />
<h:commandButton id="commitbtn" action="#{eventorgView.saveEvent()}" value="#{i18n['event.save']}" />
</h:panelGrid> </h:panelGrid>
<h:commandButton id="commitbtn" action="#{eventorgView.saveEvent()}" value="#{i18n['event.save']}" />
</h:form> </h:form>
...@@ -66,27 +76,26 @@ ...@@ -66,27 +76,26 @@
</h:column> </h:column>
<h:column> <h:column>
<f:facet name="header">#{i18n['lanEventProperty.value']}</f:facet> <f:facet name="header">#{i18n['lanEventProperty.value']}</f:facet>
<h:outputText rendered="#{prop.key.text}" value="#{prop.textvalue}"/> <h:outputText rendered="#{prop.key.text}" value="#{prop.textvalue}" />
<h:outputText rendered="#{prop.key.date}" value="#{prop.dateValue}"> <h:outputText rendered="#{prop.key.date}" value="#{prop.dateValue}">
<f:convertDateTime pattern="#{sessionHandler.datetimeFormat}" timeZone="#{sessionHandler.timezone}" /> <f:convertDateTime pattern="#{sessionHandler.datetimeFormat}" timeZone="#{sessionHandler.timezone}" />
</h:outputText> </h:outputText>
<h:outputText rendered="#{prop.key.data}" value="#{i18n['lanEventProperty.valueIsRawdataWarning']}"/> <h:outputText rendered="#{prop.key.data}" value="#{i18n['lanEventProperty.valueIsRawdataWarning']}" />
</h:column> </h:column>
<h:column> <h:column>
<h:commandButton action="#{eventPropertyView.editProperty}" value="#{i18n['lanEventProperty.editProperty']}" > <h:commandButton action="#{eventPropertyView.editProperty}" value="#{i18n['lanEventProperty.editProperty']}">
<!-- <f:ajax render="@all" execute="@form"/> --> <!-- <f:ajax render="@all" execute="@form"/> -->
</h:commandButton> </h:commandButton>
</h:column> </h:column>
</h:dataTable> </h:dataTable>
</h:form> </h:form>
<h:form>
<h:form >
<h:selectOneMenu id="propval" value="#{eventPropertyView.createKey}"> <h:selectOneMenu id="propval" value="#{eventPropertyView.createKey}">
<f:selectItems value="#{eventPropertyView.availablePropertyKeys}" /> <f:selectItems value="#{eventPropertyView.availablePropertyKeys}" />
</h:selectOneMenu> </h:selectOneMenu>
<h:commandButton action="#{eventPropertyView.initPropertyKeyCreate}" value="#{i18n['lanEventProperty.createProperty']}" > <h:commandButton action="#{eventPropertyView.initPropertyKeyCreate}" value="#{i18n['lanEventProperty.createProperty']}">
<!-- <f:ajax render="@all" execute="@form" /> --> <!-- <f:ajax render="@all" execute="@form" /> -->
</h:commandButton> </h:commandButton>
<h:message for="propval" /> <h:message for="propval" />
...@@ -94,12 +103,12 @@ ...@@ -94,12 +103,12 @@
<h:form rendered="#{!empty eventPropertyView.property}"> <h:form rendered="#{!empty eventPropertyView.property}">
<h:panelGrid columns="3"> <h:panelGrid columns="3">
<h:outputLabel for="key" value="#{i18n['lanEventProperty.key']}"/> <h:outputLabel for="key" value="#{i18n['lanEventProperty.key']}" />
<h:outputText value="#{eventPropertyView.property.key}" id="key"/> <h:outputText value="#{eventPropertyView.property.key}" id="key" />
<h:message for="key"/> <h:message for="key" />
<h:outputLabel for="defaultval" value="#{i18n['lanEventProperty.defaultValue']}" /> <h:outputLabel for="defaultval" value="#{i18n['lanEventProperty.defaultValue']}" />
<h:outputText id="defaultval" value="#{eventPropertyView.property.key.defaultvalue}"/> <h:outputText id="defaultval" value="#{eventPropertyView.property.key.defaultvalue}" />
<h:message for="defaultval" /> <h:message for="defaultval" />
<h:outputLabel rendered="#{eventPropertyView.property.key.text}" for="textval" value="#{i18n['lanEventProperty.textValue']}" /> <h:outputLabel rendered="#{eventPropertyView.property.key.text}" for="textval" value="#{i18n['lanEventProperty.textValue']}" />
...@@ -115,6 +124,69 @@ ...@@ -115,6 +124,69 @@
</h:form> </h:form>
<ui:fragment rendered="#{eventPropertyView.privatePropertyPermission}">
<h2>Private Properties</h2>
<h:form>
<h:dataTable var="prop" value="#{eventPropertyView.privateProperties}">
<h:column>
<f:facet name="header">#{i18n['lanEventPrivateProperty.key']}</f:facet>
<h:outputText value="#{prop.key}" />
</h:column>
<h:column>
<f:facet name="header">#{i18n['lanEventPrivateProperty.value']}</f:facet>
<h:outputText rendered="#{prop.key.text}" value="#{prop.textvalue}" />
<h:outputText rendered="#{prop.key.date}" value="#{prop.dateValue}">
<f:convertDateTime pattern="#{sessionHandler.datetimeFormat}" timeZone="#{sessionHandler.timezone}" />
</h:outputText>
<h:outputText rendered="#{prop.key.data}" value="#{i18n['lanEventPrivateProperty.valueIsRawdataWarning']}" />
</h:column>
<h:column>
<h:commandButton action="#{eventPropertyView.editPrivateProperty}" value="#{i18n['lanEventPrivateProperty.editProperty']}">
<!-- <f:ajax render="@all" execute="@form"/> -->
</h:commandButton>
</h:column>
</h:dataTable>
</h:form>
<h:form>
<h:selectOneMenu id="propval" value="#{eventPropertyView.createPrivateKey}">
<f:selectItems value="#{eventPropertyView.availablePrivatePropertyKeys}" />
</h:selectOneMenu>
<h:commandButton action="#{eventPropertyView.initPrivatePropertyKeyCreate}" value="#{i18n['lanEventPrivateProperty.createProperty']}">
<!-- <f:ajax render="@all" execute="@form" /> -->
</h:commandButton>
<h:message for="propval" />
</h:form>
<h:form rendered="#{!empty eventPropertyView.privateProperty}">
<h:panelGrid columns="3">
<h:outputLabel for="key" value="#{i18n['lanEventPrivateProperty.key']}" />
<h:outputText value="#{eventPropertyView.privateProperty.key}" id="key" />
<h:message for="key" />
<h:outputLabel for="defaultval" value="#{i18n['lanEventPrivateProperty.defaultValue']}" />
<h:outputText id="defaultval" value="#{eventPropertyView.privateProperty.key.defaultvalue}" />
<h:message for="defaultval" />
<h:outputLabel rendered="#{eventPropertyView.privateProperty.key.text}" for="textval" value="#{i18n['lanEventPrivateProperty.textValue']}" />
<h:inputText rendered="#{eventPropertyView.privateProperty.key.text}" id="textval" value="#{eventPropertyView.privateProperty.textvalue}" />
<h:message rendered="#{eventPropertyView.privateProperty.key.text}" for="textval" />
<h:outputLabel rendered="#{eventPropertyView.privateProperty.key.date}" for="textval" value="#{i18n['lanEventPrivateProperty.textValue']}" />
<p:calendar rendered="#{eventPropertyView.privateProperty.key.date}" value="#{eventPropertyView.privateProperty.dateValue}" pattern="#{sessionHandler.datetimeFormat}" />
<h:message rendered="#{eventPropertyView.privateProperty.key.date}" for="textval" />
</h:panelGrid>
<h:commandButton action="#{eventPropertyView.savePrivateProperty}" value="#{i18n['lanEventPrivateProperty.save']}" />
</h:form>
</ui:fragment>
</ui:define> </ui:define>
</ui:composition> </ui:composition>
</h:body> </h:body>
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
<h:body> <h:body>
<ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml"> <ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml">
<f:metadata> <f:metadata>
<f:event type="preRenderView" listener="#{pageOutputView.initView('index')}" /> <f:event type="preRenderView" listener="#{pageOutputView.initIndexView}" />
</f:metadata> </f:metadata>
<ui:define name="content"> <ui:define name="content">
<h:outputLabel rendered="#{sessionHandler.isInDevelopmentMode()}"> <h:outputLabel rendered="#{sessionHandler.isInDevelopmentMode()}">
......
<!DOCTYPE html <!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" <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:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:map="http://java.sun.com/jsf/composite/cditools/map" xmlns:tools="http://java.sun.com/jsf/composite/cditools" xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:p="http://primefaces.org/ui">
xmlns:map="http://java.sun.com/jsf/composite/cditools/map" xmlns:tools="http://java.sun.com/jsf/composite/cditools"
xmlns:c="http://java.sun.com/jsp/jstl/core"
>
<h:body> <h:body>
<ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml"> <ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml">
<f:metadata> <f:metadata>
...@@ -18,14 +15,19 @@ ...@@ -18,14 +15,19 @@
<map:setBuyable /> <map:setBuyable />
<img width="600" src="#{request.contextPath}/PlaceMap?mapid=#{mapView.activeMap.id}" alt="placeimage" /> <h:form>
<h:commandButton styleClass="imgcenter" id="commandbutton" image="/PlaceMap?mapid=#{mapView.activeMap.id}" actionListener="#{mapManageView.mapClick}" />
</h:form>
<map:genplaces /> <map:genplaces />
<map:submitBg />
<!-- <map:listPlaces /> <h:form>
--> <h:commandButton action="#{mapManageView.removeAllPlaces}" value="#{i18n['mapEdit.removePlaces']}" onclick="return confirm('Are you sure you want to REMOVE ALL PLACES!\nThis action is final')" />
</h:form>
<h:form enctype="multipart/form-data">
<p:fileUpload mode="simple" value="#{mapManageView.bgFile}" />
<h:commandButton action="#{mapManageView.submitBg}" value="#{i18n['map.submitMap']}" />
</h:form>
</ui:define> </ui:define>
</ui:composition> </ui:composition>
</h:body> </h:body>
......
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
</f:facet> </f:facet>
<h:outputText value="#{page.name}" /> <h:outputText value="#{page.name}" />
</h:column> </h:column>
<h:column> <h:column >
<f:facet name="header"> <f:facet name="header">
<h:outputText value="#{i18n['sitepage.roles']}" /> <h:outputText value="#{i18n['sitepage.roles']}" />
</f:facet> </f:facet>
......
<!DOCTYPE html <!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" <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:c="http://java.sun.com/jsp/jstl/core"
xmlns:h="http://java.sun.com/jsf/html" xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:users="http://java.sun.com/jsf/composite/cditools/user" xmlns:f="http://java.sun.com/jsf/core">
xmlns:users="http://java.sun.com/jsf/composite/cditools/user" xmlns:f="http://java.sun.com/jsf/core"
>
<h:body> <h:body>
<ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml"> <ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml">
<ui:param name="thispage" value="page.place.mygroups" /> <ui:param name="thispage" value="page.place.mygroups" />
...@@ -46,28 +44,28 @@ ...@@ -46,28 +44,28 @@
</h:column> </h:column>
<h:column> <h:column>
<f:facet name="header"> <f:facet name="header">
<h:outputText value="#{i18n['placegroupview.reservationProduct']}" />
</f:facet>
<h:outputText value="#{member.placeReservation.product.name}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{i18n['placegroupview.token']}" /> <h:outputText value="#{i18n['placegroupview.token']}" />
</f:facet> </f:facet>
<h:outputText rendered="#{empty member.user}" value="#{member.inviteToken}" /> <h:outputText rendered="#{empty member.user}" value="#{member.inviteToken}" />
<h:outputText rendered="#{!empty member.user}" <h:outputText rendered="#{!empty member.user}" value="#{member.user.firstnames} #{member.user.lastname} (#{member.user.nick})" />
value="#{member.user.firstnames} #{member.user.lastname} (#{member.user.nick})"
/>
</h:column> </h:column>
<h:column> <h:column>
<f:facet name="header"> <f:facet name="header">
<h:outputText value="#{i18n['placegroupview.groupCreator']}" /> <h:outputText value="#{i18n['placegroupview.groupCreator']}" />
</f:facet> </f:facet>
<h:outputText <h:outputText value="#{member.placeGroup.creator.firstnames} #{member.placeGroup.creator.lastname} (#{member.placeGroup.creator.nick})" />
value="#{member.placeGroup.creator.firstnames} #{member.placeGroup.creator.lastname} (#{member.placeGroup.creator.nick})"
/>
</h:column> </h:column>
<h:column> <h:column>
<h:commandButton rendered="#{placeGroupView.canModify(member) and !empty member.user}" <h:commandButton rendered="#{placeGroupView.canModify(member) and !empty member.user}" action="#{placeGroupView.releasePlace()}" value="#{i18n['placegroupview.releasePlace']}" />
action="#{placeGroupView.releasePlace()}" value="#{i18n['placegroupview.releasePlace']}"
/>
</h:column> </h:column>
</h:dataTable> </h:dataTable>
......
...@@ -54,7 +54,11 @@ ...@@ -54,7 +54,11 @@
<h:column> <h:column>
<a href="#{request.contextPath}/PrintBill?billid=#{bill.id}" target="_blank">#{i18n['bill.printBill']}</a> <a href="#{request.contextPath}/PrintBill?billid=#{bill.id}" target="_blank">#{i18n['bill.printBill']}</a>
</h:column> </h:column>
<h:column>
<h:link outcome="/bill/showBill" value="#{i18n['bill.show']}">
<f:param name="billid" value="#{bill.id}" />
</h:link>
</h:column>
<h:column rendered="#{billListView.canWriteBill()}"> <h:column rendered="#{billListView.canWriteBill()}">
<h:link outcome="/bill/edit" value="#{i18n['bill.edit']}"> <h:link outcome="/bill/edit" value="#{i18n['bill.edit']}">
<f:param name="billid" value="#{bill.id}" /> <f:param name="billid" value="#{bill.id}" />
......
...@@ -10,24 +10,18 @@ ...@@ -10,24 +10,18 @@
</composite:interface> </composite:interface>
<composite:implementation> <composite:implementation>
<h:panelGrid columns="2"> <h:panelGrid columns="2" columnClasses="topalign,topalign">
<h:panelGrid columns="2" columnClasses="topalign,topalign">
<h:outputLabel for="billnr" value="#{i18n['bill.billNumber']}:" /> <h:outputLabel for="billnr" value="#{i18n['bill.billNumber']}:" />
<h:outputText id="billnr" value="#{cc.attrs.bill.billNumber}" /> <h:outputText id="billnr" value="#{cc.attrs.bill.billNumber}" />
<h:outputLabel for="addr1" value="#{i18n['bill.addr1']}:" /> <h:outputLabel for="refnr" value="#{i18n['bill.referencenumber']}" />
<h:outputText id="addr1" value="#{cc.attrs.bill.addr1}" /> <h:outputText id="refnr" value="#{cc.attrs.bill.referenceNumber}" />
<h:outputLabel for="addr2" value="#{i18n['bill.addr2']}:" />
<h:outputText id="addr2" value="#{cc.attrs.bill.addr2}" />
<h:outputLabel for="addr3" value="#{i18n['bill.addr3']}:" />
<h:outputText id="addr3" value="#{cc.attrs.bill.addr3}" />
<h:outputLabel for="addr4" value="#{i18n['bill.addr4']}:" /> <h:outputLabel for="billAmount" value="#{i18n['bill.billAmount']}" />
<h:outputText id="addr4" value="#{cc.attrs.bill.addr4}" /> <h:outputText id="billAmount" value="#{cc.attrs.bill.totalPrice()}">
<f:convertNumber maxFractionDigits="2" minFractionDigits="2" />
<h:outputLabel for="addr5" value="#{i18n['bill.addr5']}:" /> </h:outputText>
<h:outputText id="addr5" value="#{cc.attrs.bill.addr5}" />
<h:outputLabel for="sentDate" value="#{i18n['bill.sentDate']}:" /> <h:outputLabel for="sentDate" value="#{i18n['bill.sentDate']}:" />
<h:outputText id="sentDate" value="#{cc.attrs.bill.sentDateTime}"> <h:outputText id="sentDate" value="#{cc.attrs.bill.sentDateTime}">
...@@ -35,25 +29,48 @@ ...@@ -35,25 +29,48 @@
</h:outputText> </h:outputText>
<h:outputLabel for="paymenttime" value="#{i18n['bill.paymentTime']}:" /> <h:outputLabel for="paymenttime" value="#{i18n['bill.paymentTime']}:" />
<h:outputText id="paymenttime" value="#{cc.attrs.bill.paymentTime}" /> <h:outputText id="paymenttime" value="#{cc.attrs.bill.paymentTime eq 0 ? i18n['bill.paymentTime.now'] : cc.attrs.bill.paymentTime}" />
<h:outputLabel for="noticetime" value="#{i18n['bill.noticetime']}:" /> <h:outputLabel for="noticetime" value="#{i18n['bill.noticetime']}:" />
<h:outputText id="noticetime" value="#{cc.attrs.bill.noticetime}" /> <h:outputText id="noticetime" value="#{cc.attrs.bill.noticetime}" />
<h:outputLabel for="theirRef" value="#{i18n['bill.theirReference']}:" /> </h:panelGrid>
<h:outputText id="theirRef" value="#{cc.attrs.bill.theirReference}" /> <h:panelGrid columns="2" columnClasses="topalign,topalign">
<h:outputLabel for="address" value="#{i18n['bill.address']}:" />
<h:outputLabel for="ourRef" value="#{i18n['bill.ourReference']}:" /> <h:panelGroup id="address">
<h:outputText id="ourRef" value="#{cc.attrs.bill.ourReference}" /> <h:outputText id="addr1" value="#{cc.attrs.bill.addr1}" />
<h:outputText rendered="#{!empty cc.attrs.bill.addr2}" value="&lt;br />" escape="false" />
<h:outputText id="addr2" value="#{cc.attrs.bill.addr2}" />
<h:outputText rendered="#{!empty cc.attrs.bill.addr3}" value="&lt;br />" escape="false" />
<h:outputText id="addr3" value="#{cc.attrs.bill.addr3}" />
<h:outputText rendered="#{!empty cc.attrs.bill.addr4}" value="&lt;br />" escape="false" />
<h:outputText id="addr4" value="#{cc.attrs.bill.addr4}" />
<h:outputText rendered="#{!empty cc.attrs.bill.addr5}" value="&lt;br />" escape="false" />
<h:outputText id="addr5" value="#{cc.attrs.bill.addr5}" />
</h:panelGroup>
<h:outputLabel for="receiver" value="#{i18n['bill.receiverAddress']}:" />
<h:panelGroup id="receiver">
<h:outputText id="recAddr1" value="#{cc.attrs.bill.event.organiser.billAddress1}" />
<h:outputText rendered="#{!empty cc.attrs.bill.event.organiser.billAddress2}" value="&lt;br />" escape="false" />
<h:outputText id="recAddr2" value="#{cc.attrs.bill.event.organiser.billAddress2}" />
<h:outputText rendered="#{!empty cc.attrs.bill.event.organiser.billAddress3}" value="&lt;br />" escape="false" />
<h:outputText id="recAddr3" value="#{cc.attrs.bill.event.organiser.billAddress3}" />
<h:outputText rendered="#{!empty cc.attrs.bill.event.organiser.billAddress4}" value="&lt;br />" escape="false" />
<h:outputText id="recAddr4" value="#{cc.attrs.bill.event.organiser.billAddress4}" />
</h:panelGroup>
<h:outputLabel rendered="#{!empty cc.attrs.bill.event.organiser.bankName1}" for="bankname1" value="#{i18n['eventorg.bankName1']}" />
<h:outputText rendered="#{!empty cc.attrs.bill.event.organiser.bankName1}" id="bankname1" value="#{cc.attrs.bill.event.organiser.bankName1}" />
<h:outputLabel rendered="#{!empty cc.attrs.bill.event.organiser.bankNumber1}" for="banknumber1" value="#{i18n['eventorg.bankNumber1']}" />
<h:outputText rendered="#{!empty cc.attrs.bill.event.organiser.bankNumber1}" id="banknumber1" value="#{cc.attrs.bill.event.organiser.bankNumber1}" />
<h:outputLabel rendered="#{!empty cc.attrs.bill.event.organiser.bankName2}" for="bankname2" value="#{i18n['eventorg.bankName2']}" />
<h:outputText rendered="#{!empty cc.attrs.bill.event.organiser.bankName2}" id="bankname2" value="#{cc.attrs.bill.event.organiser.bankName2}" />
<h:outputLabel rendered="#{!empty cc.attrs.bill.event.organiser.bankNumber2}" for="banknumber2" value="#{i18n['eventorg.bankNumber2']}" />
<h:outputText rendered="#{!empty cc.attrs.bill.event.organiser.bankNumber2}" id="banknumber2" value="#{cc.attrs.bill.event.organiser.bankNumber2}" />
<h:outputLabel for="delivTerm" value="#{i18n['bill.deliveryTerms']}:" />
<h:outputText id="delivTerm" value="#{cc.attrs.bill.deliveryTerms}" />
<h:outputLabel for="notes" value="#{i18n['bill.notes']}:" />
<h:outputText id="notes" value="#{cc.attrs.bill.notes}" />
</h:panelGrid> </h:panelGrid>
</h:panelGrid>
</composite:implementation> </composite:implementation>
</html> </html>
...@@ -17,34 +17,25 @@ ...@@ -17,34 +17,25 @@
action="#{placeView.buySelectedPlaces()}" action="#{placeView.buySelectedPlaces()}"
/> />
<div>
<h:commandButton styleClass="imgcenter" id="commandbutton" image="/PlaceMap?mapid=#{mapView.activeMap.id}" <h:commandButton styleClass="imgcenter" id="commandbutton" image="/PlaceMap?mapid=#{mapView.activeMap.id}"
actionListener="#{placeView.placeSelectActionListener}" actionListener="#{placeView.placeSelectActionListener}"
/> >
</h:commandButton>
</div>
<h:panelGrid styleClass="placeSelectInfotable" columns="3"> <h:panelGrid styleClass="placeSelectInfotable" columns="3">
<h:panelGrid columns="2"> <h:panelGrid columns="2">
<div <div style="border-color: black; border-style: solid; border-width: 1px; background-color: grey; width: 10px; height: 10px;" >&nbsp;</div>
style="border-color: black; border-style: solid; border-width: 1px; background-color: grey; width: 10px; height: 10px;"
>&nbsp;</div>
<h:outputText value="#{i18n['placeSelect.legend.grey']}" /> <h:outputText value="#{i18n['placeSelect.legend.grey']}" />
<div <div style="border-color: black; border-style: solid; border-width: 1px; background-color: white; width: 10px; height: 10px;">&nbsp;</div>
style="border-color: black; border-style: solid; border-width: 1px; background-color: white; width: 10px; height: 10px;"
>&nbsp;</div>
<h:outputText value="#{i18n['placeSelect.legend.white']}" /> <h:outputText value="#{i18n['placeSelect.legend.white']}" />
<div <div style="border-color: black; border-style: solid; border-width: 1px; background-color: red; width: 10px; height: 10px;">&nbsp;</div>
style="border-color: black; border-style: solid; border-width: 1px; background-color: red; width: 10px; height: 10px;"
>&nbsp;</div>
<h:outputText value="#{i18n['placeSelect.legend.red']}" /> <h:outputText value="#{i18n['placeSelect.legend.red']}" />
<div <div style="border-color: black; border-style: solid; border-width: 1px; background-color: green; width: 10px; height: 10px;" >&nbsp;</div>
style="border-color: black; border-style: solid; border-width: 1px; background-color: green; width: 10px; height: 10px;"
>&nbsp;</div>
<h:outputText value="#{i18n['placeSelect.legend.green']}" /> <h:outputText value="#{i18n['placeSelect.legend.green']}" />
<div <div style="border-color: black; border-style: solid; border-width: 1px; background-color: blue; width: 10px; height: 10px;">&nbsp;</div>
style="border-color: black; border-style: solid; border-width: 1px; background-color: blue; width: 10px; height: 10px;"
>&nbsp;</div>
<h:outputText value="#{i18n['placeSelect.legend.blue']}" /> <h:outputText value="#{i18n['placeSelect.legend.blue']}" />
</h:panelGrid> </h:panelGrid>
......
...@@ -21,11 +21,11 @@ ...@@ -21,11 +21,11 @@
<h:message for="name" /> <h:message for="name" />
<h:outputLabel for="roles" value="#{i18n['sitepage.roles']}" /> <h:outputLabel rendered="#{roleDataView.roleReadPermission}" for="roles" value="#{i18n['sitepage.roles']}" />
<h:selectManyCheckbox converter="#{roleConverter}" layout="pageDirection" id="roles" value="#{sitePageView.sitepage.allowedRoles}"> <h:selectManyCheckbox rendered="#{roleDataView.roleReadPermission}" converter="#{roleConverter}" layout="pageDirection" id="roles" value="#{sitePageView.sitepage.allowedRoles}">
<f:selectItems var="par" itemLabel="#{par.name}" value="#{roleDataView.roles}" /> <f:selectItems var="par" itemLabel="#{par.name}" value="#{roleDataView.roles}" />
</h:selectManyCheckbox> </h:selectManyCheckbox>
<h:message for="roles" /> <h:message rendered="#{roleDataView.roleReadPermission}" for="roles" />
</h:panelGrid> </h:panelGrid>
<div> <div>
......
<?xml version='1.0' encoding='UTF-8' ?> <?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> "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" <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:composite="http://java.sun.com/jsf/composite" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:c="http://java.sun.com/jsp/jstl/core">
xmlns:c="http://java.sun.com/jsp/jstl/core"
>
<composite:interface> <composite:interface>
...@@ -44,21 +42,9 @@ ...@@ -44,21 +42,9 @@
<h:inputText id="color" value="#{productView.product.color}" /> <h:inputText id="color" value="#{productView.product.color}" />
<h:message for="color" /> <h:message for="color" />
<h:outputLabel for="prepaid" value="#{i18n['product.prepaid']}" />
<h:selectBooleanCheckbox id="prepaid" value="#{productView.product.prepaid}" />
<h:message for="prepaid" />
<h:outputLabel for="instant" value="#{i18n['product.prepaidInstant']}" />
<h:selectBooleanCheckbox id="instant" value="#{productView.product.prepaidInstant}" />
<h:message for="instant" />
<h:outputLabel for="provides" value="#{i18n['product.providedRole']}" /> <h:outputLabel for="provides" value="#{i18n['product.providedRole']}" />
<h:selectOneMenu id="provides" layout="pageDirection" value="#{productView.product.provides}" <h:selectOneMenu id="provides" layout="pageDirection" value="#{productView.product.provides}" converter="#{roleConverter}">
converter="#{roleConverter}" <f:selectItems var="role" itemLabel="#{role.name}" value="#{roleDataView.rolesWithEmpty}" noSelectionValue="#{roleDataView.noSelection}" />
>
<f:selectItems var="role" itemLabel="#{role.name}" value="#{roleDataView.rolesWithEmpty}"
noSelectionValue="#{roleDataView.noSelection}"
/>
</h:selectOneMenu> </h:selectOneMenu>
<h:message for="provides" /> <h:message for="provides" />
......
...@@ -27,46 +27,46 @@ ...@@ -27,46 +27,46 @@
<h:message rendered="#{!cc.attrs.creating}" for="viewlogin" /> <h:message rendered="#{!cc.attrs.creating}" for="viewlogin" />
<h:outputLabel rendered="#{cc.attrs.creating}" value="#{i18n['user.login']}:" for="login" /> <h:outputLabel rendered="#{cc.attrs.creating}" value="#{i18n['user.login']}:" for="login" />
<h:inputText rendered="#{cc.attrs.creating}" validator="#{userValidator.login}" <h:inputText size="45" rendered="#{cc.attrs.creating}" validator="#{userValidator.login}"
disabled="#{!cc.attrs.creating and !userView.canSave()}" id="login" value="#{userView.selectedUser.login}" disabled="#{!cc.attrs.creating and !userView.canSave()}" id="login" value="#{userView.selectedUser.login}"
/> />
<h:message rendered="#{cc.attrs.creating}" for="login" /> <h:message rendered="#{cc.attrs.creating}" for="login" />
<h:outputLabel value="#{i18n['user.nick']}:" for="nick" /> <h:outputLabel value="#{i18n['user.nick']}:" for="nick" />
<h:inputText id="nick" disabled="#{!cc.attrs.creating and !userView.canSave()}" value="#{userView.selectedUser.nick}" /> <h:inputText size="45" id="nick" disabled="#{!cc.attrs.creating and !userView.canSave()}" value="#{userView.selectedUser.nick}" />
<h:message for="nick" /> <h:message for="nick" />
<h:outputLabel value="#{i18n['user.email']}:" for="email" /> <h:outputLabel value="#{i18n['user.email']}:" for="email" />
<h:inputText id="email" disabled="#{!cc.attrs.creating and !userView.canSave()}" <h:inputText validator="#{userValidator.validateEmail}" size="45" id="email" disabled="#{!cc.attrs.creating and !userView.canSave()}"
value="#{userView.selectedUser.email}" value="#{userView.selectedUser.email}"
/> />
<h:message for="email" /> <h:message for="email" />
<h:outputLabel value="#{i18n['user.firstNames']}:" for="firstnames" /> <h:outputLabel value="#{i18n['user.firstNames']}:" for="firstnames" />
<h:inputText id="firstnames" disabled="#{!cc.attrs.creating and !userView.canSave()}" <h:inputText size="45" id="firstnames" disabled="#{!cc.attrs.creating and !userView.canSave()}"
value="#{userView.selectedUser.firstnames}" value="#{userView.selectedUser.firstnames}"
/> />
<h:message for="firstnames" /> <h:message for="firstnames" />
<h:outputLabel value="#{i18n['user.lastName']}:" for="lastname" /> <h:outputLabel value="#{i18n['user.lastName']}:" for="lastname" />
<h:inputText id="lastname" disabled="#{!cc.attrs.creating and !userView.canSave()}" <h:inputText size="45" id="lastname" disabled="#{!cc.attrs.creating and !userView.canSave()}"
value="#{userView.selectedUser.lastname}" value="#{userView.selectedUser.lastname}"
/> />
<h:message for="lastname" /> <h:message for="lastname" />
<h:outputLabel value="#{i18n['user.address']}:" for="address" /> <h:outputLabel value="#{i18n['user.address']}:" for="address" />
<h:inputText id="address" disabled="#{!cc.attrs.creating and !userView.canSave()}" <h:inputText size="45" id="address" disabled="#{!cc.attrs.creating and !userView.canSave()}"
value="#{userView.selectedUser.address}" value="#{userView.selectedUser.address}"
/> />
<h:message for="address" /> <h:message for="address" />
<h:outputLabel value="#{i18n['user.zipCode']}:" for="zip" /> <h:outputLabel value="#{i18n['user.zipCode']}:" for="zip" />
<h:inputText id="zip" disabled="#{!cc.attrs.creating and !userView.canSave()}" value="#{userView.selectedUser.zip}" /> <h:inputText size="45" id="zip" disabled="#{!cc.attrs.creating and !userView.canSave()}" value="#{userView.selectedUser.zip}" />
<h:message for="zip" /> <h:message for="zip" />
<h:outputLabel value="#{i18n['user.town']}:" for="town" /> <h:outputLabel value="#{i18n['user.town']}:" for="town" />
<h:inputText id="town" disabled="#{!cc.attrs.creating and !userView.canSave()}" value="#{userView.selectedUser.town}" /> <h:inputText size="45" id="town" disabled="#{!cc.attrs.creating and !userView.canSave()}" value="#{userView.selectedUser.town}" />
<h:message for="town" /> <h:message for="town" />
......
...@@ -13,18 +13,14 @@ body,html { ...@@ -13,18 +13,14 @@ body,html {
margin: 0 auto; margin: 0 auto;
} }
td span span div.rating-cancel td span span div.rating-cancel {
{
display: none; display: none;
} }
#voteform div.rating-cancel #voteform div.rating-cancel {
{
display: none; display: none;
} }
#logo { #logo {
width: 255px; width: 255px;
height: 52px; height: 52px;
...@@ -212,3 +208,7 @@ a:hover { ...@@ -212,3 +208,7 @@ a:hover {
td ul { td ul {
margin: 0; margin: 0;
} }
.topalign {
vertical-align: top;
}
\ No newline at end of file
...@@ -7,19 +7,19 @@ ...@@ -7,19 +7,19 @@
<h:body> <h:body>
<ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml"> <ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml">
<f:event type="preRenderView" listener="#{productShopView.initBillView}" />
<ui:define name="title"> <ui:define name="title">
<h1>#{i18n['page.product.validateBillProducts.header']}</h1> <h1>#{i18n['page.product.validateBillProducts.header']}</h1>
</ui:define> </ui:define>
<ui:define name="content"> <ui:define name="content">
<bill:showBill bill="#{billReviewView.bill}" /> <bill:showBill bill="#{billEditView.bill}" />
<ui:fragment rendered="#{billReviewView.verkkomaksuAvailable}">
<ui:fragment rendered="#{billEditView.verkkomaksuAvailable}">
<div id="svm-payment"> <div id="svm-payment">
<a href="#{billReviewView.verkkomaksuToken.url}"> </a> <a href="#{billEditView.verkkomaksuToken.url}"> </a>
</div> </div>
<script type="text/javascript" src="//payment.verkkomaksut.fi/js/sv-widget.min.js"></script> <script type="text/javascript" src="//payment.verkkomaksut.fi/js/sv-widget.min.js"></script>
<script type="text/javascript"> <script type="text/javascript">
SV.widget.initWithToken('svm-payment', '#{billReviewView.verkkomaksuToken.token}'); SV.widget.initWithToken('svm-payment', '#{billEditView.verkkomaksuToken.token}', {width: '800'});
</script> </script>
</ui:fragment> </ui:fragment>
......
...@@ -15,31 +15,18 @@ ...@@ -15,31 +15,18 @@
<ui:define name="title"> <ui:define name="title">
<h1>#{i18n['sendPicture.header']}</h1> <h1>#{i18n['sendPicture.header']}</h1>
</ui:define> </ui:define>
<ui:define name="headerdata">
<script type="text/javascript">
webcam
.set_api_url('#{request.contextPath}/UploadServlet?type=userimage&amp;id=#{userView.selectedUser.id}');
webcam.set_hook('onComplete', 'my_completion_handler');
webcam
.set_swf_url('#{request.contextPath}/resources/jpegcam/webcam.swf');
webcam.set_shutter_sound(true,
'#{request.contextPath}/resources/jpegcam/shutter.mp3');
function my_completion_handler(msg) {
// alert("Completition handler executed" + msg);
window.location.href = "#{request.contextPath}/user/sendPicture.jsf?userid=#{userView.user.id}";
}
</script>
</ui:define>
<ui:define name="content"> <ui:define name="content">
<h:outputScript library="primefaces" name="jquery/jquery.js" target="head" />
<h:outputScript target="head" library="jpegcam" name="webcam.js" />
<button onclick="$('#webcamcontainer').prepend(webcam.get_html(320, 240));$('#webcamcontainer').show();$(this).hide();">#{i18n['userimage.webcam']}</button> <button onclick="$('#webcamcontainer').show();$(this).hide();">#{i18n['userimage.webcam']}</button>
<div id="webcamcontainer" style="display: none;"></div> <div id="webcamcontainer" style="display: none;">
<h:form>
<p:photoCam widgetVar="pc" listener="#{userView.oncapture}" update="@all" />
<p:commandButton type="button" value="Capture" onclick="pc.capture()" />
</h:form>
</div>
...@@ -52,25 +39,43 @@ ...@@ -52,25 +39,43 @@
<h:form enctype="multipart/form-data"> <h:form enctype="multipart/form-data">
<p:fileUpload value="#{userView.image}" mode="simple" /> <p:fileUpload id="uploadfile" required="TRUE" requiredMessage="Required!" invalidSizeMessage="#{i18n['user.imageTooBig']}" sizeLimit="1024" value="#{userView.image}" mode="simple" />
<h:message for="uploadfile" />
<h:commandButton action="#{userView.sendImage}" value="#{i18n['user.imagesubmit']}" /> <h:commandButton action="#{userView.sendImage}" value="#{i18n['user.imagesubmit']}" />
</h:form> </h:form>
<h2>asdasd</h2>
<h:dataTable value="#{userView.user.userImageList}" var="img">
<h:column>
<h:outputText value="#{img.name}" />
</h:column>
<h:column>
<h:outputText value="#{img.uploaded.time}">
<f:convertDateTime pattern="#{sessionHandler.datetimeFormat}" timeZone="#{sessionHandler.timezone}" />
</h:outputText>
</h:column>
<h:column>
<h:outputText value="#{(empty img.defaultImage) ? i18n['user.isNotDefaultImage'] : i18n['user.isDefaultImage']}" />
</h:column>
</h:dataTable>
<h2>#{i18n['user.thisIsCurrentImage']}</h2> <h2>#{i18n['user.thisIsCurrentImage']}</h2>
<h:outputText rendered="#{empty userView.user.currentImage}" value="#{i18n['user.noCurrentImage']}" /> <h:outputText rendered="#{empty userView.user.currentImage}" value="#{i18n['user.noCurrentImage']}" />
<ui:fragment rendered="#{!empty userView.user.currentImage}"> <ui:fragment rendered="#{!empty userView.user.currentImage}">
<h:panelGrid columns="2"> <img width="300" src="#{request.contextPath}/dydata/userimage/#{userView.user.currentImage.id}.img" alt="image" />
<img width="300" src="#{request.contextPath}/dydata/userimage/#{userView.user.currentImage.id}.jpg" alt="image" /> <div>
<ui:fragment rendered="#{userView.canManage()}">
<h:form> <h:form>
<p:imageCropper value="#{userView.croppedImage}" aspectRatio="0.8" image="/dydata/userimage/#{userView.user.currentImage.id}.jpg" /> <p:imageCropper value="#{userView.croppedImage}" aspectRatio="0.8" image="/dydata/userimage/#{userView.user.currentImage.id}.img" />
<h:commandButton action="#{userView.crop}" value="#{i18n['user.cropImage']}" /> <h:commandButton action="#{userView.crop()}" value="#{i18n['user.cropImage']}" />
</h:form> </h:form>
</div>
</ui:fragment> </ui:fragment>
</h:panelGrid>
<ui:fragment rendered="#{userView.canManage()}"> <ui:fragment rendered="#{userView.canManage()}">
<h2>Ylläpito</h2> <h2>Ylläpito</h2>
<h:form> <h:form>
...@@ -126,8 +131,6 @@ ...@@ -126,8 +131,6 @@
<!-- </h:column> --> <!-- </h:column> -->
<!-- </h:dataTable> --> <!-- </h:dataTable> -->
</ui:fragment>
......
...@@ -22,7 +22,7 @@ import fi.insomnia.bortal.beans.PermissionBeanLocal; ...@@ -22,7 +22,7 @@ import fi.insomnia.bortal.beans.PermissionBeanLocal;
import fi.insomnia.bortal.beans.RoleBeanLocal; import fi.insomnia.bortal.beans.RoleBeanLocal;
import fi.insomnia.bortal.clientutils.BortalLocalContextHolder; import fi.insomnia.bortal.clientutils.BortalLocalContextHolder;
import fi.insomnia.bortal.enums.apps.IAppPermission; import fi.insomnia.bortal.enums.apps.IAppPermission;
import fi.insomnia.bortal.model.IUser; import fi.insomnia.bortal.model.EventUser;
/** /**
* *
...@@ -51,7 +51,12 @@ public class SessionHandler { ...@@ -51,7 +51,12 @@ public class SessionHandler {
public String getLocale() { public String getLocale() {
// TODO: Locale selection code missing // TODO: Locale selection code missing
// return "en_ST_v7"; // return "en_ST_v7";
return "en_ST_nine"; String ret = eventbean.getCurrentEvent().getOrganiser().getBundleCountry();
if (ret == null || ret.isEmpty())
{
ret = "fi_FI";
}
return ret;
} }
public String getLayout() { public String getLayout() {
...@@ -125,7 +130,7 @@ public class SessionHandler { ...@@ -125,7 +130,7 @@ public class SessionHandler {
} }
public IUser getCurrentUser() { public EventUser getCurrentUser() {
return permbean.getCurrentUser(); return permbean.getCurrentUser();
} }
......
...@@ -35,7 +35,11 @@ bill.addr2 = Address 2 ...@@ -35,7 +35,11 @@ bill.addr2 = Address 2
bill.addr3 = Address 3 bill.addr3 = Address 3
bill.addr4 = Address 4 bill.addr4 = Address 4
bill.addr5 = Address 5 bill.addr5 = Address 5
bill.address = Payers address
bill.billAmount = Bill amount
bill.billIsPaid = Bill is paid
bill.billNumber = Bill number bill.billNumber = Bill number
bill.billPaidDate = Paid date
bill.deliveryTerms = Delivery terms bill.deliveryTerms = Delivery terms
bill.edit = edit bill.edit = edit
bill.isPaid = Paid bill.isPaid = Paid
...@@ -47,10 +51,13 @@ bill.ourReference = Our reference ...@@ -47,10 +51,13 @@ bill.ourReference = Our reference
bill.paidDate = Paid date bill.paidDate = Paid date
bill.payer = Payer bill.payer = Payer
bill.paymentTime = Payment time bill.paymentTime = Payment time
bill.paymentTime.now = Now
bill.printBill = Print bill bill.printBill = Print bill
bill.receiverAddress = Receiver address
bill.referenceNumberBase = Reference number base bill.referenceNumberBase = Reference number base
bill.referencenumber = Reference nr. bill.referencenumber = Reference nr.
bill.sentDate = Sent date bill.sentDate = Sent date
bill.show = Show
bill.theirReference = Clients reference bill.theirReference = Clients reference
bill.totalPrice = Total bill.totalPrice = Total
...@@ -115,7 +122,9 @@ eventdomain.domainname = Domain ...@@ -115,7 +122,9 @@ eventdomain.domainname = Domain
eventdomain.remove = Remove eventdomain.remove = Remove
eventorg.bankName1 = Bank name 2 eventorg.bankName1 = Bank name 2
eventorg.bankNumber1 = Bank account nr. 2 eventorg.bankName2 = Bank name 2
eventorg.bankNumber1 = Bank account nr. 1
eventorg.bankNumber2 = Bank account nr. 2
eventorg.billAddress1 = Billing address 1 eventorg.billAddress1 = Billing address 1
eventorg.billAddress2 = Billing address 2 eventorg.billAddress2 = Billing address 2
eventorg.billAddress3 = Billing address 3 eventorg.billAddress3 = Billing address 3
...@@ -211,6 +220,7 @@ page.bill.billSummary.header = Summary of bills ...@@ -211,6 +220,7 @@ page.bill.billSummary.header = Summary of bills
page.bill.edit.header = Edit bill page.bill.edit.header = Edit bill
page.bill.listAll.header = Bills page.bill.listAll.header = Bills
page.bill.placemap.header = Place map page.bill.placemap.header = Place map
page.bill.show.header = Bill info
page.game.list.header = Insomnia Game page.game.list.header = Insomnia Game
page.game.start.header = Insomnia Game page.game.start.header = Insomnia Game
page.index.header = Frontpage page.index.header = Frontpage
...@@ -228,10 +238,14 @@ page.product.createBill.header = Buy products ...@@ -228,10 +238,14 @@ page.product.createBill.header = Buy products
page.product.createBill.pagegroup = shop page.product.createBill.pagegroup = shop
page.product.edit.pagegroup = admin page.product.edit.pagegroup = admin
page.product.list.pagegroup = admin page.product.list.pagegroup = admin
page.product.validateBillProducts.header = Bill created
page.role.create.pagegroup = admin page.role.create.pagegroup = admin
page.role.edit.pagegroup = admin page.role.edit.pagegroup = admin
page.role.list.pagegroup = admin page.role.list.pagegroup = admin
page.shop.readerevents.header = RFID shop page.shop.readerevents.header = RFID shop
page.svm.failure.header = Payment error
page.svm.pending.header = Payment pending
page.svm.success.header = Payment successfull
page.tests.placemap.pagegroup = shop page.tests.placemap.pagegroup = shop
page.user.create.header = New user page.user.create.header = New user
page.user.create.pagegroup = user page.user.create.pagegroup = user
...@@ -307,6 +321,7 @@ placegroupview.placeReleaseFailed = Releasing of place failed! ...@@ -307,6 +321,7 @@ placegroupview.placeReleaseFailed = Releasing of place failed!
placegroupview.placeReleased = Place {0} released placegroupview.placeReleased = Place {0} released
placegroupview.releasePlace = Release placegroupview.releasePlace = Release
placegroupview.reservationName = Place placegroupview.reservationName = Place
placegroupview.reservationProduct = Product
placegroupview.token = Placecode / user placegroupview.token = Placecode / user
placetoken.commit = Associate token placetoken.commit = Associate token
...@@ -421,9 +436,12 @@ sidebar.users = Users ...@@ -421,9 +436,12 @@ sidebar.users = Users
sidebar.utils.flushCache = Flush Cache sidebar.utils.flushCache = Flush Cache
sidebar.utils.testdata = Testdata sidebar.utils.testdata = Testdata
sitepage.addContent = Add content block
sitepage.create = Create
sitepage.edit = Edit sitepage.edit = Edit
sitepage.name = Page name sitepage.name = Page name
sitepage.roles = Visible for roles sitepage.roles = Visible for roles
sitepage.save = Save
sitepagelist.header = Site pages sitepagelist.header = Site pages
...@@ -433,9 +451,11 @@ submenu.auth.sendResetMail = Password reset ...@@ -433,9 +451,11 @@ submenu.auth.sendResetMail = Password reset
submenu.bill.billSummary = Bill summary submenu.bill.billSummary = Bill summary
submenu.bill.list = My bills submenu.bill.list = My bills
submenu.bill.listAll = All bills submenu.bill.listAll = All bills
submenu.index = Front page submenu.index = Frontpage
submenu.map.create = Create map submenu.map.create = Create map
submenu.map.list = List maps submenu.map.list = List maps
submenu.orgrole.create = Create organisationrole
submenu.orgrole.list = Organisation roles
submenu.pages.create = Create content submenu.pages.create = Create content
submenu.pages.list = List pages submenu.pages.list = List pages
submenu.place.insertToken = Insert placecode submenu.place.insertToken = Insert placecode
...@@ -469,6 +489,13 @@ submenu.voting.myEntries = My entries ...@@ -469,6 +489,13 @@ submenu.voting.myEntries = My entries
supernavi.admin = Adminview supernavi.admin = Adminview
supernavi.user = Userview supernavi.user = Userview
svm.failure.errorMessage = Payment error.
svm.failure.successMessage = Payment error successfull\u2026 ( Possibly already marked paid )
svm.pending.errorMessage = Unknown error! If payment was successfull email will be sent after verification.
svm.pending.successMessage = Payment pending. You will receive email after payment verification.
svm.success.errorMessage = Payment could not be verified!
svm.success.successMessage = Payment was successfull. You can now your credits in the system.
template.loggedInAs = Logged in as: template.loggedInAs = Logged in as:
topnavi.adminshop = Adminshop topnavi.adminshop = Adminshop
...@@ -556,6 +583,7 @@ userlist.search = Search ...@@ -556,6 +583,7 @@ userlist.search = Search
usertitle.managingUser = Shop usertitle.managingUser = Shop
userview.header = Users userview.header = Users
userview.invalidEmail = Invalid email address
userview.loginstringFaulty = Username has to be atleast 2 characters long! userview.loginstringFaulty = Username has to be atleast 2 characters long!
userview.passwordTooShort = Password has to be atleast 5 characters long! userview.passwordTooShort = Password has to be atleast 5 characters long!
userview.passwordsChanged = Password changed userview.passwordsChanged = Password changed
......
...@@ -35,7 +35,11 @@ bill.addr2 = Osoite 2 ...@@ -35,7 +35,11 @@ bill.addr2 = Osoite 2
bill.addr3 = Osoite 3 bill.addr3 = Osoite 3
bill.addr4 = Osoite 4 bill.addr4 = Osoite 4
bill.addr5 = Osoite 5 bill.addr5 = Osoite 5
bill.address = Maksajan osoite
bill.billAmount = Laskun summa
bill.billIsPaid = Lasku on maksettu
bill.billNumber = Laskun numero bill.billNumber = Laskun numero
bill.billPaidDate = Maksup\u00E4iv\u00E4
bill.deliveryTerms = Toimitusehdot bill.deliveryTerms = Toimitusehdot
bill.edit = Muokkaa bill.edit = Muokkaa
bill.isPaid = Maksettu bill.isPaid = Maksettu
...@@ -47,10 +51,13 @@ bill.ourReference = Myyj\u00E4n viite ...@@ -47,10 +51,13 @@ bill.ourReference = Myyj\u00E4n viite
bill.paidDate = Maksup\u00E4iv\u00E4 bill.paidDate = Maksup\u00E4iv\u00E4
bill.payer = Maksaja bill.payer = Maksaja
bill.paymentTime = Maksuehdot bill.paymentTime = Maksuehdot
bill.paymentTime.now = Heti
bill.printBill = Tulosta lasku bill.printBill = Tulosta lasku
bill.receiverAddress = Kauppiaan osoite
bill.referenceNumberBase = Viitenumeropohja bill.referenceNumberBase = Viitenumeropohja
bill.referencenumber = Viitenumero bill.referencenumber = Viitenumero
bill.sentDate = P\u00E4iv\u00E4ys bill.sentDate = P\u00E4iv\u00E4ys
bill.show = N\u00E4yt\u00E4
bill.theirReference = Asiakkaan viite bill.theirReference = Asiakkaan viite
bill.totalPrice = Laskun summa bill.totalPrice = Laskun summa
...@@ -112,8 +119,10 @@ event.startTime = Aloitusp\u00E4iv\u00E4 ...@@ -112,8 +119,10 @@ event.startTime = Aloitusp\u00E4iv\u00E4
eventdomain.domainname = Domain eventdomain.domainname = Domain
eventdomain.remove = Poista eventdomain.remove = Poista
eventorg.bankName1 = Pankin nimi 2 eventorg.bankName1 = Pankin nimi 1
eventorg.bankNumber1 = Tilinumero 2 eventorg.bankName2 = Pankin nimi 2
eventorg.bankNumber1 = Tilinumero 1
eventorg.bankNumber2 = Tilinumero 2
eventorg.billAddress1 = Laskutusosoite 1 eventorg.billAddress1 = Laskutusosoite 1
eventorg.billAddress2 = Laskutusosoite 2 eventorg.billAddress2 = Laskutusosoite 2
eventorg.billAddress3 = Laskutusosoite 3 eventorg.billAddress3 = Laskutusosoite 3
...@@ -223,12 +232,16 @@ page.auth.logout.header = Uloskirjautuminen ...@@ -223,12 +232,16 @@ page.auth.logout.header = Uloskirjautuminen
page.auth.logoutsuccess.header = Logout page.auth.logoutsuccess.header = Logout
page.auth.resetPassword.header = Nollaa salasana page.auth.resetPassword.header = Nollaa salasana
page.bill.billSummary.header = Laskujen yhteenveto page.bill.billSummary.header = Laskujen yhteenveto
page.bill.edit.header = Laskun tiedot
page.bill.list.header = Laskut page.bill.list.header = Laskut
page.bill.show.header = Laskun tiedot
page.place.insertToken.header = Sy\u00F6t\u00E4 paikkakoodi page.place.insertToken.header = Sy\u00F6t\u00E4 paikkakoodi
page.place.mygroups.header = Paikkaryhm\u00E4t page.place.mygroups.header = Paikkaryhm\u00E4t
page.place.placemap.header = Paikkakartta page.place.placemap.header = Paikkakartta
page.product.createBill.header = Osta tuotteita page.product.createBill.header = Osta tuotteita
page.product.validateBillProducts.header = Lasku luotu
page.svm.failure.header = Verkkomaksuvirhe
page.svm.pending.header = Maksukuittausta odotetaan
page.svm.success.header = Verkkomaksu onnistui
page.user.create.header = Luo uusi k\u00E4ytt\u00E4j\u00E4 page.user.create.header = Luo uusi k\u00E4ytt\u00E4j\u00E4
pagination.firstpage = Ensimm\u00E4inen pagination.firstpage = Ensimm\u00E4inen
...@@ -297,6 +310,7 @@ placegroupview.placeReleaseFailed = Paikan vapauttaminen ep\u00E4onnistui! ...@@ -297,6 +310,7 @@ placegroupview.placeReleaseFailed = Paikan vapauttaminen ep\u00E4onnistui!
placegroupview.placeReleased = Paikka {0} vapautettu placegroupview.placeReleased = Paikka {0} vapautettu
placegroupview.releasePlace = Vapauta placegroupview.releasePlace = Vapauta
placegroupview.reservationName = Paikka placegroupview.reservationName = Paikka
placegroupview.reservationProduct = Tuote
placegroupview.token = Paikkakoodi / k\u00E4ytt\u00E4j\u00E4 placegroupview.token = Paikkakoodi / k\u00E4ytt\u00E4j\u00E4
placetoken.commit = Liit\u00E4 placetoken.commit = Liit\u00E4
...@@ -408,9 +422,11 @@ sidebar.users = K\u00E4ytt\u00E4j\u00E4t ...@@ -408,9 +422,11 @@ sidebar.users = K\u00E4ytt\u00E4j\u00E4t
sidebar.utils.flushCache = Flush Cache sidebar.utils.flushCache = Flush Cache
sidebar.utils.testdata = Testdata sidebar.utils.testdata = Testdata
sitepage.create = Luo uusi
sitepage.edit = Muokkaa sitepage.edit = Muokkaa
sitepage.name = Sivun nimi sitepage.name = Sivun nimi
sitepage.roles = N\u00E4ytet\u00E4\u00E4n rooleille sitepage.roles = N\u00E4ytet\u00E4\u00E4n rooleille
sitepage.save = Tallenna
sitepagelist.header = Sivuston sis\u00E4ll\u00F6t sitepagelist.header = Sivuston sis\u00E4ll\u00F6t
...@@ -420,8 +436,11 @@ submenu.auth.sendResetMail = Salasanan palautus ...@@ -420,8 +436,11 @@ submenu.auth.sendResetMail = Salasanan palautus
submenu.bill.billSummary = Laskujen yhteenveto submenu.bill.billSummary = Laskujen yhteenveto
submenu.bill.list = N\u00E4yt\u00E4 omat laskut submenu.bill.list = N\u00E4yt\u00E4 omat laskut
submenu.bill.listAll = Kaikki laskut submenu.bill.listAll = Kaikki laskut
submenu.index = Etusivu
submenu.map.create = Uusi kartta submenu.map.create = Uusi kartta
submenu.map.list = N\u00E4yt\u00E4 kartat submenu.map.list = N\u00E4yt\u00E4 kartat
submenu.orgrole.create = Luo j\u00E4rjest\u00E4j\u00E4rooli
submenu.orgrole.list = J\u00E4rjest\u00E4j\u00E4roolit
submenu.pages.create = Luo sis\u00E4lt\u00F6\u00E4 submenu.pages.create = Luo sis\u00E4lt\u00F6\u00E4
submenu.pages.list = N\u00E4yt\u00E4 sis\u00E4ll\u00F6t submenu.pages.list = N\u00E4yt\u00E4 sis\u00E4ll\u00F6t
submenu.place.insertToken = Sy\u00F6t\u00E4 paikkakoodi submenu.place.insertToken = Sy\u00F6t\u00E4 paikkakoodi
...@@ -458,6 +477,13 @@ submenu.voting.myEntries = Omat entryt ...@@ -458,6 +477,13 @@ submenu.voting.myEntries = Omat entryt
supernavi.admin = Yll\u00E4piton\u00E4kym\u00E4 supernavi.admin = Yll\u00E4piton\u00E4kym\u00E4
supernavi.user = K\u00E4ytt\u00E4j\u00E4n\u00E4kym\u00E4 supernavi.user = K\u00E4ytt\u00E4j\u00E4n\u00E4kym\u00E4
svm.failure.errorMessage = Verkkomaksuvirhe.
svm.failure.successMessage = Maksuvirhe onnistunut. ( Maksu mahdollisesti merkitty jo maksetuksi )
svm.pending.errorMessage = Maksukuittausta odotetaan. Kuittauksesta l\u00E4hetet\u00E4\u00E4n ilmoitus s\u00E4hk\u00F6postitse.
svm.pending.successMessage = Maksukuittausta odotetaan. Kuittauksesta l\u00E4hetet\u00E4\u00E4n ilmoitus s\u00E4hk\u00F6postitse.
svm.success.errorMessage = Verkkomaksua ei voitu verifioida! Virheest\u00E4 on raportoitu eteenp\u00E4in.
svm.success.successMessage = Verkkomaksu onnistui.
template.loggedInAs = Kirjautunut tunnuksella: template.loggedInAs = Kirjautunut tunnuksella:
topnavi.adminshop = Kauppa topnavi.adminshop = Kauppa
...@@ -541,6 +567,7 @@ userlist.search = Etsi ...@@ -541,6 +567,7 @@ userlist.search = Etsi
usertitle.managingUser = Kauppa usertitle.managingUser = Kauppa
userview.invalidEmail = Virheeliinen s\u00E4hk\u00F6postiosoite
userview.loginstringFaulty = K\u00E4ytt\u00E4j\u00E4tunnus virheellinen. Pit\u00E4\u00E4 olla v\u00E4hint\u00E4\u00E4n kaksi merkki\u00E4 pitk\u00E4. userview.loginstringFaulty = K\u00E4ytt\u00E4j\u00E4tunnus virheellinen. Pit\u00E4\u00E4 olla v\u00E4hint\u00E4\u00E4n kaksi merkki\u00E4 pitk\u00E4.
userview.passwordTooShort = Salasana liian lyhyt. Pit\u00E4\u00E4 olla v\u00E4hint\u00E4\u00E4n {0} merkki\u00E4 pitk\u00E4. userview.passwordTooShort = Salasana liian lyhyt. Pit\u00E4\u00E4 olla v\u00E4hint\u00E4\u00E4n {0} merkki\u00E4 pitk\u00E4.
userview.passwordsChanged = Salasana vaihdettu userview.passwordsChanged = Salasana vaihdettu
......
...@@ -33,7 +33,7 @@ import fi.insomnia.bortal.beans.PlaceMapBeanLocal; ...@@ -33,7 +33,7 @@ import fi.insomnia.bortal.beans.PlaceMapBeanLocal;
import fi.insomnia.bortal.beans.SecurityLogType; import fi.insomnia.bortal.beans.SecurityLogType;
import fi.insomnia.bortal.enums.apps.MapPermission; import fi.insomnia.bortal.enums.apps.MapPermission;
import fi.insomnia.bortal.model.EventMap; import fi.insomnia.bortal.model.EventMap;
import fi.insomnia.bortal.model.IUser; import fi.insomnia.bortal.model.EventUser;
import fi.insomnia.bortal.model.Place; import fi.insomnia.bortal.model.Place;
/** /**
...@@ -149,7 +149,7 @@ public class PlaceMap extends HttpServlet { ...@@ -149,7 +149,7 @@ public class PlaceMap extends HttpServlet {
// logger.debug("Got map object {}", map); // logger.debug("Got map object {}", map);
List<Place> places = map.getPlaces(); List<Place> places = map.getPlaces();
IUser user = permbean.getCurrentUser(); EventUser user = permbean.getCurrentUser();
// List<Place> selectedPlaces = placemapBean.findSelectedPlaces(map); // List<Place> selectedPlaces = placemapBean.findSelectedPlaces(map);
BufferedImage image = ImageIO.read(new ByteArrayInputStream(map BufferedImage image = ImageIO.read(new ByteArrayInputStream(map
...@@ -241,7 +241,7 @@ public class PlaceMap extends HttpServlet { ...@@ -241,7 +241,7 @@ public class PlaceMap extends HttpServlet {
private static final Color LOCKED_COLOR = Color.DARK_GRAY; private static final Color LOCKED_COLOR = Color.DARK_GRAY;
private static final int BORDER_WIDTH = 2; private static final int BORDER_WIDTH = 2;
private static void drawPlace(Place p, Graphics2D g, IUser user) { private static void drawPlace(Place p, Graphics2D g, EventUser user) {
if (p.isDisabled()) { if (p.isDisabled()) {
return; return;
} }
...@@ -259,15 +259,13 @@ public class PlaceMap extends HttpServlet { ...@@ -259,15 +259,13 @@ public class PlaceMap extends HttpServlet {
color = OWNED_COLOR; color = OWNED_COLOR;
} else if (p.isTaken()) { } else if (p.isTaken()) {
color = RESERVED_COLOR; color = RESERVED_COLOR;
} else if (p.getProduct().getColor() != null) { } else if (p.getProduct().getColor() != null && !p.getProduct().getColor().isEmpty()) {
try { try {
color = Color.decode(p.getProduct().getColor()); color = Color.decode(p.getProduct().getColor());
} catch (NumberFormatException x) { } catch (NumberFormatException x) {
logger.error("Cannot convert string {} to color.", p logger.error("Cannot convert string {} to color.", p.getProduct().getColor());
.getProduct().getColor());
} }
} }
g.setColor(BORDER_COLOR); g.setColor(BORDER_COLOR);
......
...@@ -21,7 +21,7 @@ import fi.insomnia.bortal.beans.CardTemplateBeanLocal; ...@@ -21,7 +21,7 @@ import fi.insomnia.bortal.beans.CardTemplateBeanLocal;
import fi.insomnia.bortal.beans.PermissionBeanLocal; import fi.insomnia.bortal.beans.PermissionBeanLocal;
import fi.insomnia.bortal.beans.UserBeanLocal; import fi.insomnia.bortal.beans.UserBeanLocal;
import fi.insomnia.bortal.enums.apps.UserPermission; import fi.insomnia.bortal.enums.apps.UserPermission;
import fi.insomnia.bortal.model.IUser; import fi.insomnia.bortal.model.EventUser;
import fi.insomnia.bortal.model.PrintedCard; import fi.insomnia.bortal.model.PrintedCard;
/** /**
...@@ -86,7 +86,7 @@ public class UserCardServlet extends GenericImageServlet { ...@@ -86,7 +86,7 @@ public class UserCardServlet extends GenericImageServlet {
private byte[] mkCard(PrintedCard card) throws IOException { private byte[] mkCard(PrintedCard card) throws IOException {
IUser user = card.getUser(); EventUser user = card.getUser();
BufferedImage face = ImageIO.read(new ByteArrayInputStream(user.getCurrentImage().getImageData())); BufferedImage face = ImageIO.read(new ByteArrayInputStream(user.getCurrentImage().getImageData()));
......
...@@ -6,7 +6,7 @@ import javax.inject.Inject; ...@@ -6,7 +6,7 @@ import javax.inject.Inject;
import javax.inject.Named; import javax.inject.Named;
import fi.insomnia.bortal.beans.NewsBeanLocal; import fi.insomnia.bortal.beans.NewsBeanLocal;
import fi.insomnia.bortal.model.IUser; import fi.insomnia.bortal.model.EventUser;
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;
...@@ -19,6 +19,6 @@ public class GameView extends GenericCDIView { ...@@ -19,6 +19,6 @@ public class GameView extends GenericCDIView {
@Inject @Inject
@SelectedUser @SelectedUser
private IUser user; private EventUser user;
} }
...@@ -2,11 +2,15 @@ package fi.insomnia.bortal.web.cdiview.map; ...@@ -2,11 +2,15 @@ package fi.insomnia.bortal.web.cdiview.map;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map;
import javax.ejb.EJB; import javax.ejb.EJB;
import javax.enterprise.context.ConversationScoped; import javax.enterprise.context.ConversationScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.inject.Named; import javax.inject.Named;
import org.primefaces.model.UploadedFile;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -17,6 +21,7 @@ import fi.insomnia.bortal.beans.ProductBeanLocal; ...@@ -17,6 +21,7 @@ import fi.insomnia.bortal.beans.ProductBeanLocal;
import fi.insomnia.bortal.beans.UserBeanLocal; import fi.insomnia.bortal.beans.UserBeanLocal;
import fi.insomnia.bortal.enums.apps.MapPermission; import fi.insomnia.bortal.enums.apps.MapPermission;
import fi.insomnia.bortal.model.EventMap; import fi.insomnia.bortal.model.EventMap;
import fi.insomnia.bortal.model.LanEvent;
import fi.insomnia.bortal.model.Place; import fi.insomnia.bortal.model.Place;
import fi.insomnia.bortal.model.Product; import fi.insomnia.bortal.model.Product;
import fi.insomnia.bortal.web.cdiview.GenericCDIView; import fi.insomnia.bortal.web.cdiview.GenericCDIView;
...@@ -41,6 +46,9 @@ public class MapManageView extends GenericCDIView { ...@@ -41,6 +46,9 @@ public class MapManageView extends GenericCDIView {
@EJB @EJB
private transient ProductBeanLocal productbean; private transient ProductBeanLocal productbean;
private UploadedFile bgFile;
private List<EventMap> eventmaps; private List<EventMap> eventmaps;
private EventMap map; private EventMap map;
private String mapname; private String mapname;
...@@ -64,6 +72,8 @@ public class MapManageView extends GenericCDIView { ...@@ -64,6 +72,8 @@ public class MapManageView extends GenericCDIView {
private Integer mapId; private Integer mapId;
private List<Product> productlist; private List<Product> productlist;
private LanEvent copyEvent;
public void initCreate() { public void initCreate() {
if (super.requirePermissions(MapPermission.MANAGE_MAPS)) { if (super.requirePermissions(MapPermission.MANAGE_MAPS)) {
super.beginConversation(); super.beginConversation();
...@@ -80,6 +90,13 @@ public class MapManageView extends GenericCDIView { ...@@ -80,6 +90,13 @@ public class MapManageView extends GenericCDIView {
} }
public String submitBg()
{
map.setMapData(bgFile.getContents());
map = eventmapBean.saveMap(map);
return null;
}
public List<EventMap> getMaps() { public List<EventMap> getMaps() {
if (eventmaps == null) { if (eventmaps == null) {
eventmaps = eventBean.getCurrentEvent().getEventMaps(); eventmaps = eventBean.getCurrentEvent().getEventMaps();
...@@ -114,6 +131,22 @@ public class MapManageView extends GenericCDIView { ...@@ -114,6 +131,22 @@ public class MapManageView extends GenericCDIView {
return "edit"; return "edit";
} }
public void mapClick(ActionEvent e) {
FacesContext context = FacesContext.getCurrentInstance();
String clientId = e.getComponent().getClientId(context);
Map<String, String> requestParams = context.getExternalContext().getRequestParameterMap();
startX = new Integer(requestParams.get(clientId + ".x")).intValue();
startY = new Integer(requestParams.get(clientId + ".y")).intValue();
}
public String removeAllPlaces()
{
map = eventmapBean.clearPlaces(map);
return null;
}
public void generatePlaces() { public void generatePlaces() {
String[] tablenames = getNamebase().split(";"); String[] tablenames = getNamebase().split(";");
List<Place> mapplaces = map.getPlaces(); List<Place> mapplaces = map.getPlaces();
...@@ -290,4 +323,20 @@ public class MapManageView extends GenericCDIView { ...@@ -290,4 +323,20 @@ public class MapManageView extends GenericCDIView {
public List<Product> getProductlist() { public List<Product> getProductlist() {
return productlist; return productlist;
} }
public LanEvent getCopyEvent() {
return copyEvent;
}
public void setCopyEvent(LanEvent copyEvent) {
this.copyEvent = copyEvent;
}
public UploadedFile getBgFile() {
return bgFile;
}
public void setBgFile(UploadedFile bgFile) {
this.bgFile = bgFile;
}
} }
...@@ -77,7 +77,7 @@ public class PlaceView extends GenericCDIView { ...@@ -77,7 +77,7 @@ public class PlaceView extends GenericCDIView {
String clientId = e.getComponent().getClientId(context); String clientId = e.getComponent().getClientId(context);
Map<String, String> requestParams = context.getExternalContext().getRequestParameterMap(); Map<String, String> requestParams = context.getExternalContext().getRequestParameterMap();
logger.info("Requestmap for clientId {}: {}", clientId, requestParams);
int x = new Integer(requestParams.get(clientId + ".x")).intValue(); int x = new Integer(requestParams.get(clientId + ".x")).intValue();
int y = new Integer(requestParams.get(clientId + ".y")).intValue(); int y = new Integer(requestParams.get(clientId + ".y")).intValue();
logger.debug("Clicked position {} {}", x, y); logger.debug("Clicked position {} {}", x, y);
......
...@@ -12,7 +12,7 @@ import javax.inject.Named; ...@@ -12,7 +12,7 @@ import javax.inject.Named;
import fi.insomnia.bortal.beans.EventBeanLocal; import fi.insomnia.bortal.beans.EventBeanLocal;
import fi.insomnia.bortal.beans.EventOrganiserBeanLocal; import fi.insomnia.bortal.beans.EventOrganiserBeanLocal;
import fi.insomnia.bortal.model.EventOrganiser; import fi.insomnia.bortal.model.EventOrganiser;
import fi.insomnia.bortal.model.IUser; import fi.insomnia.bortal.model.EventUser;
import fi.insomnia.bortal.model.LanEvent; import fi.insomnia.bortal.model.LanEvent;
import fi.insomnia.bortal.model.LanEventDomain; import fi.insomnia.bortal.model.LanEventDomain;
import fi.insomnia.bortal.web.annotations.LoggedIn; import fi.insomnia.bortal.web.annotations.LoggedIn;
...@@ -31,7 +31,7 @@ public class EventOrgView extends GenericCDIView { ...@@ -31,7 +31,7 @@ public class EventOrgView extends GenericCDIView {
@LoggedIn @LoggedIn
@Inject @Inject
private IUser user; private EventUser user;
private EventOrganiser eventorg; private EventOrganiser eventorg;
private Integer orgId; private Integer orgId;
...@@ -68,6 +68,12 @@ public class EventOrgView extends GenericCDIView { ...@@ -68,6 +68,12 @@ public class EventOrgView extends GenericCDIView {
return null; return null;
} }
public String saveEventorg()
{
setEventorg(eventbean.mergeChanges(eventorg));
return null;
}
public String addDomain() { public String addDomain() {
getEvent().getDomains().add(new LanEventDomain(getEvent(), newdomain)); getEvent().getDomains().add(new LanEventDomain(getEvent(), newdomain));
setEvent(eventbean.mergeChanges(getEvent())); setEvent(eventbean.mergeChanges(getEvent()));
...@@ -92,7 +98,7 @@ public class EventOrgView extends GenericCDIView { ...@@ -92,7 +98,7 @@ public class EventOrgView extends GenericCDIView {
if (getUser().isSuperadmin()) { if (getUser().isSuperadmin()) {
setOrganisations(eventorgbean.getEventOrganisers()); setOrganisations(eventorgbean.getEventOrganisers());
} else { } else {
setOrganisations(eventorgbean.getOrganisations(getUser())); setOrganisations(eventorgbean.getOrganisations(getUser().getUser()));
} }
} }
} }
...@@ -146,11 +152,11 @@ public class EventOrgView extends GenericCDIView { ...@@ -146,11 +152,11 @@ public class EventOrgView extends GenericCDIView {
return orgId; return orgId;
} }
public void setUser(IUser user) { public void setUser(EventUser user) {
this.user = user; this.user = user;
} }
public IUser getUser() { public EventUser getUser() {
return user; return user;
} }
......
...@@ -14,6 +14,9 @@ import org.slf4j.Logger; ...@@ -14,6 +14,9 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.beans.EventBeanLocal; import fi.insomnia.bortal.beans.EventBeanLocal;
import fi.insomnia.bortal.enums.apps.EventPermission;
import fi.insomnia.bortal.model.LanEventPrivateProperty;
import fi.insomnia.bortal.model.LanEventPrivatePropertyKey;
import fi.insomnia.bortal.model.LanEventProperty; import fi.insomnia.bortal.model.LanEventProperty;
import fi.insomnia.bortal.model.LanEventPropertyKey; import fi.insomnia.bortal.model.LanEventPropertyKey;
import fi.insomnia.bortal.web.cdiview.GenericCDIView; import fi.insomnia.bortal.web.cdiview.GenericCDIView;
...@@ -25,6 +28,7 @@ public class EventPropertyView extends GenericCDIView { ...@@ -25,6 +28,7 @@ public class EventPropertyView extends GenericCDIView {
private static final long serialVersionUID = 6278825570752203760L; private static final long serialVersionUID = 6278825570752203760L;
private LanEventPropertyKey createKey; private LanEventPropertyKey createKey;
private LanEventPrivatePropertyKey createPrivateKey;
private LanEventProperty property; private LanEventProperty property;
@Inject @Inject
...@@ -34,6 +38,9 @@ public class EventPropertyView extends GenericCDIView { ...@@ -34,6 +38,9 @@ public class EventPropertyView extends GenericCDIView {
private static final Logger logger = LoggerFactory.getLogger(EventPropertyView.class); private static final Logger logger = LoggerFactory.getLogger(EventPropertyView.class);
private ListDataModel<LanEventProperty> properties; private ListDataModel<LanEventProperty> properties;
private ListDataModel<LanEventPrivateProperty> privateProperties;
private LanEventPrivateProperty privateProperty;
public List<LanEventPropertyKey> getAvailablePropertyKeys() public List<LanEventPropertyKey> getAvailablePropertyKeys()
{ {
...@@ -50,6 +57,28 @@ public class EventPropertyView extends GenericCDIView { ...@@ -50,6 +57,28 @@ public class EventPropertyView extends GenericCDIView {
return ret; return ret;
} }
public List<LanEventPrivatePropertyKey> getAvailablePrivatePropertyKeys() {
List<LanEventPrivatePropertyKey> ret = null;
if (isPrivatePropertyPermission())
{
ret = new ArrayList<LanEventPrivatePropertyKey>(Arrays.asList(LanEventPrivatePropertyKey.values()));
if (createPrivateKey != null)
{
ret.remove(createPrivateKey);
}
if (eventorgview.getEvent() != null) {
for (LanEventPrivateProperty p : eventbean.getPrivateProperties()) {
ret.remove(p.getKey());
}
}
}
return ret;
}
public boolean isPrivatePropertyPermission() {
return super.hasPermission(EventPermission.MANAGE_PRIVATE_PROPERTIES);
}
public String editProperty() public String editProperty()
{ {
property = properties.getRowData(); property = properties.getRowData();
...@@ -57,11 +86,38 @@ public class EventPropertyView extends GenericCDIView { ...@@ -57,11 +86,38 @@ public class EventPropertyView extends GenericCDIView {
return null; return null;
} }
public String editPrivateProperty()
{
privateProperty = privateProperties.getRowData();
logger.info("Editing property {}", privateProperty);
return null;
}
public String initPrivatePropertyKeyCreate()
{
logger.info("Creating new priavte key for event {}, key: {}", eventorgview.getEvent(), createPrivateKey);
privateProperty = new LanEventPrivateProperty();
// property.setEventorg(eventorgview.getEvent().getOrganiser());
privateProperty.setEvent(eventorgview.getEvent());
privateProperty.setKey(createPrivateKey);
return null;
}
public String savePrivateProperty()
{
logger.info("Saving property {}, eventorg {}, key {}", new Object[] { privateProperty.getEvent(), privateProperty.getEventorg(), privateProperty.getKey() });
privateProperty = eventbean.saveOrCreatePrivateProperty(privateProperty);
privateProperty.setEvent(privateProperty.getEvent());
privateProperties = null;
privateProperty = null;
return null;
}
public String initPropertyKeyCreate() public String initPropertyKeyCreate()
{ {
logger.info("Creating new key for event {}, key: {}", eventorgview.getEvent(), createKey); logger.info("Creating new key for event {}, key: {}", eventorgview.getEvent(), createKey);
property = new LanEventProperty(); property = new LanEventProperty();
property.setEventorg(eventorgview.getEvent().getOrganiser()); // property.setEventorg(eventorgview.getEvent().getOrganiser());
property.setEvent(eventorgview.getEvent()); property.setEvent(eventorgview.getEvent());
property.setKey(createKey); property.setKey(createKey);
return null; return null;
...@@ -109,8 +165,36 @@ public class EventPropertyView extends GenericCDIView { ...@@ -109,8 +165,36 @@ public class EventPropertyView extends GenericCDIView {
return properties; return properties;
} }
public ListDataModel<LanEventPrivateProperty> getPrivateProperties() {
if (privateProperties == null && eventorgview != null && eventorgview.getEvent() != null)
{
privateProperties = new ListDataModel<LanEventPrivateProperty>(eventbean.getPrivateProperties());
}
return privateProperties;
}
public void setProperties(ListDataModel<LanEventProperty> properties) { public void setProperties(ListDataModel<LanEventProperty> properties) {
this.properties = properties; this.properties = properties;
} }
public LanEventPrivatePropertyKey getCreatePrivateKey() {
return createPrivateKey;
}
public void setCreatePrivateKey(LanEventPrivatePropertyKey createPrivateKey) {
this.createPrivateKey = createPrivateKey;
}
public LanEventPrivateProperty getPrivateProperty() {
return privateProperty;
}
public void setPrivateProperty(LanEventPrivateProperty privateProperty) {
this.privateProperty = privateProperty;
}
public void setPrivateProperties(ListDataModel<LanEventPrivateProperty> privateProperties) {
this.privateProperties = privateProperties;
}
} }
...@@ -4,8 +4,13 @@ import javax.ejb.EJB; ...@@ -4,8 +4,13 @@ import javax.ejb.EJB;
import javax.enterprise.context.ConversationScoped; import javax.enterprise.context.ConversationScoped;
import javax.inject.Named; import javax.inject.Named;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.beans.BillBeanLocal; import fi.insomnia.bortal.beans.BillBeanLocal;
import fi.insomnia.bortal.beans.VerkkomaksutFiBeanLocal;
import fi.insomnia.bortal.model.Bill; import fi.insomnia.bortal.model.Bill;
import fi.insomnia.bortal.util.VerkkomaksutReturnEntry;
import fi.insomnia.bortal.web.cdiview.GenericCDIView; import fi.insomnia.bortal.web.cdiview.GenericCDIView;
@Named @Named
...@@ -18,22 +23,44 @@ public class BillEditView extends GenericCDIView { ...@@ -18,22 +23,44 @@ public class BillEditView extends GenericCDIView {
private static final long serialVersionUID = -4665348757236295800L; private static final long serialVersionUID = -4665348757236295800L;
private int billid; private int billid;
private Bill bill; private Bill bill;
private VerkkomaksutReturnEntry vmreturn;
@EJB @EJB
private transient VerkkomaksutFiBeanLocal vmbean;
@EJB
private transient BillBeanLocal billbean; private transient BillBeanLocal billbean;
private static final Logger logger = LoggerFactory.getLogger(BillEditView.class);
public void initView() { public void initView() {
if (this.requirePermissions(permbean.isLoggedIn())) { if (this.requirePermissions(permbean.isLoggedIn()) && bill == null) {
if (billid <= 0 && bill != null) { if (billid > 0) {
this.addFaceMessage("billedit.billnotfound");
navihandler.forward("/bill/list");
} else {
super.beginConversation(); super.beginConversation();
bill = billbean.findById(billid); bill = billbean.findById(billid);
} }
} }
if (bill == null)
{
this.addFaceMessage("billedit.billnotfound");
navihandler.forward("/bill/list");
}
}
public boolean isVerkkomaksuAvailable()
{
return vmbean.isSvmEnabled();
}
public VerkkomaksutReturnEntry getVerkkomaksuToken()
{
if (bill != null && vmreturn == null)
{
vmreturn = vmbean.getSvmToken(bill);
logger.info("Vmtoken url {}, token {}", vmreturn.getUrl(), vmreturn.getToken());
}
return vmreturn;
} }
public String save() public String save()
...@@ -57,4 +84,12 @@ public class BillEditView extends GenericCDIView { ...@@ -57,4 +84,12 @@ public class BillEditView extends GenericCDIView {
public int getBillid() { public int getBillid() {
return billid; return billid;
} }
public VerkkomaksutReturnEntry getVmreturn() {
return vmreturn;
}
public void setVmreturn(VerkkomaksutReturnEntry vmreturn) {
this.vmreturn = vmreturn;
}
} }
...@@ -13,7 +13,7 @@ import fi.insomnia.bortal.beans.BillBeanLocal; ...@@ -13,7 +13,7 @@ import fi.insomnia.bortal.beans.BillBeanLocal;
import fi.insomnia.bortal.bortal.views.BillSummary; import fi.insomnia.bortal.bortal.views.BillSummary;
import fi.insomnia.bortal.enums.apps.BillPermission; import fi.insomnia.bortal.enums.apps.BillPermission;
import fi.insomnia.bortal.model.Bill; import fi.insomnia.bortal.model.Bill;
import fi.insomnia.bortal.model.IUser; import fi.insomnia.bortal.model.EventUser;
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;
...@@ -28,7 +28,7 @@ public class BillListView extends GenericCDIView { ...@@ -28,7 +28,7 @@ public class BillListView extends GenericCDIView {
@Inject @Inject
@SelectedUser @SelectedUser
private IUser user; private EventUser user;
@EJB @EJB
private transient BillBeanLocal billbean; private transient BillBeanLocal billbean;
......
...@@ -54,7 +54,7 @@ public class ProductShopView extends GenericCDIView { ...@@ -54,7 +54,7 @@ public class ProductShopView extends GenericCDIView {
private BillListView billListView; private BillListView billListView;
@Inject @Inject
private BillReviewView billReviewView; private BillEditView billEditView;
public void initBillView() public void initBillView()
{ {
...@@ -125,7 +125,7 @@ public class ProductShopView extends GenericCDIView { ...@@ -125,7 +125,7 @@ public class ProductShopView extends GenericCDIView {
addFaceMessage("productshop.billCreated"); addFaceMessage("productshop.billCreated");
cash = BigDecimal.ZERO; cash = BigDecimal.ZERO;
shoppingcart = null; shoppingcart = null;
billReviewView.setBill(bill); billEditView.setBill(bill);
return "showCreatedBill"; return "showCreatedBill";
......
...@@ -17,7 +17,7 @@ import fi.insomnia.bortal.beans.CardTemplateBeanLocal; ...@@ -17,7 +17,7 @@ import fi.insomnia.bortal.beans.CardTemplateBeanLocal;
import fi.insomnia.bortal.beans.EventBeanLocal; import fi.insomnia.bortal.beans.EventBeanLocal;
import fi.insomnia.bortal.enums.apps.UserPermission; import fi.insomnia.bortal.enums.apps.UserPermission;
import fi.insomnia.bortal.model.CardTemplate; import fi.insomnia.bortal.model.CardTemplate;
import fi.insomnia.bortal.model.IUser; import fi.insomnia.bortal.model.EventUser;
import fi.insomnia.bortal.utilities.I18n; import fi.insomnia.bortal.utilities.I18n;
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;
...@@ -37,7 +37,7 @@ public class CardView extends GenericCDIView { ...@@ -37,7 +37,7 @@ public class CardView extends GenericCDIView {
private EventBeanLocal eventBean; private EventBeanLocal eventBean;
@Inject @Inject
@SelectedUser @SelectedUser
private IUser user; private EventUser user;
private Integer cardid; private Integer cardid;
...@@ -114,11 +114,11 @@ public class CardView extends GenericCDIView { ...@@ -114,11 +114,11 @@ public class CardView extends GenericCDIView {
return null; return null;
} }
public IUser getUser() { public EventUser getUser() {
return user; return user;
} }
public void setUser(IUser user) { public void setUser(EventUser user) {
this.user = user; this.user = user;
} }
......
...@@ -10,7 +10,6 @@ import org.slf4j.Logger; ...@@ -10,7 +10,6 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.beans.UserBeanLocal; import fi.insomnia.bortal.beans.UserBeanLocal;
import fi.insomnia.bortal.model.IUser;
import fi.insomnia.bortal.model.User; import fi.insomnia.bortal.model.User;
import fi.insomnia.bortal.web.cdiview.GenericCDIView; import fi.insomnia.bortal.web.cdiview.GenericCDIView;
...@@ -116,7 +115,7 @@ public class PasswordResetView extends GenericCDIView { ...@@ -116,7 +115,7 @@ public class PasswordResetView extends GenericCDIView {
this.confirm = confirm; this.confirm = confirm;
} }
public IUser getUser() { public User getUser() {
return user; return user;
} }
......
...@@ -11,6 +11,7 @@ import org.slf4j.Logger; ...@@ -11,6 +11,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.beans.RoleBeanLocal; import fi.insomnia.bortal.beans.RoleBeanLocal;
import fi.insomnia.bortal.enums.apps.UserPermission;
import fi.insomnia.bortal.model.Role; import fi.insomnia.bortal.model.Role;
import fi.insomnia.bortal.web.cdiview.GenericCDIView; import fi.insomnia.bortal.web.cdiview.GenericCDIView;
...@@ -34,6 +35,11 @@ public class RoleDataView extends GenericCDIView { ...@@ -34,6 +35,11 @@ public class RoleDataView extends GenericCDIView {
return roles; return roles;
} }
public boolean isRoleReadPermission()
{
return super.hasPermission(UserPermission.READ_ROLES);
}
public Role getNoSelection() public Role getNoSelection()
{ {
return Role.EMPTY_ROLE; return Role.EMPTY_ROLE;
......
...@@ -6,6 +6,7 @@ import javax.ejb.EJB; ...@@ -6,6 +6,7 @@ import javax.ejb.EJB;
import javax.enterprise.context.RequestScoped; import javax.enterprise.context.RequestScoped;
import javax.faces.application.FacesMessage; import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent; import javax.faces.component.UIComponent;
import javax.faces.component.UIInput;
import javax.faces.context.FacesContext; import javax.faces.context.FacesContext;
import javax.faces.validator.ValidatorException; import javax.faces.validator.ValidatorException;
import javax.inject.Named; import javax.inject.Named;
...@@ -30,13 +31,21 @@ public class UserValidator implements Serializable { ...@@ -30,13 +31,21 @@ public class UserValidator implements Serializable {
private transient UserBeanLocal userbean; private transient UserBeanLocal userbean;
private static final Logger logger = LoggerFactory.getLogger(UserValidator.class); private static final Logger logger = LoggerFactory.getLogger(UserValidator.class);
public void validateEmail(FacesContext context, UIComponent ui, Object value) {
String email = (String) value;
if (email.indexOf('@') == -1) {
message(context, ui, "userview.invalidEmail");
}
}
public void login(FacesContext context, UIComponent ui, Object object) { public void login(FacesContext context, UIComponent ui, Object object) {
String login = object.toString().trim(); String login = object.toString().trim();
if (login.length() < 3) { if (login.length() < 3) {
message("userview.loginstringFaulty"); message(context, ui, "userview.loginstringFaulty");
} else if (userbean.userExists(login)) { } else if (userbean.userExists(login)) {
message("userview.userExists"); message(context, ui, "userview.userExists");
} }
} }
...@@ -45,28 +54,38 @@ public class UserValidator implements Serializable { ...@@ -45,28 +54,38 @@ public class UserValidator implements Serializable {
logger.info("Executing pwd, firstpwd {}", firstpwd); logger.info("Executing pwd, firstpwd {}", firstpwd);
if (object == null) { if (object == null) {
message("user.passwordlengthMessage"); message(context, ui, "user.passwordlengthMessage");
return; return;
} }
if (firstpwd == null) { if (firstpwd == null) {
firstpwd = object.toString(); firstpwd = object.toString();
if (PASSWORD_MIN_LENGTH.compareTo(firstpwd.length()) > 0) { if (PASSWORD_MIN_LENGTH.compareTo(firstpwd.length()) > 0) {
message("userview.passwordTooShort", PASSWORD_MIN_LENGTH); message(context, ui, "userview.passwordTooShort", PASSWORD_MIN_LENGTH);
} }
logger.info("Setting firstpwd to {} as {}", firstpwd, object.getClass()); logger.info("Setting firstpwd to {} as {}", firstpwd, object.getClass());
return; return;
} }
logger.info("Checking length"); logger.info("Checking length");
if (!firstpwd.equals(object)) { if (!firstpwd.equals(object)) {
message("userview.passwordsDontMatch"); message(context, ui, "userview.passwordsDontMatch");
} }
logger.info("Done pwd"); logger.info("Done pwd");
} }
private void message(FacesContext context, UIComponent ui, String message, Object... obj) {
((UIInput) ui).setValid(false);
FacesMessage msg = new FacesMessage(I18n.get(message, obj));
context.addMessage(ui.getClientId(context), msg);
}
@Deprecated
private void message(String msg, Object... obj) { private void message(String msg, Object... obj) {
message(new FacesMessage(I18n.get(msg, obj))); message(new FacesMessage(I18n.get(msg, obj)));
} }
@Deprecated
private void message(FacesMessage msg) { private void message(FacesMessage msg) {
throw new ValidatorException(msg); throw new ValidatorException(msg);
......
...@@ -10,6 +10,7 @@ import javax.enterprise.inject.Produces; ...@@ -10,6 +10,7 @@ import javax.enterprise.inject.Produces;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Named; import javax.inject.Named;
import org.primefaces.event.CaptureEvent;
import org.primefaces.model.CroppedImage; import org.primefaces.model.CroppedImage;
import org.primefaces.model.UploadedFile; import org.primefaces.model.UploadedFile;
import org.slf4j.Logger; import org.slf4j.Logger;
...@@ -80,6 +81,13 @@ public class UserView extends GenericCDIView { ...@@ -80,6 +81,13 @@ public class UserView extends GenericCDIView {
return permbean.getCurrentUser(); return permbean.getCurrentUser();
} }
public void oncapture(CaptureEvent captureEvent) {
byte[] data = captureEvent.getData();
UserImage img = userbean.uploadImage(user, "image/png", data, "userimage.png", "Uploaded image");
user = userbean.getEventUser(img.getUser());
}
@Produces @Produces
@SelectedUser @SelectedUser
public EventUser getSelectedUser() { public EventUser getSelectedUser() {
...@@ -109,18 +117,27 @@ public class UserView extends GenericCDIView { ...@@ -109,18 +117,27 @@ public class UserView extends GenericCDIView {
public String crop() public String crop()
{ {
logger.info("Cropped image {}x{}", croppedImage.getLeft(), croppedImage.getTop());
// UserImage img = userbean.uploadImage(user, "image/jpg",
// croppedImage.getBytes(), "cropped" +
// croppedImage.getOriginalFilename(), "Cropped image");
// user = userbean.getEventUser(img.getUser());
// croppedImage = null;
logger.info("Cropped image {}x{}", croppedImage.getLeft(),
croppedImage.getTop());
logger.info("Cropped data bytesize {}, type {}", croppedImage.getBytes().length, croppedImage.getOriginalFilename()); logger.info("Cropped data bytesize {}, type {}", croppedImage.getBytes().length, croppedImage.getOriginalFilename());
UserImage newImage;
try { try {
newImage = userbean.saveCroppedImage(user.getCurrentImage(), UserImage newImage =
croppedImage.getLeft(), croppedImage.getTop(), croppedImage.getWidth(), croppedImage.getHeight()); userbean.saveCroppedImage(user.getCurrentImage(),
croppedImage.getLeft(), croppedImage.getTop(),
croppedImage.getWidth(), croppedImage.getHeight());
user = userbean.getEventUser(newImage.getUser()); user = userbean.getEventUser(newImage.getUser());
} catch (IOException e) { } catch (IOException e) {
logger.info("Error converting image", e); logger.info("Error converting image", e);
super.addFaceMessage("user.errorConvertingImage"); super.addFaceMessage("user.errorConvertingImage");
} }
return "redirToUserimage"; return null;
} }
public String makeCard() public String makeCard()
......
...@@ -3,6 +3,7 @@ package fi.insomnia.bortal.web.helper; ...@@ -3,6 +3,7 @@ package fi.insomnia.bortal.web.helper;
import java.util.MissingResourceException; import java.util.MissingResourceException;
import java.util.ResourceBundle; import java.util.ResourceBundle;
import javax.ejb.EJB;
import javax.enterprise.context.RequestScoped; import javax.enterprise.context.RequestScoped;
import javax.faces.context.FacesContext; import javax.faces.context.FacesContext;
import javax.inject.Inject; import javax.inject.Inject;
...@@ -12,6 +13,8 @@ import javax.servlet.http.HttpServletRequest; ...@@ -12,6 +13,8 @@ import javax.servlet.http.HttpServletRequest;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.beans.EventBeanLocal;
@Named @Named
@RequestScoped @RequestScoped
public class LayoutView { public class LayoutView {
...@@ -20,6 +23,8 @@ public class LayoutView { ...@@ -20,6 +23,8 @@ public class LayoutView {
private FacesContext context; private FacesContext context;
private ResourceBundle rb; private ResourceBundle rb;
private String pagename; private String pagename;
@EJB
private EventBeanLocal eventbean;
private static final Logger logger = LoggerFactory.getLogger(LayoutView.class); private static final Logger logger = LoggerFactory.getLogger(LayoutView.class);
public void init() { public void init() {
...@@ -64,7 +69,7 @@ public class LayoutView { ...@@ -64,7 +69,7 @@ public class LayoutView {
public String getHeader() { public String getHeader() {
return new StringBuilder().append(localize("global.eventname")).append(" - ") return new StringBuilder().append(eventbean.getCurrentEvent().getName()).append(" - ")
.append(localize(new StringBuilder("submenu").append(getPagepath().replace('/', '.')).toString())).toString(); .append(localize(new StringBuilder("submenu").append(getPagepath().replace('/', '.')).toString())).toString();
} }
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!