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