Commit 76da913a by Tuukka Kivilahti

Merge branch 'master' of codecrew.fi:bortal

2 parents 071044bb 9346cd56
Showing with 392 additions and 148 deletions
...@@ -38,14 +38,7 @@ import fi.insomnia.bortal.utilities.I18n; ...@@ -38,14 +38,7 @@ import fi.insomnia.bortal.utilities.I18n;
*/ */
@Stateless @Stateless
@LocalBean @LocalBean
@DeclareRoles({ @DeclareRoles({ BillPermission.S_CREATE_BILL, BillPermission.S_READ_ALL, BillPermission.S_VIEW_OWN, BillPermission.S_WRITE_ALL, SpecialPermission.S_USER, SpecialPermission.S_VERKKOMAKSU_CHECK, })
BillPermission.S_CREATE_BILL,
BillPermission.S_READ_ALL,
BillPermission.S_VIEW_OWN,
BillPermission.S_WRITE_ALL,
SpecialPermission.S_USER,
SpecialPermission.S_VERKKOMAKSU_CHECK,
})
public class BillBean implements BillBeanLocal { public class BillBean implements BillBeanLocal {
private static final Logger logger = LoggerFactory.getLogger(BillBean.class); private static final Logger logger = LoggerFactory.getLogger(BillBean.class);
...@@ -92,7 +85,8 @@ public class BillBean implements BillBeanLocal { ...@@ -92,7 +85,8 @@ public class BillBean implements BillBeanLocal {
EventUser currentuser = permbean.getCurrentUser(); EventUser currentuser = permbean.getCurrentUser();
logger.debug("bill {} user {}", bill, currentuser); logger.debug("bill {} user {}", bill, currentuser);
if (bill != null && !currentuser.equals(bill.getUser()) && !permbean.hasPermission(BillPermission.READ_ALL)) { if (bill != null && !currentuser.equals(bill.getUser())
&& !permbean.hasPermission(BillPermission.READ_ALL)) {
bill = null; bill = null;
} }
return bill; return bill;
...@@ -197,26 +191,29 @@ public class BillBean implements BillBeanLocal { ...@@ -197,26 +191,29 @@ public class BillBean implements BillBeanLocal {
@Override @Override
@RolesAllowed(BillPermission.S_READ_ALL) @RolesAllowed(BillPermission.S_READ_ALL)
public Collection<BillSummary> getBillLineSummary() { public Collection<BillSummary> getBillLineSummary() {
Collection<BillSummary> ret = billLineFacade.getLineSummary(eventbean.getCurrentEvent()); Collection<BillSummary> ret = billLineFacade.getLineSummary(eventbean
.getCurrentEvent());
return ret; return ret;
} }
@Override @Override
@RolesAllowed({ BillPermission.S_WRITE_ALL, SpecialPermission.S_VERKKOMAKSU_CHECK }) @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) {
{
throw new EJBException("Bill already marked paid!"); throw new EJBException("Bill already marked paid!");
} }
bill = billFacade.reload(bill); bill = billFacade.reload(bill);
Product creditproduct = productBean.findCreditProduct(); Product creditproduct = productBean.findCreditProduct();
EventUser user = bill.getUser(); EventUser user = bill.getUser();
AccountEvent ac = productBean.createAccountEvent(creditproduct, bill.totalPrice(), user); AccountEvent ac = productBean.createAccountEvent(creditproduct,
bill.totalPrice(), user);
logger.info("Created creditentry. {}, userproducts {}", ac, user.getAccountEvents().size()); logger.info("Created creditentry. {}, userproducts {}", ac, user
.getAccountEvents().size());
ac.setDelivered(when); ac.setDelivered(when);
ac.setEventTime(when); ac.setEventTime(when);
...@@ -231,17 +228,24 @@ public class BillBean implements BillBeanLocal { ...@@ -231,17 +228,24 @@ 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
&& prod.getProductFlags().contains(ProductFlag.PREPAID_INSTANT_CREATE)) { && prod.getProductFlags().contains(
ProductFlag.PREPAID_INSTANT_CREATE)) {
logger.debug("Creating Bill prepaidInstant product {}, {}", prod.getName(), bl.getQuantity());
if (prod.getProductFlags().contains(ProductFlag.RESERVE_PLACE_WHEN_BOUGHT) logger.debug("Creating Bill prepaidInstant product {}, {}",
|| prod.getProductFlags().contains(ProductFlag.CREATE_NEW_PLACE_WHEN_BOUGHT)) prod.getName(), bl.getQuantity());
{ if (prod.getProductFlags().contains(
placebean.lockPlaceProduct(bill.getUser(), prod, bl.getQuantity()); ProductFlag.RESERVE_PLACE_WHEN_BOUGHT)
|| prod.getProductFlags().contains(
ProductFlag.CREATE_NEW_PLACE_WHEN_BOUGHT)) {
placebean.lockPlaceProduct(bill.getUser(), prod,
bl.getQuantity());
} }
AccountEvent ac2 = productPBean.createAccountEvent(prod, bl.getQuantity(), user, bill.getSentDate()); AccountEvent ac2 = productPBean.createAccountEvent(prod,
logger.info("Created ac from product. {}, userproducts {}", ac2, user.getAccountEvents().size()); bl.getQuantity(), user, bill.getSentDate(), bl.getFoodwave());
logger.info("Created ac from product. {}, userproducts {}",
ac2, user.getAccountEvents().size());
ac2.setSeller(permbean.getCurrentUser()); ac2.setSeller(permbean.getCurrentUser());
} }
...@@ -249,7 +253,9 @@ public class BillBean implements BillBeanLocal { ...@@ -249,7 +253,9 @@ public class BillBean implements BillBeanLocal {
} }
MailMessage msg = new MailMessage(); MailMessage msg = new MailMessage();
msg.setSubject(I18n.get("bill.billMarkedPaidMail.subject")); msg.setSubject(I18n.get("bill.billMarkedPaidMail.subject"));
msg.setMessage(I18n.get("bill.billMarkedPaidMail.message", (bill.getBillNumber() == null) ? "----" : bill.getBillNumber().toString())); msg.setMessage(I18n.get("bill.billMarkedPaidMail.message", (bill
.getBillNumber() == null) ? "----" : bill.getBillNumber()
.toString()));
msg.setTo(bill.getUser().getUser()); msg.setTo(bill.getUser().getUser());
utilbean.sendMail(msg); utilbean.sendMail(msg);
eventUserFacade.flush(); eventUserFacade.flush();
...@@ -259,9 +265,13 @@ public class BillBean implements BillBeanLocal { ...@@ -259,9 +265,13 @@ public class BillBean implements BillBeanLocal {
@Override @Override
@RolesAllowed({ BillPermission.S_CREATE_BILL, BillPermission.S_WRITE_ALL }) @RolesAllowed({ BillPermission.S_CREATE_BILL, BillPermission.S_WRITE_ALL })
public void createBill(Bill bill) { public void createBill(Bill bill) {
if (!permbean.isCurrentUser(bill.getUser()) && !permbean.hasPermission(BillPermission.WRITE_ALL)) { if (!permbean.isCurrentUser(bill.getUser())
loggingBean.logMessage(SecurityLogType.permissionDenied, permbean.getCurrentUser(), "Not enought rights to create bill for user "); && !permbean.hasPermission(BillPermission.WRITE_ALL)) {
throw new EJBAccessException("Could not create bill for another user"); loggingBean.logMessage(SecurityLogType.permissionDenied,
permbean.getCurrentUser(),
"Not enought rights to create bill for user ");
throw new EJBAccessException(
"Could not create bill for another user");
} }
billFacade.create(bill); billFacade.create(bill);
generateBillNumber(bill); generateBillNumber(bill);
...@@ -275,9 +285,13 @@ public class BillBean implements BillBeanLocal { ...@@ -275,9 +285,13 @@ 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(EventUser user) { public List<Bill> find(EventUser user) {
if (!permbean.isCurrentUser(user) && !permbean.hasPermission(BillPermission.READ_ALL)) { if (!permbean.isCurrentUser(user)
loggingBean.logMessage(SecurityLogType.permissionDenied, permbean.getCurrentUser(), "Not enought rights to get bill list for user "); && !permbean.hasPermission(BillPermission.READ_ALL)) {
throw new EJBAccessException("Could not list bills for another 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");
} }
return billFacade.find(user); return billFacade.find(user);
} }
......
...@@ -19,6 +19,7 @@ import com.pdfjet.PDF; ...@@ -19,6 +19,7 @@ import com.pdfjet.PDF;
import com.pdfjet.Page; import com.pdfjet.Page;
import com.pdfjet.TextLine; import com.pdfjet.TextLine;
import fi.insomnia.bortal.facade.CardTemplateFacade;
import fi.insomnia.bortal.facade.EventUserFacade; import fi.insomnia.bortal.facade.EventUserFacade;
import fi.insomnia.bortal.model.CardTemplate; import fi.insomnia.bortal.model.CardTemplate;
import fi.insomnia.bortal.model.EventUser; import fi.insomnia.bortal.model.EventUser;
...@@ -36,6 +37,7 @@ public class CardPrintBean implements CardPrintBeanLocal { ...@@ -36,6 +37,7 @@ public class CardPrintBean implements CardPrintBeanLocal {
@EJB private UserBean userBean; @EJB private UserBean userBean;
@EJB private EventUserFacade eventUserFacade; @EJB private EventUserFacade eventUserFacade;
@EJB private CardTemplateBean cardTemplateBean; @EJB private CardTemplateBean cardTemplateBean;
@EJB private CardTemplateFacade cardTemplateFacade;
/** /**
* Default constructor. * Default constructor.
...@@ -70,6 +72,8 @@ public class CardPrintBean implements CardPrintBeanLocal { ...@@ -70,6 +72,8 @@ public class CardPrintBean implements CardPrintBeanLocal {
printedCard.setPrintCount(printedCard.getPrintCount()+1); printedCard.setPrintCount(printedCard.getPrintCount()+1);
System.out.println("Print count "+printedCard.getPrintCount()); System.out.println("Print count "+printedCard.getPrintCount());
} }
cardTemplateFacade.flush();
} }
private MassPrintResult constructPdf(List<EventUser> users) throws Exception { private MassPrintResult constructPdf(List<EventUser> users) throws Exception {
......
...@@ -20,6 +20,7 @@ import org.slf4j.LoggerFactory; ...@@ -20,6 +20,7 @@ import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.enums.apps.UserPermission; import fi.insomnia.bortal.enums.apps.UserPermission;
import fi.insomnia.bortal.facade.CardTemplateFacade; import fi.insomnia.bortal.facade.CardTemplateFacade;
import fi.insomnia.bortal.facade.EventUserFacade; import fi.insomnia.bortal.facade.EventUserFacade;
import fi.insomnia.bortal.facade.GroupMembershipFacade;
import fi.insomnia.bortal.facade.LanEventPropertyFacade; import fi.insomnia.bortal.facade.LanEventPropertyFacade;
import fi.insomnia.bortal.facade.PrintedCardFacade; import fi.insomnia.bortal.facade.PrintedCardFacade;
import fi.insomnia.bortal.model.CardTemplate; import fi.insomnia.bortal.model.CardTemplate;
...@@ -68,6 +69,8 @@ public class CardTemplateBean implements CardTemplateBeanLocal { ...@@ -68,6 +69,8 @@ public class CardTemplateBean implements CardTemplateBeanLocal {
@EJB @EJB
private LanEventPropertyFacade eventPropertyFacade; private LanEventPropertyFacade eventPropertyFacade;
@EJB
private GroupMembershipFacade gmFacade;
// @Override // @Override
// @RolesAllowed("USER_MANAGEMENT/WRITE") // @RolesAllowed("USER_MANAGEMENT/WRITE")
...@@ -151,8 +154,8 @@ public class CardTemplateBean implements CardTemplateBeanLocal { ...@@ -151,8 +154,8 @@ public class CardTemplateBean implements CardTemplateBeanLocal {
pc.setTemplate(roleCard); pc.setTemplate(roleCard);
pc.setUser(user); pc.setUser(user);
// user.getPrintedCards().add(pc); user.getPrintedCards().add(pc);
printedcardfacade.create(pc); // printedcardfacade.create(pc);
biggestCard = pc; biggestCard = pc;
logger.info("User {} has too little power old role {} New role {}", new Object[] { user.getUser().getLogin(), existingPower, newPower }); logger.info("User {} has too little power old role {} New role {}", new Object[] { user.getUser().getLogin(), existingPower, newPower });
} else if (existingPower > newPower) { } else if (existingPower > newPower) {
...@@ -179,6 +182,7 @@ public class CardTemplateBean implements CardTemplateBeanLocal { ...@@ -179,6 +182,7 @@ public class CardTemplateBean implements CardTemplateBeanLocal {
@Override @Override
@RolesAllowed(UserPermission.S_VIEW_ALL) @RolesAllowed(UserPermission.S_VIEW_ALL)
public CardTemplate getUsersCardtype(EventUser user) { public CardTemplate getUsersCardtype(EventUser user) {
List<Role> roles = userbean.findUsersRoles(user); List<Role> roles = userbean.findUsersRoles(user);
CardTemplate greatestTemplate = null; CardTemplate greatestTemplate = null;
...@@ -193,17 +197,17 @@ public class CardTemplateBean implements CardTemplateBeanLocal { ...@@ -193,17 +197,17 @@ public class CardTemplateBean implements CardTemplateBeanLocal {
} }
@Override // @Override
public PrintedCard setRfidUid(String tag, EventUser user) { // public PrintedCard setRfidUid(String tag, EventUser user) {
PrintedCard ct = checkPrintedCard(user); // PrintedCard ct = checkPrintedCard(user);
return setRfidUid(tag, ct); // return setRfidUid(tag, ct);
} // }
@Override // @Override
public PrintedCard setRfidUid(String tag, PrintedCard card) { // public PrintedCard setRfidUid(String tag, PrintedCard card) {
card.setRfidUid(tag); // card.setRfidUid(tag);
return printedcardfacade.merge(card); // return printedcardfacade.merge(card);
} // }
@Override @Override
@RolesAllowed(UserPermission.S_WRITE_ROLES) @RolesAllowed(UserPermission.S_WRITE_ROLES)
......
...@@ -82,8 +82,6 @@ public class MenuBean implements MenuBeanLocal { ...@@ -82,8 +82,6 @@ public class MenuBean implements MenuBeanLocal {
frontTopnavi.addPage(menuitemfacade.findOrCreate("/auth/passwordChanged"), null).setVisible(false); frontTopnavi.addPage(menuitemfacade.findOrCreate("/auth/passwordChanged"), null).setVisible(false);
frontTopnavi.addPage(menuitemfacade.findOrCreate("/auth/notauthorized"), 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");
userTopnavi.addPage(menuitemfacade.findOrCreate("/user/edit"), UserPermission.VIEW_SELF).setHeader("submenu.user.userlinks"); userTopnavi.addPage(menuitemfacade.findOrCreate("/user/edit"), UserPermission.VIEW_SELF).setHeader("submenu.user.userlinks");
...@@ -95,10 +93,11 @@ public class MenuBean implements MenuBeanLocal { ...@@ -95,10 +93,11 @@ public class MenuBean implements MenuBeanLocal {
MenuNavigation placemapTopmenu = usernavi.addPage(null, null); MenuNavigation placemapTopmenu = usernavi.addPage(null, null);
placemapTopmenu.setKey("topnavi.placemap"); placemapTopmenu.setKey("topnavi.placemap");
placemapTopmenu.addPage(menuitemfacade.findOrCreate("/place/placemap"), MapPermission.VIEW); placemapTopmenu.addPage(menuitemfacade.findOrCreate("/place/placemap"), MapPermission.VIEW);
MenuNavigation actionlogTopmenu = usernavi.addPage(null,null); // MenuNavigation actionlogTopmenu = usernavi.addPage(null, null);
actionlogTopmenu.setKey("topnavi.actionlog"); // actionlogTopmenu.setKey("topnavi.actionlog");
actionlogTopmenu.addPage(menuitemfacade.findOrCreate("/actionlog/messagelist"), ContentPermission.MANAGE_ACTIONLOG); // actionlogTopmenu.addPage(menuitemfacade.findOrCreate("/actionlog/messagelist"),
// ContentPermission.MANAGE_ACTIONLOG);
MenuNavigation shopTopmenu = usernavi.addPage(null, null); MenuNavigation shopTopmenu = usernavi.addPage(null, null);
shopTopmenu.setKey("topnavi.shop"); shopTopmenu.setKey("topnavi.shop");
...@@ -106,7 +105,6 @@ public class MenuBean implements MenuBeanLocal { ...@@ -106,7 +105,6 @@ public class MenuBean implements MenuBeanLocal {
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("/bill/showBill"), 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/failure"), null).setVisible(false);
shopTopmenu.addPage(menuitemfacade.findOrCreate("/svm/notification"), 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/pending"), null).setVisible(false);
...@@ -115,10 +113,10 @@ public class MenuBean implements MenuBeanLocal { ...@@ -115,10 +113,10 @@ public class MenuBean implements MenuBeanLocal {
shopTopmenu.addPage(menuitemfacade.findOrCreate("/checkout/delayed"), null).setVisible(false); shopTopmenu.addPage(menuitemfacade.findOrCreate("/checkout/delayed"), null).setVisible(false);
shopTopmenu.addPage(menuitemfacade.findOrCreate("/checkout/reject"), null).setVisible(false); shopTopmenu.addPage(menuitemfacade.findOrCreate("/checkout/reject"), null).setVisible(false);
shopTopmenu.addPage(menuitemfacade.findOrCreate("/checkout/return"), null).setVisible(false); shopTopmenu.addPage(menuitemfacade.findOrCreate("/checkout/return"), null).setVisible(false);
MenuNavigation foodwaveTopmenu = usernavi.addPage(null, null); MenuNavigation foodwaveTopmenu = usernavi.addPage(null, null);
foodwaveTopmenu.setKey("topnavi.foodwave"); foodwaveTopmenu.setKey("topnavi.foodwave");
foodwaveTopmenu.addPage(menuitemfacade.findOrCreate("/foodwave/list"), BillPermission.VIEW_OWN); foodwaveTopmenu.addPage(menuitemfacade.findOrCreate("/foodwave/list"), ShopPermission.SHOP_FOODWAVE);
MenuNavigation pollTopmenu = usernavi.addPage(null, null); MenuNavigation pollTopmenu = usernavi.addPage(null, null);
pollTopmenu.setKey("topnavi.poll"); pollTopmenu.setKey("topnavi.poll");
...@@ -134,6 +132,7 @@ public class MenuBean implements MenuBeanLocal { ...@@ -134,6 +132,7 @@ public class MenuBean implements MenuBeanLocal {
MenuNavigation adminnavi = new MenuNavigation(ev, "supernavi.admin"); MenuNavigation adminnavi = new MenuNavigation(ev, "supernavi.admin");
navifacade.create(adminnavi); navifacade.create(adminnavi);
MenuNavigation adminuser = adminnavi.addPage(null, null); MenuNavigation adminuser = adminnavi.addPage(null, null);
adminuser.setKey("topnavi.usermgmt"); adminuser.setKey("topnavi.usermgmt");
adminuser.addPage(menuitemfacade.findOrCreate("/useradmin/list"), UserPermission.VIEW_ALL).setHeader("submenu.user.manageuserlinks"); adminuser.addPage(menuitemfacade.findOrCreate("/useradmin/list"), UserPermission.VIEW_ALL).setHeader("submenu.user.manageuserlinks");
...@@ -147,6 +146,7 @@ public class MenuBean implements MenuBeanLocal { ...@@ -147,6 +146,7 @@ public class MenuBean implements MenuBeanLocal {
adminuser.addPage(menuitemfacade.findOrCreate("/useradmin/createCardTemplate"), UserPermission.WRITE_ROLES); adminuser.addPage(menuitemfacade.findOrCreate("/useradmin/createCardTemplate"), UserPermission.WRITE_ROLES);
adminuser.addPage(menuitemfacade.findOrCreate("/useradmin/editCardTemplate"), null).setVisible(false); adminuser.addPage(menuitemfacade.findOrCreate("/useradmin/editCardTemplate"), null).setVisible(false);
adminuser.addPage(menuitemfacade.findOrCreate("/shop/shopToUser"), null).setVisible(false); adminuser.addPage(menuitemfacade.findOrCreate("/shop/shopToUser"), null).setVisible(false);
adminuser.addPage(menuitemfacade.findOrCreate("/shop/assocToUser"), null).setVisible(false);
adminuser.addPage(menuitemfacade.findOrCreate("/useradmin/edit"), UserPermission.VIEW_ALL).setVisible(false); adminuser.addPage(menuitemfacade.findOrCreate("/useradmin/edit"), UserPermission.VIEW_ALL).setVisible(false);
adminuser.addPage(menuitemfacade.findOrCreate("/useradmin/changePassword"), UserPermission.VIEW_ALL).setVisible(false); adminuser.addPage(menuitemfacade.findOrCreate("/useradmin/changePassword"), UserPermission.VIEW_ALL).setVisible(false);
...@@ -154,6 +154,7 @@ public class MenuBean implements MenuBeanLocal { ...@@ -154,6 +154,7 @@ public class MenuBean implements MenuBeanLocal {
adminuser.addPage(menuitemfacade.findOrCreate("/place/adminGroups"), UserPermission.VIEW_ALL).setVisible(false); adminuser.addPage(menuitemfacade.findOrCreate("/place/adminGroups"), UserPermission.VIEW_ALL).setVisible(false);
adminuser.addPage(menuitemfacade.findOrCreate("/place/adminInsertToken"), UserPermission.VIEW_ALL).setVisible(false); adminuser.addPage(menuitemfacade.findOrCreate("/place/adminInsertToken"), UserPermission.VIEW_ALL).setVisible(false);
adminuser.addPage(menuitemfacade.findOrCreate("/useradmin/sendPicture"), UserPermission.VIEW_ALL).setVisible(false); adminuser.addPage(menuitemfacade.findOrCreate("/useradmin/sendPicture"), UserPermission.VIEW_ALL).setVisible(false);
adminuser.addPage(menuitemfacade.findOrCreate("/useradmin/showTakePicture"), UserPermission.VIEW_ALL).setHeader("submenu.user.other");
// MenuNavigation initUser = adminnavi.addPage(null, null); // MenuNavigation initUser = adminnavi.addPage(null, null);
// initUser.setKey("topnavi.userinit"); // initUser.setKey("topnavi.userinit");
...@@ -163,7 +164,7 @@ public class MenuBean implements MenuBeanLocal { ...@@ -163,7 +164,7 @@ public class MenuBean implements MenuBeanLocal {
usershop.setKey("topnavi.adminshop"); usershop.setKey("topnavi.adminshop");
usershop.addPage(menuitemfacade.findOrCreate("/shop/showReaderEvents"), ShopPermission.SHOP_TO_OTHERS); usershop.addPage(menuitemfacade.findOrCreate("/shop/showReaderEvents"), ShopPermission.SHOP_TO_OTHERS);
usershop.addPage(menuitemfacade.findOrCreate("/shop/listReaders"), ShopPermission.SHOP_TO_OTHERS); usershop.addPage(menuitemfacade.findOrCreate("/shop/listReaders"), ShopPermission.SHOP_TO_OTHERS);
usershop.addPage(menuitemfacade.findOrCreate("/shop/editReader"), ShopPermission.SHOP_TO_OTHERS); usershop.addPage(menuitemfacade.findOrCreate("/shop/editReader"), ShopPermission.SHOP_TO_OTHERS).setVisible(false);
MenuNavigation billnavi = adminnavi.addPage(null, null); MenuNavigation billnavi = adminnavi.addPage(null, null);
billnavi.setKey("topnavi.billing"); billnavi.setKey("topnavi.billing");
...@@ -189,6 +190,11 @@ public class MenuBean implements MenuBeanLocal { ...@@ -189,6 +190,11 @@ public class MenuBean implements MenuBeanLocal {
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); contentnavi.addPage(menuitemfacade.findOrCreate("/pages/edit"), null).setVisible(false);
MenuNavigation lognavi = adminnavi.addPage(null, null);
lognavi.setKey("topnavi.log");
lognavi.addPage(menuitemfacade.findOrCreate("/actionlog/messagelist"), UserPermission.VIEW_ALL);
lognavi.addPage(menuitemfacade.findOrCreate("/actionlog/taskview"), UserPermission.VIEW_ALL).setVisible(false);
} }
@Override @Override
......
...@@ -18,6 +18,7 @@ import fi.insomnia.bortal.model.AccountEvent; ...@@ -18,6 +18,7 @@ import fi.insomnia.bortal.model.AccountEvent;
import fi.insomnia.bortal.model.Discount; import fi.insomnia.bortal.model.Discount;
import fi.insomnia.bortal.model.DiscountInstance; import fi.insomnia.bortal.model.DiscountInstance;
import fi.insomnia.bortal.model.EventUser; import fi.insomnia.bortal.model.EventUser;
import fi.insomnia.bortal.model.FoodWave;
import fi.insomnia.bortal.model.Product; import fi.insomnia.bortal.model.Product;
/** /**
...@@ -31,7 +32,8 @@ public class ProductPBean { ...@@ -31,7 +32,8 @@ public class ProductPBean {
private PermissionBean permbean; private PermissionBean permbean;
@EJB @EJB
private AccountEventFacade accounteventfacade; private AccountEventFacade accounteventfacade;
private static final Logger logger = LoggerFactory.getLogger(ProductPBean.class); private static final Logger logger = LoggerFactory
.getLogger(ProductPBean.class);
/** /**
* Default constructor. * Default constructor.
...@@ -40,6 +42,11 @@ public class ProductPBean { ...@@ -40,6 +42,11 @@ public class ProductPBean {
// TODO Auto-generated constructor stub // TODO Auto-generated constructor stub
} }
public AccountEvent createAccountEvent(Product product,
BigDecimal quantity, EventUser user, Calendar date) {
return this.createAccountEvent(product, quantity, user, date, null);
}
/** /**
* Creates new AccountEvent from provided product to provided user <br> * Creates new AccountEvent from provided product to provided user <br>
* <strong>Notice</strong>, that this function expects the user parameter to * <strong>Notice</strong>, that this function expects the user parameter to
...@@ -56,11 +63,13 @@ public class ProductPBean { ...@@ -56,11 +63,13 @@ public class ProductPBean {
* AccountEvent creation time * AccountEvent creation time
* @return The created AccountEvent entity * @return The created AccountEvent entity
*/ */
public AccountEvent createAccountEvent(Product product, BigDecimal quantity, EventUser user, Calendar date) { public AccountEvent createAccountEvent(Product product,
BigDecimal quantity, EventUser user, Calendar date,
FoodWave foodwave) {
if (!product.getEvent().equals(user.getEvent())) if (!product.getEvent().equals(user.getEvent())) {
{ throw new EJBException(
throw new EJBException("Trying to create accountevent for different event in user and product"); "Trying to create accountevent for different event in user and product");
} }
BigDecimal unitPrice = product.getPrice().negate(); BigDecimal unitPrice = product.getPrice().negate();
...@@ -69,11 +78,16 @@ public class ProductPBean { ...@@ -69,11 +78,16 @@ public class ProductPBean {
unitPrice = unitPrice.multiply(d.getPercentage()); unitPrice = unitPrice.multiply(d.getPercentage());
} }
AccountEvent ret = new AccountEvent(user, product, unitPrice, quantity, Calendar.getInstance()); AccountEvent ret = new AccountEvent(user, product, unitPrice, quantity,
Calendar.getInstance());
ret.setDelivered(Calendar.getInstance()); ret.setDelivered(Calendar.getInstance());
ret.setSeller(permbean.getCurrentUser()); ret.setSeller(permbean.getCurrentUser());
if (foodwave != null) {
ret.setFoodWave(foodwave);
}
List<DiscountInstance> accEventdiscounts = ret.getDiscountInstances(); List<DiscountInstance> accEventdiscounts = ret.getDiscountInstances();
for (Discount d : discounts) { for (Discount d : discounts) {
// discountsArray.add(discInst); // discountsArray.add(discInst);
......
...@@ -179,8 +179,9 @@ public class ReaderBean implements ReaderBeanLocal { ...@@ -179,8 +179,9 @@ public class ReaderBean implements ReaderBeanLocal {
public ReaderEvent assocTagToCard(String tag, String readerIdent, PrintedCard card) { public ReaderEvent assocTagToCard(String tag, String readerIdent, PrintedCard card) {
Reader reader = readerfacade.findOrCreateByIdent(readerIdent); Reader reader = readerfacade.findOrCreateByIdent(readerIdent);
card = cardfacade.reload(card);
card = cardtemplatebean.setRfidUid(tag, card); card.setRfidUid(tag);
// card = cardtemplatebean.setRfidUid(tag, card);
return createReaderEvent(reader, card); return createReaderEvent(reader, card);
} }
......
...@@ -143,7 +143,7 @@ public class UserBean implements UserBeanLocal { ...@@ -143,7 +143,7 @@ public class UserBean implements UserBeanLocal {
} }
public List<Role> localFindUsersRoles(EventUser u) { public ArrayList<Role> localFindUsersRoles(EventUser u) {
Set<Role> checkedRoles = new HashSet<Role>(); Set<Role> checkedRoles = new HashSet<Role>();
if (u != null) if (u != null)
{ {
...@@ -163,6 +163,10 @@ public class UserBean implements UserBeanLocal { ...@@ -163,6 +163,10 @@ public class UserBean implements UserBeanLocal {
{ {
addRecursive(checkedRoles, member.getPlaceReservation().getProvidesRole()); addRecursive(checkedRoles, member.getPlaceReservation().getProvidesRole());
} }
if (member.getPlaceReservation().getProduct() != null)
{
addRecursive(checkedRoles, member.getPlaceReservation().getProduct().getProvides());
}
} }
} }
} }
......
...@@ -13,6 +13,7 @@ import javax.persistence.criteria.From; ...@@ -13,6 +13,7 @@ import javax.persistence.criteria.From;
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.enums.DatabaseHasCompare;
import fi.insomnia.bortal.enums.DatabaseValueCompare; import fi.insomnia.bortal.enums.DatabaseValueCompare;
import fi.insomnia.bortal.facade.callbacks.EventLimiter; import fi.insomnia.bortal.facade.callbacks.EventLimiter;
import fi.insomnia.bortal.facade.callbacks.EventUserAccountSaldoPredicate; import fi.insomnia.bortal.facade.callbacks.EventUserAccountSaldoPredicate;
...@@ -112,17 +113,18 @@ public class EventUserFacade extends IntegerPkGenericFacade<EventUser> { ...@@ -112,17 +113,18 @@ public class EventUserFacade extends IntegerPkGenericFacade<EventUser> {
{ {
callbacks.add(new EventUserAccountSaldoPredicate(query.getAccountSaldo(), query.getAccountSaldoCompare())); callbacks.add(new EventUserAccountSaldoPredicate(query.getAccountSaldo(), query.getAccountSaldoCompare()));
} }
if (query.getRequireImage() != null && !query.getRequireImage().equals(DatabaseHasCompare.NONE))
{
}
CriteriaBuilder cb = getEm().getCriteriaBuilder(); CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<EventUser> listCQuery = cb.createQuery(EventUser.class); CriteriaQuery<EventUser> listCQuery = cb.createQuery(EventUser.class);
CriteriaQuery<Long> countCQuery = cb.createQuery(Long.class); CriteriaQuery<Long> countCQuery = cb.createQuery(Long.class);
From<?, EventUser> listRoot = null; From<?, EventUser> listRoot = searchCallbacks(listCQuery, callbacks, EventUser.class);
From<?, EventUser> countRoot = null; From<?, EventUser> countRoot = searchCallbacks(countCQuery, callbacks, EventUser.class);
listRoot = searchCallbacks(listCQuery, callbacks, EventUser.class);
countRoot = searchCallbacks(countCQuery, callbacks, EventUser.class);
listCQuery.select(listRoot); listCQuery.select(listRoot);
countCQuery.select(cb.count(countRoot)); countCQuery.select(cb.count(countRoot));
......
...@@ -34,6 +34,6 @@ public class PlaceGroupFacade extends IntegerPkGenericFacade<PlaceGroup> { ...@@ -34,6 +34,6 @@ public class PlaceGroupFacade extends IntegerPkGenericFacade<PlaceGroup> {
cb.equal(root.get(PlaceGroup_.creator), user) cb.equal(root.get(PlaceGroup_.creator), user)
); );
return getEm().createQuery(cq).getResultList(); return getEm().createQuery(cq).getResultList();
} }
} }
...@@ -21,10 +21,6 @@ public interface CardTemplateBeanLocal extends EntityFinderBean<CardTemplate> { ...@@ -21,10 +21,6 @@ public interface CardTemplateBeanLocal extends EntityFinderBean<CardTemplate> {
void checkAllUsersCardRights(); void checkAllUsersCardRights();
PrintedCard setRfidUid(String tag, EventUser user);
PrintedCard setRfidUid(String tag, PrintedCard card);
List<PrintedCard> findActiveCards(); List<PrintedCard> findActiveCards();
CardTemplate save(CardTemplate card); CardTemplate save(CardTemplate card);
......
...@@ -4,6 +4,7 @@ import java.math.BigDecimal; ...@@ -4,6 +4,7 @@ import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import fi.insomnia.bortal.enums.DatabaseHasCompare;
import fi.insomnia.bortal.enums.DatabaseValueCompare; import fi.insomnia.bortal.enums.DatabaseValueCompare;
import fi.insomnia.bortal.model.Role; import fi.insomnia.bortal.model.Role;
import fi.insomnia.bortal.utilities.SearchQuery; import fi.insomnia.bortal.utilities.SearchQuery;
...@@ -15,6 +16,7 @@ public class UserSearchQuery extends SearchQuery { ...@@ -15,6 +16,7 @@ public class UserSearchQuery extends SearchQuery {
private List<Role> filterRoles = new ArrayList<Role>(); private List<Role> filterRoles = new ArrayList<Role>();
private boolean onlyThisEvent = true; private boolean onlyThisEvent = true;
private boolean placeAssoc = false; private boolean placeAssoc = false;
private DatabaseHasCompare requireImage = DatabaseHasCompare.NONE;
private BigDecimal accountSaldo; private BigDecimal accountSaldo;
private DatabaseValueCompare accountSaldoCompare = DatabaseValueCompare.NONE; private DatabaseValueCompare accountSaldoCompare = DatabaseValueCompare.NONE;
...@@ -64,4 +66,12 @@ public class UserSearchQuery extends SearchQuery { ...@@ -64,4 +66,12 @@ public class UserSearchQuery extends SearchQuery {
this.placeAssoc = placeAssoc; this.placeAssoc = placeAssoc;
} }
public DatabaseHasCompare getRequireImage() {
return requireImage;
}
public void setRequireImage(DatabaseHasCompare requireImage) {
this.requireImage = requireImage;
}
} }
...@@ -14,6 +14,7 @@ import javax.persistence.Lob; ...@@ -14,6 +14,7 @@ import javax.persistence.Lob;
import javax.persistence.ManyToMany; import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne; import javax.persistence.ManyToOne;
import javax.persistence.OneToMany; import javax.persistence.OneToMany;
import javax.persistence.OrderBy;
import javax.persistence.Table; import javax.persistence.Table;
import org.eclipse.persistence.annotations.OptimisticLocking; import org.eclipse.persistence.annotations.OptimisticLocking;
...@@ -45,6 +46,7 @@ public class FoodWaveTemplate extends GenericEntity { ...@@ -45,6 +46,7 @@ public class FoodWaveTemplate extends GenericEntity {
private List<Product> products; private List<Product> products;
@OneToMany(mappedBy = "template") @OneToMany(mappedBy = "template")
@OrderBy(value = "time")
private List<FoodWave> foodwaves; private List<FoodWave> foodwaves;
public FoodWaveTemplate() { public FoodWaveTemplate() {
......
...@@ -181,12 +181,16 @@ public class MenuNavigation extends GenericEntity implements Comparable<MenuNavi ...@@ -181,12 +181,16 @@ public class MenuNavigation extends GenericEntity implements Comparable<MenuNavi
return sort.compareTo(o.sort); return sort.compareTo(o.sort);
} }
@Transient
private transient Integer pagesort = 0;
// used only for initialization function... // used only for initialization function...
public MenuNavigation addPage(Menuitem item, IAppPermission permission) { public MenuNavigation addPage(Menuitem item, IAppPermission permission) {
if (children == null) { if (children == null) {
children = new ArrayList<MenuNavigation>(); children = new ArrayList<MenuNavigation>();
} }
MenuNavigation add = new MenuNavigation(); MenuNavigation add = new MenuNavigation();
add.setSort(pagesort += 10);
if (item != null) if (item != null)
{ {
add.setKey("submenu" + item.getUrl().replace("/", ".")); add.setKey("submenu" + item.getUrl().replace("/", "."));
......
package fi.insomnia.bortal.enums;
public enum DatabaseHasCompare {
NONE, IS_NULL, NOT_NULL,
}
...@@ -132,6 +132,15 @@ ...@@ -132,6 +132,15 @@
</navigation-case> </navigation-case>
</navigation-rule> </navigation-rule>
<navigation-rule> <navigation-rule>
<display-name>useradmin/sendPicture</display-name>
<from-view-id>/useradmin/sendPicture.xhtml</from-view-id>
<navigation-case>
<from-outcome>accepted</from-outcome>
<to-view-id>/useradmin/edit.xhtml</to-view-id>
<redirect />
</navigation-case>
</navigation-rule>
<navigation-rule>
<display-name>voting/create</display-name> <display-name>voting/create</display-name>
<from-view-id>/voting/create.xhtml</from-view-id> <from-view-id>/voting/create.xhtml</from-view-id>
<navigation-case> <navigation-case>
......
...@@ -9,8 +9,8 @@ ...@@ -9,8 +9,8 @@
</session-config> </session-config>
<context-param> <context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name> <param-name>javax.faces.PROJECT_STAGE</param-name>
<!--<param-value>Production</param-value>--> <param-value>Production</param-value>
<param-value>Development</param-value> <!--<param-value>Development</param-value>-->
</context-param> </context-param>
<context-param> <context-param>
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
<title>Error</title> <title>Error</title>
</h:head> </h:head>
<h:body> <h:body>
<!-- <c:if test="#{sessionHandler.isInDevelopmentMode() eq true}"> --> <!-- <c:if test="#{sessionHandler.isInDevelopmentMode() eq false}"> -->
<h1>#{i18n['error.error']}</h1> <h1>#{i18n['error.error']}</h1>
<p>${i18n['error.contact']} <p>${i18n['error.contact']}
<br/><h:outputText escape="false" style="color: red;" value="#{errorPageView.time}" /><br/><br/> <br/><h:outputText escape="false" style="color: red;" value="#{errorPageView.time}" /><br/><br/>
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
</p> </p>
<!-- </c:if> --> <!-- </c:if> -->
<br/><br/> <br/><br/>
<c:when test="#{sessionHandler.isInDevelopmentMode()}"> <ui:fragment rendered="#{sessionHandler.isInDevelopmentMode()}">
<br/> <br/>
<center> <center>
<img src="#{request.contextPath}/resources/media/error.jpg" /> <img src="#{request.contextPath}/resources/media/error.jpg" />
...@@ -23,6 +23,6 @@ ...@@ -23,6 +23,6 @@
<br/> <br/>
</center> </center>
<h:outputText escape="false" value="#{errorPageView.stackTrace}" /> <h:outputText escape="false" value="#{errorPageView.stackTrace}" />
</c:when> </ui:fragment>
</h:body> </h:body>
</html> </html>
\ No newline at end of file
...@@ -19,7 +19,6 @@ ...@@ -19,7 +19,6 @@
<ui:define name="title"> <ui:define name="title">
<h1>#{i18n['user.shop.title']}</h1> <h1>#{i18n['user.shop.title']}</h1>
<users:usertabs tabId="foodwave" />
</ui:define> </ui:define>
<ui:define name="content"> <ui:define name="content">
Kiitoksia tilauksesta, muista käydä maksamassa tilaukset tiskillä. Kiitoksia tilauksesta, muista käydä maksamassa tilaukset tiskillä.
......
...@@ -18,8 +18,7 @@ ...@@ -18,8 +18,7 @@
</f:metadata> </f:metadata>
<ui:define name="title"> <ui:define name="title">
<h1>#{i18n['user.shop.title']}</h1> <h1>#{i18n['user.shop.title']}</h1>
<users:usertabs tabId="foodwave" />
</ui:define> </ui:define>
<ui:define name="content"> <ui:define name="content">
......
...@@ -20,7 +20,6 @@ ...@@ -20,7 +20,6 @@
<ui:define name="title"> <ui:define name="title">
<h1>#{i18n['user.foodwave.products.title']}</h1> <h1>#{i18n['user.foodwave.products.title']}</h1>
<users:usertabs tabId="foodwave" />
</ui:define> </ui:define>
<ui:define name="content"> <ui:define name="content">
......
...@@ -12,7 +12,6 @@ ...@@ -12,7 +12,6 @@
<ui:define name="title"> <ui:define name="title">
<h1>#{i18n['user.shop.title']}</h1> <h1>#{i18n['user.shop.title']}</h1>
<users:usertabs tabId="foodwave" />
</ui:define> </ui:define>
<ui:define name="content"> <ui:define name="content">
......
...@@ -16,8 +16,8 @@ ...@@ -16,8 +16,8 @@
<h:outputText <h:outputText
rendered="#{salespointListView.salespoints.rowCount le 0}" rendered="#{salespointListView.salespoints.rowCount le 0}"
value="#{i18n['salespoint.noSalespoints']}" /> value="#{i18n['salespoint.noSalesPoints']}" />
<h:form rendered="#{salespointListView.salespoints.rowCount gt 0}"> <h:form rendered="#{salespointListView.salespoints.rowCount gt 0}">
<h:dataTable styleClass="bordertable" id="salespointList" <h:dataTable styleClass="bordertable" id="salespointList"
value="#{salespointListView.salespoints}" var="salespoint"> value="#{salespointListView.salespoints}" var="salespoint">
......
...@@ -21,13 +21,11 @@ ...@@ -21,13 +21,11 @@
</h2> </h2>
--> -->
<h:form id="userform" enctype="multipart/form-data">
<h:panelGrid columns="2"> <h:panelGrid columns="2">
<h:panelGroup> <h:panelGroup>
<h:form id="userform" enctype="multipart/form-data">
<ui:fragment rendered="#{not empty userView.user.id}"> <ui:fragment rendered="#{not empty userView.user.id}">
<p:overlayPanel id="chartPanel" for="webcamButton" hideEffect="fade"> <p:overlayPanel id="chartPanel" for="webcamButton" hideEffect="fade">
<p:photoCam widgetVar="pc" listener="#{userView.oncapture}" update="@all" /> <p:photoCam widgetVar="pc" listener="#{userView.oncapture}" update="@all" />
<p:commandButton type="button" value="Capture" onclick="pc.capture()" /> <p:commandButton type="button" value="Capture" onclick="pc.capture()" />
...@@ -45,9 +43,9 @@ ...@@ -45,9 +43,9 @@
<p:fileUpload id="uploadfile" required="TRUE" requiredMessage="Required!" invalidSizeMessage="#{i18n['user.imageTooBig']}" sizeLimit="1024" value="#{userView.image}" mode="simple" /> <p:fileUpload id="uploadfile" required="TRUE" requiredMessage="Required!" invalidSizeMessage="#{i18n['user.imageTooBig']}" sizeLimit="1024" value="#{userView.image}" mode="simple" />
<p:message for="uploadfile" /> <p:message for="uploadfile" />
<p:commandButton action="#{userView.sendImage}" value="#{i18n['user.imagesubmit']}" /> <p:commandButton action="#{userView.sendImage}" ajax="false" value="#{i18n['user.imagesubmit']}" />
</ui:fragment> </ui:fragment>
</h:form>
<ui:fragment rendered="#{cc.attrs.creating}"> <ui:fragment rendered="#{cc.attrs.creating}">
<h:outputLabel value="#{i18n['user.login']}" for="mklogin" /> <h:outputLabel value="#{i18n['user.login']}" for="mklogin" />
<br /> <br />
...@@ -77,6 +75,7 @@ ...@@ -77,6 +75,7 @@
</h:panelGroup> </h:panelGroup>
<h:form>
<h:panelGroup> <h:panelGroup>
<table> <table>
...@@ -133,12 +132,12 @@ ...@@ -133,12 +132,12 @@
</table> </table>
<p:commandButton rendered="#{cc.attrs.creating or userView.canSave}" id="commitbtn" action="#{cc.attrs.commitaction}" value="#{cc.attrs.commitvalue}" /> <p:commandButton rendered="#{cc.attrs.creating or userView.canSave}" id="commitbtn" action="#{cc.attrs.commitaction}" ajax="false" value="#{cc.attrs.commitvalue}" />
</h:panelGroup> </h:panelGroup>
</h:form>
</h:panelGrid> </h:panelGrid>
</h:form>
</composite:implementation> </composite:implementation>
</html> </html>
...@@ -45,10 +45,11 @@ ...@@ -45,10 +45,11 @@
<h:commandButton value="#{i18n['userlist.search']}" action="#{userSearchView.newSearch()}" /> <h:commandButton value="#{i18n['userlist.search']}" action="#{userSearchView.newSearch()}" />
</h:panelGroup> </h:panelGroup>
<h:panelGroup> <h:panelGroup>
<a style="display: #{((userCartView.isEmpty())?'block':'none')};" onclick="$('#usercart').show(); $(this).hide();"><h:outputText value="#{i18n['userlist.showAdvancedSearch']}" /></a> <a style="display: #{((userCartView.isEmpty())?'block':'none')};" onclick="$('#usercart').show(); $(this).hide();"><h:outputText value="#{i18n['usercart.showCart']}" /></a>
<div id="usercart" style="display: #{((userCartView.isEmpty())?'none':'block')};"> <div id="usercart" style="display: #{((userCartView.isEmpty())?'none':'block')};">
<h:outputText value="#{i18n['usercart.cartsize']}" /> <h:outputText value="#{i18n['usercart.cartsize']}" />
<h:outputText value=" #{userCartView.userCartSize}" /> <h:outputText value=" #{userCartView.userCartSize}" />
<h:commandButton action="#{userCartView.clearCart}" value="#{i18n['usercart.clear']}" />
<br /> <br />
<h:commandButton actionListener="#{userSearchView.addToCart}" value="#{i18n['usercart.addSearcherUsers']}" /> <h:commandButton actionListener="#{userSearchView.addToCart}" value="#{i18n['usercart.addSearcherUsers']}" />
<h:commandButton action="#{userCartView.traverse}" value="#{i18n['usercart.traverse']}" /> <h:commandButton action="#{userCartView.traverse}" value="#{i18n['usercart.traverse']}" />
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
<f:metadata> <f:metadata>
<f:viewParam name="userid" value="#{userView.userid}" /> <f:viewParam name="userid" value="#{userView.userid}" />
<f:event type="preRenderView" listener="#{userView.initView}" /> <f:event type="preRenderView" listener="#{userView.initView}" />
<f:event type="preRenderView" listener="#{userView.prepareCardDownload}" />
</f:metadata> </f:metadata>
<ui:define name="title"> <ui:define name="title">
<h1>#{i18n['sendPicture.header']}</h1> <h1>#{i18n['sendPicture.header']}</h1>
...@@ -62,6 +63,12 @@ ...@@ -62,6 +63,12 @@
<ui:fragment rendered="#{userView.canManage()}"> <ui:fragment rendered="#{userView.canManage()}">
<h2>Ylläpito</h2> <h2>Ylläpito</h2>
<h:form> <h:form>
<p:commandButton action="#{userView.prepareCardDownload()}" rendered="#{userView.waitForAcceptance==false}" value="print card" ajax="true" update="@form" onclick="PrimeFaces.monitorDownload(start, stop)">
<p:fileDownload value="#{userView.streamedFile}" />
</p:commandButton>
<p:commandButton action="#{userView.acceptPrintedCard()}" value="accept printed card" />
</h:form>
<!-- <h:form>
<h:commandButton action="#{userView.makeCard()}" value="#{i18n['user.makeCard']}" /> <h:commandButton action="#{userView.makeCard()}" value="#{i18n['user.makeCard']}" />
<h:dataTable var="card" value="#{userCardView.printedCards}"> <h:dataTable var="card" value="#{userCardView.printedCards}">
<h:column> <h:column>
...@@ -77,7 +84,7 @@ ...@@ -77,7 +84,7 @@
</h:column> </h:column>
</h:dataTable> </h:dataTable>
</h:form> </h:form>-->
<h3>RFID</h3> <h3>RFID</h3>
<h:form rendered="#{empty readerNameContainer.readerId}"> <h:form rendered="#{empty readerNameContainer.readerId}">
......
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core"
xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:p="http://primefaces.org/ui" xmlns:users="http://java.sun.com/jsf/composite/cditools/user"
xmlns:shop="http://java.sun.com/jsf/composite/cditools/shop">
<h:body>
<ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml">
<ui:param name="thispage" value="page.user.create" />
<f:metadata>
<f:viewParam name="userid" value="#{userView.userid}" />
<f:event type="preRenderView" listener="#{userView.initView}" />
</f:metadata>
<ui:define name="title">
<h1>#{i18n['sendPicture.header']}</h1>
</ui:define>
<ui:define name="headerdata">
</ui:define>
<ui:define name="content">
<h:form>
<p:photoCam widgetVar="pc" listener="#{userView.oncapture}" update="@all" />
<p:commandButton type="button" value="Capture" onclick="pc.capture()" />
</h:form>
</ui:define>
</ui:composition>
</h:body>
</html>
\ No newline at end of file
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
<h:commandButton action="#{userCartView.removeCurrent()}" value="#{i18n['usercart.removeCurrent']}" /> <h:commandButton action="#{userCartView.removeCurrent()}" value="#{i18n['usercart.removeCurrent']}" />
<h:commandButton action="#{userCartView.next()}" value="#{i18n['usercart.next']}" rendered="#{userCartView.userCartSize > (userCartView.current+1)}" /></h:form> <h:commandButton action="#{userCartView.next()}" value="#{i18n['usercart.next']}" rendered="#{userCartView.userCartSize > (userCartView.current+1)}" /></h:form>
<h:link outcome="/card/massprint" value="yarr"> <h:link outcome="/card/massprint" value="Mass Print">
<f:param name="cid" value="#{javax.enterprise.context.conversation.id}"/> <f:param name="cid" value="#{javax.enterprise.context.conversation.id}"/>
</h:link> </h:link>
......
...@@ -117,11 +117,11 @@ permissiondenied.notLoggedIn = You don't have enough rights to enter this si ...@@ -117,11 +117,11 @@ permissiondenied.notLoggedIn = You don't have enough rights to enter this si
placegroupview.toptext = \ placegroupview.toptext = \
poll.edit = edit poll.edit = edit
product.providedRole = Tuote m\u00E4\u00E4ritt\u00E4\u00E4 roolin product.providedRole = Tuote m\u00E4\u00E4ritt\u00E4\u00E4 roolin
product.returnProductEdit = Palaa tuotteeseen: product.returnProductEdit = Palaa tuotteeseen:
product.saved = Tuote tallennettu product.saved = Tuote tallennettu
productshop.minusOne = -1 productshop.minusOne = -1
productshop.minusTen = -10 productshop.minusTen = -10
...@@ -136,4 +136,4 @@ resetMail.username = Username ...@@ -136,4 +136,4 @@ resetMail.username = Username
resetmailSent.body = Email has been sent containing a link where you can change the password. resetmailSent.body = Email has been sent containing a link where you can change the password.
resetmailSent.header = Email sent resetmailSent.header = Email sent
user.unauthenticated = Kirjautumaton user.unauthenticated = Kirjautumaton
...@@ -601,6 +601,7 @@ submenu.user.create = Create new user ...@@ -601,6 +601,7 @@ submenu.user.create = Create new user
submenu.user.edit = User information submenu.user.edit = User information
submenu.user.invite = Invite friends submenu.user.invite = Invite friends
submenu.user.manageuserlinks = Manage users submenu.user.manageuserlinks = Manage users
submenu.user.other = Other
submenu.user.rolelinks = Manage roles submenu.user.rolelinks = Manage roles
submenu.user.sendPicture = Send picture submenu.user.sendPicture = Send picture
submenu.user.shop = Shop submenu.user.shop = Shop
...@@ -609,6 +610,7 @@ submenu.useradmin.create = Create user ...@@ -609,6 +610,7 @@ submenu.useradmin.create = Create user
submenu.useradmin.createCardTemplate = Create cardtemplate submenu.useradmin.createCardTemplate = Create cardtemplate
submenu.useradmin.list = List users submenu.useradmin.list = List users
submenu.useradmin.listCardTemplates = Card templates submenu.useradmin.listCardTemplates = Card templates
submenu.useradmin.showTakePicture = Show webcam
submenu.useradmin.validateUser = Validate user submenu.useradmin.validateUser = Validate user
submenu.voting.compolist = Compos submenu.voting.compolist = Compos
submenu.voting.create = Create new compo submenu.voting.create = Create new compo
...@@ -630,7 +632,9 @@ topnavi.adminshop = Adminshop ...@@ -630,7 +632,9 @@ topnavi.adminshop = Adminshop
topnavi.billing = Billing topnavi.billing = Billing
topnavi.compos = Compos topnavi.compos = Compos
topnavi.contents = Site contents topnavi.contents = Site contents
topnavi.foodwave = Food
topnavi.frontpage = Front page topnavi.frontpage = Front page
topnavi.log = Log
topnavi.maps = Maps topnavi.maps = Maps
topnavi.placemap = Map topnavi.placemap = Map
topnavi.poll = Polls topnavi.poll = Polls
...@@ -709,14 +713,20 @@ userImport.commit = Commit ...@@ -709,14 +713,20 @@ userImport.commit = Commit
userView.image = Image userView.image = Image
usercart.addSearchedUsers = Add searched users
usercart.cartsize = Size
usercart.showCart = Show usercart
usercart.traverse = Traverse
userimage.webcam = Take picture with webcam userimage.webcam = Take picture with webcam
userlist.header = Users userlist.header = Users
userlist.onlythisevent = Limit to users of this event userlist.onlythisevent = Limit to users of this event
userlist.placeassoc = Assigned to place userlist.placeassoc = Assigned to place
userlist.rolefilter = Assigned roles userlist.rolefilter = Assigned roles
userlist.saldofilter = Saldo userlist.saldofilter = Saldo
userlist.search = Search userlist.search = Search
userlist.showAdvancedSearch = Advanced search
usertitle.managingUser = Shop usertitle.managingUser = Shop
......
...@@ -584,6 +584,7 @@ submenu.user.invite = Kutsu yst\u00E4vi\u00E4 ...@@ -584,6 +584,7 @@ submenu.user.invite = Kutsu yst\u00E4vi\u00E4
submenu.user.list = Kaikki k\u00E4ytt\u00E4j\u00E4t submenu.user.list = Kaikki k\u00E4ytt\u00E4j\u00E4t
submenu.user.listCardTemplates = Korttiryhm\u00E4t submenu.user.listCardTemplates = Korttiryhm\u00E4t
submenu.user.manageuserlinks = Hallitse k\u00E4ytt\u00E4ji\u00E4 submenu.user.manageuserlinks = Hallitse k\u00E4ytt\u00E4ji\u00E4
submenu.user.other = Muuta
submenu.user.rolelinks = Hallitse rooleja submenu.user.rolelinks = Hallitse rooleja
submenu.user.sendPicture = L\u00E4het\u00E4 kuva submenu.user.sendPicture = L\u00E4het\u00E4 kuva
submenu.user.shop = Kauppaan submenu.user.shop = Kauppaan
...@@ -592,6 +593,7 @@ submenu.useradmin.create = Luo uusi k\u00E4ytt\u00E4j\u00E4 ...@@ -592,6 +593,7 @@ submenu.useradmin.create = Luo uusi k\u00E4ytt\u00E4j\u00E4
submenu.useradmin.createCardTemplate = Luo uusi korttipohja submenu.useradmin.createCardTemplate = Luo uusi korttipohja
submenu.useradmin.list = Listaa k\u00E4ytt\u00E4j\u00E4t submenu.useradmin.list = Listaa k\u00E4ytt\u00E4j\u00E4t
submenu.useradmin.listCardTemplates = Listaa korttipohjat submenu.useradmin.listCardTemplates = Listaa korttipohjat
submenu.useradmin.showTakePicture = N\u00E4yt\u00E4 webcam
submenu.useradmin.validateUser = Validoi k\u00E4ytt\u00E4j\u00E4 submenu.useradmin.validateUser = Validoi k\u00E4ytt\u00E4j\u00E4
submenu.voting.compolist = Kilpailut submenu.voting.compolist = Kilpailut
submenu.voting.create = Uusi kilpailu submenu.voting.create = Uusi kilpailu
...@@ -613,7 +615,9 @@ topnavi.adminshop = Kauppa ...@@ -613,7 +615,9 @@ topnavi.adminshop = Kauppa
topnavi.billing = Laskutus topnavi.billing = Laskutus
topnavi.compos = Kilpailut topnavi.compos = Kilpailut
topnavi.contents = Sivuston sis\u00E4lt\u00F6 topnavi.contents = Sivuston sis\u00E4lt\u00F6
topnavi.foodwave = Ruokatilaus
topnavi.frontpage = Etusivu topnavi.frontpage = Etusivu
topnavi.log = Logi
topnavi.maps = Kartat topnavi.maps = Kartat
topnavi.placemap = Paikkakartta topnavi.placemap = Paikkakartta
topnavi.poll = Kyselyt topnavi.poll = Kyselyt
...@@ -690,14 +694,20 @@ userImport.commit = Hyv\u00E4ksy ...@@ -690,14 +694,20 @@ userImport.commit = Hyv\u00E4ksy
userView.image = Kuva userView.image = Kuva
usercart.addSearchedUsers = Lis\u00E4\u00E4 haetut k\u00E4ytt\u00E4j\u00E4t
usercart.cartsize = Koko
usercart.showCart = K\u00E4ytt\u00E4j\u00E4kori
usercart.traverse = K\u00E4y l\u00E4pi
userimage.webcam = Ota kuva webkameralla userimage.webcam = Ota kuva webkameralla
userlist.header = Etsi k\u00E4ytt\u00E4ji\u00E4 userlist.header = Etsi k\u00E4ytt\u00E4ji\u00E4
userlist.onlythisevent = Vain t\u00E4m\u00E4n tapahtuman k\u00E4ytt\u00E4j\u00E4t userlist.onlythisevent = Vain t\u00E4m\u00E4n tapahtuman k\u00E4ytt\u00E4j\u00E4t
userlist.placeassoc = Liitetty paikkaan userlist.placeassoc = Liitetty paikkaan
userlist.rolefilter = Annetut roolit userlist.rolefilter = Annetut roolit
userlist.saldofilter = Tilin saldo userlist.saldofilter = Tilin saldo
userlist.search = Etsi userlist.search = Etsi
userlist.showAdvancedSearch = Tarkennettu haku
usertitle.managingUser = Kauppa usertitle.managingUser = Kauppa
......
...@@ -18,6 +18,8 @@ import java.io.StringWriter; ...@@ -18,6 +18,8 @@ import java.io.StringWriter;
import java.util.Calendar; import java.util.Calendar;
import java.util.Map; import java.util.Map;
import java.util.zip.CRC32;
@Named @Named
@RequestScoped @RequestScoped
public class ErrorPageView implements Serializable { public class ErrorPageView implements Serializable {
...@@ -34,6 +36,7 @@ public class ErrorPageView implements Serializable { ...@@ -34,6 +36,7 @@ public class ErrorPageView implements Serializable {
@SuppressWarnings("unused") @SuppressWarnings("unused")
private static final Logger logger = LoggerFactory.getLogger(ErrorPageView.class); private static final Logger logger = LoggerFactory.getLogger(ErrorPageView.class);
public String getStackTrace() { public String getStackTrace() {
...@@ -51,14 +54,29 @@ public class ErrorPageView implements Serializable { ...@@ -51,14 +54,29 @@ public class ErrorPageView implements Serializable {
} }
public String getStackTraceHash() {
FacesContext context = FacesContext.getCurrentInstance();
Map requestMap = context.getExternalContext().getRequestMap();
Throwable ex =
(Throwable) requestMap.get("javax.servlet.error.exception");
CRC32 stackHash = new CRC32();
stackHash.update(ex.getStackTrace().toString().getBytes());
return "0x" + Long.toHexString(stackHash.getValue());
}
public String getTime(){ public String getTime(){
return "0x" + Long.toHexString(Calendar.getInstance().getTimeInMillis()); String stamp = "0x" + Long.toHexString(Calendar.getInstance().getTimeInMillis());
logger.error("Error occured at {} trail {}", stamp, getTrail());
return stamp;
} }
public String getTrail() { public String getTrail() {
HttpServletRequest req = (HttpServletRequest) getContext().getExternalContext().getRequest(); HttpServletRequest req = (HttpServletRequest) getContext().getExternalContext().getRequest();
Object trail = req.getSession().getAttribute("trail"); Object trail = req.getSession().getAttribute("trail");
return trail != null ? trail.toString().replace(", ", "\n") : "u gots no trail!"; return trail != null ? trail.toString() : "";
} }
public FacesContext getContext() { public FacesContext getContext() {
......
...@@ -26,6 +26,7 @@ public class FoodShopView extends GenericCDIView { ...@@ -26,6 +26,7 @@ public class FoodShopView extends GenericCDIView {
private static final long serialVersionUID = 1288114954999406683L; private static final long serialVersionUID = 1288114954999406683L;
@Inject @Inject
@SelectedUser @SelectedUser
private EventUser user; private EventUser user;
......
...@@ -135,4 +135,12 @@ public class FoodWaveView extends GenericCDIView { ...@@ -135,4 +135,12 @@ public class FoodWaveView extends GenericCDIView {
this.foodWaveFoodView = foodWaveFoodView; this.foodWaveFoodView = foodWaveFoodView;
} }
public Integer getTemplateId() {
return templateId;
}
public void setTemplateId(Integer templateId) {
this.templateId = templateId;
}
} }
...@@ -31,20 +31,15 @@ public class ReaderListDataView extends GenericCDIView { ...@@ -31,20 +31,15 @@ public class ReaderListDataView extends GenericCDIView {
private static final Logger logger = LoggerFactory.getLogger(ReaderListDataView.class); private static final Logger logger = LoggerFactory.getLogger(ReaderListDataView.class);
public void initView() { public void initView() {
super.requirePermissions(ShopPermission.SHOP_TO_OTHERS); super.requirePermissions(ShopPermission.SHOP_TO_OTHERS);
} }
public ListDataModel<Reader> getReaders() public ListDataModel<Reader> getReaders()
{ {
if (readers == null) {
if (readers == null)
{
readers = new ListDataModel<Reader>(readerbean.getReaders()); readers = new ListDataModel<Reader>(readerbean.getReaders());
} }
return readers; return readers;
} }
} }
...@@ -17,6 +17,7 @@ import fi.insomnia.bortal.beans.ReaderBeanLocal; ...@@ -17,6 +17,7 @@ import fi.insomnia.bortal.beans.ReaderBeanLocal;
import fi.insomnia.bortal.beans.UserBeanLocal; import fi.insomnia.bortal.beans.UserBeanLocal;
import fi.insomnia.bortal.enums.apps.ShopPermission; import fi.insomnia.bortal.enums.apps.ShopPermission;
import fi.insomnia.bortal.enums.apps.UserPermission; import fi.insomnia.bortal.enums.apps.UserPermission;
import fi.insomnia.bortal.model.PrintedCard;
import fi.insomnia.bortal.model.Product; import fi.insomnia.bortal.model.Product;
import fi.insomnia.bortal.model.Reader; import fi.insomnia.bortal.model.Reader;
import fi.insomnia.bortal.model.ReaderEvent; import fi.insomnia.bortal.model.ReaderEvent;
...@@ -24,6 +25,7 @@ import fi.insomnia.bortal.model.ReaderType; ...@@ -24,6 +25,7 @@ import fi.insomnia.bortal.model.ReaderType;
import fi.insomnia.bortal.model.User; import fi.insomnia.bortal.model.User;
import fi.insomnia.bortal.utilities.SearchQuery; import fi.insomnia.bortal.utilities.SearchQuery;
import fi.insomnia.bortal.web.cdiview.GenericCDIView; import fi.insomnia.bortal.web.cdiview.GenericCDIView;
import fi.insomnia.bortal.web.cdiview.user.UserView;
@Named @Named
@ConversationScoped @ConversationScoped
...@@ -58,6 +60,9 @@ public class ReaderView extends GenericCDIView { ...@@ -58,6 +60,9 @@ public class ReaderView extends GenericCDIView {
@EJB @EJB
private ProductBeanLocal shopBean; private ProductBeanLocal shopBean;
@Inject
private UserView userview;
public void initEditReader() { public void initEditReader() {
if (super.requirePermissions(ShopPermission.SHOP_TO_OTHERS) && reader == null) { if (super.requirePermissions(ShopPermission.SHOP_TO_OTHERS) && reader == null) {
reader = readerbean.getReader(readerid); reader = readerbean.getReader(readerid);
...@@ -85,6 +90,18 @@ public class ReaderView extends GenericCDIView { ...@@ -85,6 +90,18 @@ public class ReaderView extends GenericCDIView {
} }
} }
public String assocToCard()
{
UserCardWrapper user = userlist.getRowData();
PrintedCard card = user.getPrintedCards().getRowData();
ReaderEvent re = readerbean.assocTagToCard(event.getValue(), event.getReader().getIdentification(), card);
super.addFaceMessage("usercard.associated");
logger.info("re {}", re.getPrintedCard());
userview.setUser(re.getPrintedCard().getUser());
return "/useradmin/edit";
}
public String searchforuser() public String searchforuser()
{ {
if (usersearch == null || usersearch.length() < 2) { if (usersearch == null || usersearch.length() < 2) {
...@@ -199,4 +216,12 @@ public class ReaderView extends GenericCDIView { ...@@ -199,4 +216,12 @@ public class ReaderView extends GenericCDIView {
this.reader = reader; this.reader = reader;
} }
public UserView getUserview() {
return userview;
}
public void setUserview(UserView userview) {
this.userview = userview;
}
} }
...@@ -26,12 +26,12 @@ public class UserCartView extends GenericCDIView { ...@@ -26,12 +26,12 @@ public class UserCartView extends GenericCDIView {
private List<EventUser> usercart; private List<EventUser> usercart;
public void initView() public void initView() {
{
} }
private static final Logger logger = LoggerFactory.getLogger(UserCartView.class); private static final Logger logger = LoggerFactory
.getLogger(UserCartView.class);
public String next() { public String next() {
++current; ++current;
...@@ -45,37 +45,34 @@ public class UserCartView extends GenericCDIView { ...@@ -45,37 +45,34 @@ public class UserCartView extends GenericCDIView {
return null; return null;
} }
public String getUserCartSize() public String getUserCartSize() {
{
String ret = "0"; String ret = "0";
if (usercart != null) if (usercart != null) {
{
ret = Integer.toString(usercart.size()); ret = Integer.toString(usercart.size());
} }
return ret; return ret;
} }
public String removeCurrent() public String removeCurrent() {
{
EventUser removed = usercart.remove(current.intValue()); EventUser removed = usercart.remove(current.intValue());
logger.debug("Removed idx {} from usercart {}", current, removed); logger.debug("Removed idx {} from usercart {}", current, removed);
if (!usercart.isEmpty()) if (!usercart.isEmpty()) {
{
updateCurrent(); updateCurrent();
} }
return null; return null;
} }
public String traverse() public String traverse() {
{ if (usercart != null) {
current = 0; current = 0;
updateCurrent(); updateCurrent();
return "/useradmin/userCartShow"; return "/useradmin/userCartShow";
}
else return "/useradmin/list";
} }
public String saveUser() public String saveUser() {
{
userview.saveUser(); userview.saveUser();
return null; return null;
} }
...@@ -84,14 +81,12 @@ public class UserCartView extends GenericCDIView { ...@@ -84,14 +81,12 @@ public class UserCartView extends GenericCDIView {
logger.debug("Updating current user to {}", current); logger.debug("Updating current user to {}", current);
if (current >= usercart.size()) { if (current >= usercart.size()) {
current = usercart.size() - 1; current = usercart.size() - 1;
} else if (current < 0) } else if (current < 0) {
{
current = 0; current = 0;
} }
EventUser u = usercart.get(current); EventUser u = usercart.get(current);
logger.debug("usercart current {}, got {}", current, u); logger.debug("usercart current {}, got {}", current, u);
if (u != null) if (u != null) {
{
userview.setUserid(u.getUser().getId()); userview.setUserid(u.getUser().getId());
userview.setUser(null); userview.setUser(null);
userview.initView(); userview.initView();
...@@ -99,8 +94,7 @@ public class UserCartView extends GenericCDIView { ...@@ -99,8 +94,7 @@ public class UserCartView extends GenericCDIView {
} }
public void addUsers(List<EventUser> results) { public void addUsers(List<EventUser> results) {
if (usercart == null) if (usercart == null) {
{
usercart = new ArrayList<EventUser>(); usercart = new ArrayList<EventUser>();
} }
usercart.removeAll(results); usercart.removeAll(results);
...@@ -108,8 +102,13 @@ public class UserCartView extends GenericCDIView { ...@@ -108,8 +102,13 @@ public class UserCartView extends GenericCDIView {
} }
public boolean isEmpty() public void clearCart() {
{ if (usercart != null)
usercart.clear();
//return null;
}
public boolean isEmpty() {
return usercart == null || usercart.isEmpty(); return usercart == null || usercart.isEmpty();
} }
......
package fi.insomnia.bortal.web.cdiview.user; package fi.insomnia.bortal.web.cdiview.user;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import java.util.List; import java.util.List;
...@@ -7,11 +10,15 @@ import javax.ejb.EJB; ...@@ -7,11 +10,15 @@ import javax.ejb.EJB;
import javax.enterprise.context.Conversation; import javax.enterprise.context.Conversation;
import javax.enterprise.context.ConversationScoped; import javax.enterprise.context.ConversationScoped;
import javax.enterprise.inject.Produces; import javax.enterprise.inject.Produces;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Named; import javax.inject.Named;
import org.primefaces.event.CaptureEvent; import org.primefaces.event.CaptureEvent;
import org.primefaces.model.CroppedImage; import org.primefaces.model.CroppedImage;
import org.primefaces.model.DefaultStreamedContent;
import org.primefaces.model.StreamedContent;
import org.primefaces.model.UploadedFile; import org.primefaces.model.UploadedFile;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -28,6 +35,7 @@ import fi.insomnia.bortal.model.PrintedCard; ...@@ -28,6 +35,7 @@ import fi.insomnia.bortal.model.PrintedCard;
import fi.insomnia.bortal.model.Role; import fi.insomnia.bortal.model.Role;
import fi.insomnia.bortal.model.User; import fi.insomnia.bortal.model.User;
import fi.insomnia.bortal.model.UserImage; import fi.insomnia.bortal.model.UserImage;
import fi.insomnia.bortal.util.MassPrintResult;
import fi.insomnia.bortal.web.annotations.LoggedIn; import fi.insomnia.bortal.web.annotations.LoggedIn;
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;
...@@ -77,6 +85,12 @@ public class UserView extends GenericCDIView { ...@@ -77,6 +85,12 @@ public class UserView extends GenericCDIView {
private transient EventBeanLocal eventbean; private transient EventBeanLocal eventbean;
@EJB @EJB
private transient CardPrintBeanLocal cardPrintBean; private transient CardPrintBeanLocal cardPrintBean;
private File file;
private StreamedContent streamedFile;
private MassPrintResult mpr = null;
private boolean waitForAcceptance = false;
@Produces @Produces
@LoggedIn @LoggedIn
...@@ -128,10 +142,13 @@ public class UserView extends GenericCDIView { ...@@ -128,10 +142,13 @@ public class UserView extends GenericCDIView {
// user = userbean.getEventUser(img.getUser()); // user = userbean.getEventUser(img.getUser());
// croppedImage = null; // croppedImage = null;
logger.info("Cropped image {}x{}", croppedImage.getLeft(),
croppedImage.getTop()); if(croppedImage == null) return 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());
try {
try {
UserImage newImage = UserImage newImage =
userbean.saveCroppedImage(user.getUser().getCurrentImage(), userbean.saveCroppedImage(user.getUser().getCurrentImage(),
croppedImage.getLeft(), croppedImage.getTop(), croppedImage.getLeft(), croppedImage.getTop(),
...@@ -143,6 +160,31 @@ public class UserView extends GenericCDIView { ...@@ -143,6 +160,31 @@ public class UserView extends GenericCDIView {
} }
return null; return null;
} }
public void prepareCardDownload() {
file = null;
try {
mpr = cardPrintBean.getUserCardAsPrintablePdf(this.user.getId());
file = File.createTempFile("cardprintout",null);
FileOutputStream fostream = new FileOutputStream(file);
fostream.write(mpr.getPdf());
fostream.close();
setStreamedFile(new DefaultStreamedContent(new FileInputStream(this.file)));
} catch(Exception e) {
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(e.getMessage()));
}
}
public String acceptPrintedCard() {
if(mpr != null && mpr.getAffectedUsers().size() > 0) {
cardPrintBean.acceptMassPrintResult(mpr);
return "accepted";
} else {
return "failure";
}
}
public String makeCard() public String makeCard()
{ {
...@@ -311,4 +353,24 @@ public class UserView extends GenericCDIView { ...@@ -311,4 +353,24 @@ public class UserView extends GenericCDIView {
public void setUsername(String username) { public void setUsername(String username) {
this.username = username; this.username = username;
} }
public void raiseWaitForAcceptance() {
waitForAcceptance = true;
}
public boolean isWaitForAcceptance() {
return waitForAcceptance;
}
public void setWaitForAcceptance(boolean waitForAcceptance) {
this.waitForAcceptance = waitForAcceptance;
}
public StreamedContent getStreamedFile() {
return streamedFile;
}
public void setStreamedFile(StreamedContent streamedFile) {
this.streamedFile = streamedFile;
}
} }
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!