Commit 4c7bb161 by Antti Tönkyrä

Merge branch 'master' into 'master'

Master

Lisäominaisuuksia liittyen korttien printtaamiseen ja käyttäjien kuvien tarkasteluun.
2 parents e37aec49 55a36b0f
Showing with 1716 additions and 65 deletions
...@@ -79,6 +79,8 @@ public class BootstrapBean implements BootstrapBeanLocal { ...@@ -79,6 +79,8 @@ public class BootstrapBean implements BootstrapBeanLocal {
dbUpdates.add(new String[] { dbUpdates.add(new String[] {
"alter table compos add hidden boolean default false not null" "alter table compos add hidden boolean default false not null"
}); });
dbUpdates.add(alterTables("ADD COLUMN meta json", dbUpdates.add(alterTables("ADD COLUMN meta json",
"account_events", "account_events",
"actionlog_message_responses", "actionlog_message_responses",
...@@ -151,6 +153,38 @@ public class BootstrapBean implements BootstrapBeanLocal { ...@@ -151,6 +153,38 @@ public class BootstrapBean implements BootstrapBeanLocal {
"users")); "users"));
dbUpdates.add(new String[]{"CREATE TABLE network_associations (id SERIAL NOT NULL, create_time TIMESTAMPTZ NOT NULL, ip TEXT, mac TEXT, META TEXT, modify_time TIMESTAMPTZ NOT NULL, status TEXT NOT NULL, event INTEGER, event_user INTEGER, place INTEGER, PRIMARY KEY (id))"}); dbUpdates.add(new String[]{"CREATE TABLE network_associations (id SERIAL NOT NULL, create_time TIMESTAMPTZ NOT NULL, ip TEXT, mac TEXT, META TEXT, modify_time TIMESTAMPTZ NOT NULL, status TEXT NOT NULL, event INTEGER, event_user INTEGER, place INTEGER, PRIMARY KEY (id))"});
dbUpdates.add(new String[] {
"CREATE TABLE card_text_data (id SERIAL NOT NULL, font_name TEXT NOT NULL, font_style INTEGER NOT NULL, size INTEGER NOT NULL, text TEXT, text_alignment TEXT NOT NULL, card_text_data_type TEXT NOT NULL, x INTEGER NOT NULL, y INTEGER NOT NULL, z_index INTEGER NOT NULL, PRIMARY KEY (id));"
});
dbUpdates.add(new String[] {
"CREATE TABLE card_object_data (id SERIAL NOT NULL, card_object_data_type TEXT NOT NULL, size INTEGER NOT NULL, x INTEGER NOT NULL, y INTEGER NOT NULL, z_index INTEGER NOT NULL, PRIMARY KEY (id));"
});
dbUpdates.add(new String[] {
"ALTER TABLE card_text_data ADD COLUMN card_templates_id integer REFERENCES card_templates(id) DEFAULT null;",
"ALTER TABLE card_object_data ADD COLUMN card_templates_id integer REFERENCES card_templates(id) DEFAULT null;"
});
dbUpdates.add(alterTables("ADD COLUMN meta json",
"card_text_data",
"card_object_data"
));
dbUpdates.add(new String[] {
"ALTER TABLE card_text_data ADD COLUMN font_color_r integer DEFAULT 0;",
"ALTER TABLE card_text_data ADD COLUMN font_color_g integer DEFAULT 0;",
"ALTER TABLE card_text_data ADD COLUMN font_color_b integer DEFAULT 0;"
});
dbUpdates.add(new String[] {
"ALTER TABLE card_text_data ALTER COLUMN size TYPE numeric(5,2);",
"ALTER TABLE card_object_data ALTER COLUMN size TYPE numeric(5,2);"
});
dbUpdates.add(new String[] {
"ALTER TABLE card_text_data DROP COLUMN font_style;",
"ALTER TABLE card_text_data ADD COLUMN font_style TEXT NOT NULL DEFAULT 'PLAIN';"
});
} }
@EJB @EJB
......
...@@ -21,12 +21,16 @@ import org.slf4j.LoggerFactory; ...@@ -21,12 +21,16 @@ import org.slf4j.LoggerFactory;
import fi.codecrew.moya.enums.CardState; import fi.codecrew.moya.enums.CardState;
import fi.codecrew.moya.enums.apps.UserPermission; import fi.codecrew.moya.enums.apps.UserPermission;
import fi.codecrew.moya.facade.CardObjectDataFacade;
import fi.codecrew.moya.facade.CardTemplateFacade; import fi.codecrew.moya.facade.CardTemplateFacade;
import fi.codecrew.moya.facade.CardTextDataFacade;
import fi.codecrew.moya.facade.EventUserFacade; import fi.codecrew.moya.facade.EventUserFacade;
import fi.codecrew.moya.facade.GroupMembershipFacade; import fi.codecrew.moya.facade.GroupMembershipFacade;
import fi.codecrew.moya.facade.LanEventPropertyFacade; import fi.codecrew.moya.facade.LanEventPropertyFacade;
import fi.codecrew.moya.facade.PrintedCardFacade; import fi.codecrew.moya.facade.PrintedCardFacade;
import fi.codecrew.moya.model.CardObjectData;
import fi.codecrew.moya.model.CardTemplate; import fi.codecrew.moya.model.CardTemplate;
import fi.codecrew.moya.model.CardTextData;
import fi.codecrew.moya.model.EventUser; import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.LanEvent; import fi.codecrew.moya.model.LanEvent;
import fi.codecrew.moya.model.LanEventProperty; import fi.codecrew.moya.model.LanEventProperty;
...@@ -75,6 +79,12 @@ public class CardTemplateBean implements CardTemplateBeanLocal { ...@@ -75,6 +79,12 @@ public class CardTemplateBean implements CardTemplateBeanLocal {
@EJB @EJB
private GroupMembershipFacade gmFacade; private GroupMembershipFacade gmFacade;
@EJB
private CardTextDataFacade ctdFacade;
@EJB
private CardObjectDataFacade codFacade;
// @Override // @Override
// @RolesAllowed("USER_MANAGEMENT/WRITE") // @RolesAllowed("USER_MANAGEMENT/WRITE")
// public List<CardTemplate> findAll() { // public List<CardTemplate> findAll() {
...@@ -101,6 +111,18 @@ public class CardTemplateBean implements CardTemplateBeanLocal { ...@@ -101,6 +111,18 @@ public class CardTemplateBean implements CardTemplateBeanLocal {
} }
@Override @Override
@RolesAllowed(UserPermission.S_WRITE_ROLES)
public CardTextData findTextData(Integer id) {
return ctdFacade.find(id);
}
@Override
@RolesAllowed(UserPermission.S_WRITE_ROLES)
public CardObjectData findObjectData(Integer id) {
return codFacade.find(id);
}
@Override
public void checkAllUsersCardRights() { public void checkAllUsersCardRights() {
for (EventUser u : eventUserFacade.findAll()) { for (EventUser u : eventUserFacade.findAll()) {
checkPrintedCard(u); checkPrintedCard(u);
...@@ -228,6 +250,18 @@ public class CardTemplateBean implements CardTemplateBeanLocal { ...@@ -228,6 +250,18 @@ public class CardTemplateBean implements CardTemplateBeanLocal {
return this.printedcardfacade.findAllEnabled(eventBean.getCurrentEvent()); return this.printedcardfacade.findAllEnabled(eventBean.getCurrentEvent());
} }
@Override
@RolesAllowed(UserPermission.S_WRITE_ROLES)
public List<CardTextData> findCardTextDatas(CardTemplate template) {
return this.ctdFacade.findAll(template);
}
@Override
@RolesAllowed(UserPermission.S_WRITE_ROLES)
public List<CardObjectData> findCardObjectDatas(CardTemplate template) {
return this.codFacade.findAll(template);
}
@RolesAllowed(UserPermission.S_WRITE_ROLES) @RolesAllowed(UserPermission.S_WRITE_ROLES)
@Override @Override
public CardTemplate save(CardTemplate card) { public CardTemplate save(CardTemplate card) {
...@@ -235,6 +269,24 @@ public class CardTemplateBean implements CardTemplateBeanLocal { ...@@ -235,6 +269,24 @@ public class CardTemplateBean implements CardTemplateBeanLocal {
} }
@RolesAllowed(UserPermission.S_WRITE_ROLES)
@Override
public CardTextData save(CardTextData textData) {
if(textData.getId() != null && textData.getId() != 0)
return ctdFacade.merge(textData);
else
return ctdFacade.create(textData);
}
@RolesAllowed(UserPermission.S_WRITE_ROLES)
@Override
public CardObjectData save(CardObjectData objectData) {
if(objectData.getId() != null && objectData.getId() != 0 )
return codFacade.merge(objectData);
else
return codFacade.create(objectData);
}
@Override @Override
public PrintedCard getCard(Integer id) { public PrintedCard getCard(Integer id) {
return printedcardfacade.find(id); return printedcardfacade.find(id);
......
...@@ -277,7 +277,7 @@ public class JaasBean implements MoyaRealmBeanRemote { ...@@ -277,7 +277,7 @@ public class JaasBean implements MoyaRealmBeanRemote {
throw new RuntimeException("Unknown application authtype!"); throw new RuntimeException("Unknown application authtype!");
} }
} else { } else {
logger.warn("Rest auth failed: Calculated hash does not match received mac: Calculated {}, received {}", machash, mac); logger.warn("Rest auth failed: Calculated hash does not match received mac: Calculated {}, received {}", macHash, mac);
} }
return ret; return ret;
......
...@@ -168,6 +168,7 @@ public class MenuBean implements MenuBeanLocal { ...@@ -168,6 +168,7 @@ public class MenuBean implements MenuBeanLocal {
MenuNavigation adminuser = adminmenu.addPage(null, null); MenuNavigation adminuser = adminmenu.addPage(null, null);
adminuser.setKey("topnavi.usermgmt"); adminuser.setKey("topnavi.usermgmt");
adminuser.addPage(menuitemfacade.findOrCreate("/useradmin/list"), UserPermission.VIEW_ALL); adminuser.addPage(menuitemfacade.findOrCreate("/useradmin/list"), UserPermission.VIEW_ALL);
adminuser.addPage(menuitemfacade.findOrCreate("/useradmin/overview"), UserPermission.VIEW_ALL).setVisible(false);;
adminuser.addPage(menuitemfacade.findOrCreate("/useradmin/create"), UserPermission.VIEW_ALL); adminuser.addPage(menuitemfacade.findOrCreate("/useradmin/create"), UserPermission.VIEW_ALL);
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("/place/adminGroups"), UserPermission.VIEW_ALL).setVisible(false); adminuser.addPage(menuitemfacade.findOrCreate("/place/adminGroups"), UserPermission.VIEW_ALL).setVisible(false);
...@@ -192,6 +193,8 @@ public class MenuBean implements MenuBeanLocal { ...@@ -192,6 +193,8 @@ public class MenuBean implements MenuBeanLocal {
adminEventCards.setKey("subnavi.cards"); adminEventCards.setKey("subnavi.cards");
adminEventCards.addPage(menuitemfacade.findOrCreate("/useradmin/listCardTemplates"), UserPermission.READ_ROLES); adminEventCards.addPage(menuitemfacade.findOrCreate("/useradmin/listCardTemplates"), UserPermission.READ_ROLES);
adminEventCards.addPage(menuitemfacade.findOrCreate("/useradmin/createCardTemplate"), UserPermission.WRITE_ROLES); adminEventCards.addPage(menuitemfacade.findOrCreate("/useradmin/createCardTemplate"), UserPermission.WRITE_ROLES);
adminEventCards.addPage(menuitemfacade.findOrCreate("/useradmin/editCardTextData"), UserPermission.WRITE_ROLES).setVisible(false);
adminEventCards.addPage(menuitemfacade.findOrCreate("/useradmin/listCardTemplateData"), UserPermission.READ_ROLES).setVisible(false);
adminEventCards.addPage(menuitemfacade.findOrCreate("/useradmin/editCardTemplate"), null).setVisible(false); adminEventCards.addPage(menuitemfacade.findOrCreate("/useradmin/editCardTemplate"), null).setVisible(false);
adminEventCards.addPage(menuitemfacade.findOrCreate("/shop/shopToUser"), null).setVisible(false); adminEventCards.addPage(menuitemfacade.findOrCreate("/shop/shopToUser"), null).setVisible(false);
adminEventCards.addPage(menuitemfacade.findOrCreate("/shop/assocToUser"), null).setVisible(false); adminEventCards.addPage(menuitemfacade.findOrCreate("/shop/assocToUser"), null).setVisible(false);
......
...@@ -31,6 +31,7 @@ import javax.persistence.PersistenceContext; ...@@ -31,6 +31,7 @@ import javax.persistence.PersistenceContext;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import fi.codecrew.moya.enums.CardState;
import fi.codecrew.moya.enums.apps.EventPermission; import fi.codecrew.moya.enums.apps.EventPermission;
import fi.codecrew.moya.enums.apps.SpecialPermission; import fi.codecrew.moya.enums.apps.SpecialPermission;
import fi.codecrew.moya.enums.apps.UserPermission; import fi.codecrew.moya.enums.apps.UserPermission;
...@@ -146,6 +147,8 @@ public class UserBean implements UserBeanLocal { ...@@ -146,6 +147,8 @@ public class UserBean implements UserBeanLocal {
private EventFacade eventfacade; private EventFacade eventfacade;
@EJB @EJB
private ProductFacade productFacade; private ProductFacade productFacade;
@EJB
private CardTemplateBeanLocal cardTemplateBean;
@Override @Override
@RolesAllowed(UserPermission.S_VIEW_ALL) @RolesAllowed(UserPermission.S_VIEW_ALL)
...@@ -463,6 +466,38 @@ public class UserBean implements UserBeanLocal { ...@@ -463,6 +466,38 @@ public class UserBean implements UserBeanLocal {
return true; return true;
} }
public PrintedCard rejectPrintedCard(PrintedCard card, MailMessage mail) {
if(card != null) {
card.setCardState(CardState.REJECTED);
card = cardTemplateBean.saveCard(card);
logger.info("rejectPrintedCard(): Rejected card {}, state {}", card, card.getCardState() );
User user = null;
if(card.getUser() != null && card.getUser().getUser() != null)
user = card.getUser().getUser();
LanEvent event = card.getEvent();
if(mail != null) {
if(!utilbean.sendMail(mail)) {
logger.info("Sending mail failed");
} else
logger.info("Sending mail succeeded");
} else {
if(user == null)
logger.info("user is null");
if(event == null)
logger.info("event is null");
}
}
logger.info("returning card");
return card;
}
// @Override // @Override
// @RolesAllowed(UserPermission.S_VIEW_ALL) // @RolesAllowed(UserPermission.S_VIEW_ALL)
// public User findById(Integer id) { // public User findById(Integer id) {
......
package fi.codecrew.moya.facade;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;
import fi.codecrew.moya.model.CardObjectData;
import fi.codecrew.moya.model.CardObjectData_;
import fi.codecrew.moya.model.CardTemplate_;
import fi.codecrew.moya.model.CardTextData;
import fi.codecrew.moya.model.CardTextData_;
import fi.codecrew.moya.beans.CardTemplateBeanLocal;
import fi.codecrew.moya.beans.EventBeanLocal;
import fi.codecrew.moya.model.CardTemplate;
@Stateless
@LocalBean
public class CardObjectDataFacade extends IntegerPkGenericFacade<CardObjectData> {
@EJB
private EventBeanLocal eventbean;
@EJB
private CardTemplateBeanLocal ctbean;
public CardObjectDataFacade() {
super(CardObjectData.class);
}
public List<CardObjectData> findAll(CardTemplate template)
{
//CardTemplate template = ctbean.find(templateId);
if(template != null) {
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<CardObjectData> cq = cb.createQuery(CardObjectData.class);
Root<CardObjectData> root = cq.from(CardObjectData.class);
cq.where(cb.equal(root.get(CardObjectData_.cardTemplate), template));
return getEm().createQuery(cq).getResultList();
} else
return null;
}
}
package fi.codecrew.moya.facade;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;
import fi.codecrew.moya.model.CardTemplate_;
import fi.codecrew.moya.model.CardTextData;
import fi.codecrew.moya.model.CardTextData_;
import fi.codecrew.moya.beans.CardTemplateBeanLocal;
import fi.codecrew.moya.beans.EventBeanLocal;
import fi.codecrew.moya.model.CardTemplate;
@Stateless
@LocalBean
public class CardTextDataFacade extends IntegerPkGenericFacade<CardTextData> {
@EJB
private EventBeanLocal eventbean;
@EJB
private CardTemplateBeanLocal ctbean;
public CardTextDataFacade() {
super(CardTextData.class);
}
public List<CardTextData> findAll(CardTemplate template)
{
//CardTemplate template = ctbean.find(templateId);
if(template != null) {
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<CardTextData> cq = cb.createQuery(CardTextData.class);
Root<CardTextData> root = cq.from(CardTextData.class);
cq.where(cb.equal(root.get(CardTextData_.cardTemplate), template));
return getEm().createQuery(cq).getResultList();
} else
return null;
}
}
...@@ -6,7 +6,9 @@ import java.util.List; ...@@ -6,7 +6,9 @@ import java.util.List;
import javax.ejb.Local; import javax.ejb.Local;
import fi.codecrew.moya.enums.CardState; import fi.codecrew.moya.enums.CardState;
import fi.codecrew.moya.model.CardObjectData;
import fi.codecrew.moya.model.CardTemplate; import fi.codecrew.moya.model.CardTemplate;
import fi.codecrew.moya.model.CardTextData;
import fi.codecrew.moya.model.EventUser; import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.PrintedCard; import fi.codecrew.moya.model.PrintedCard;
import fi.codecrew.moya.model.ReaderEvent; import fi.codecrew.moya.model.ReaderEvent;
...@@ -25,8 +27,16 @@ public interface CardTemplateBeanLocal extends EntityFinderBean<CardTemplate> { ...@@ -25,8 +27,16 @@ public interface CardTemplateBeanLocal extends EntityFinderBean<CardTemplate> {
List<PrintedCard> findActiveCards(); List<PrintedCard> findActiveCards();
List<CardTextData> findCardTextDatas(CardTemplate template);
List<CardObjectData> findCardObjectDatas(CardTemplate template);
CardTemplate save(CardTemplate card); CardTemplate save(CardTemplate card);
CardTextData save(CardTextData textData);
CardObjectData save(CardObjectData objectData);
PrintedCard getCard(Integer idParam); PrintedCard getCard(Integer idParam);
List<PrintedCard> getCards(EventUser user); List<PrintedCard> getCards(EventUser user);
...@@ -43,6 +53,10 @@ public interface CardTemplateBeanLocal extends EntityFinderBean<CardTemplate> { ...@@ -43,6 +53,10 @@ public interface CardTemplateBeanLocal extends EntityFinderBean<CardTemplate> {
PrintedCard findCard(Integer id); PrintedCard findCard(Integer id);
CardTextData findTextData(Integer id);
CardObjectData findObjectData(Integer id);
List<PrintedCard> getCardsByState(CardState... pendingPrint); List<PrintedCard> getCardsByState(CardState... pendingPrint);
PrintedCard setCardState(Integer cardId, CardState printed) throws Exception; PrintedCard setCardState(Integer cardId, CardState printed) throws Exception;
......
...@@ -12,11 +12,13 @@ import fi.codecrew.moya.model.Feedback; ...@@ -12,11 +12,13 @@ import fi.codecrew.moya.model.Feedback;
import fi.codecrew.moya.model.GameID; import fi.codecrew.moya.model.GameID;
import fi.codecrew.moya.model.GroupMembership; import fi.codecrew.moya.model.GroupMembership;
import fi.codecrew.moya.model.LanEvent; import fi.codecrew.moya.model.LanEvent;
import fi.codecrew.moya.model.PrintedCard;
import fi.codecrew.moya.model.Role; import fi.codecrew.moya.model.Role;
import fi.codecrew.moya.model.TournamentGame; import fi.codecrew.moya.model.TournamentGame;
import fi.codecrew.moya.model.User; import fi.codecrew.moya.model.User;
import fi.codecrew.moya.model.UserApproval; import fi.codecrew.moya.model.UserApproval;
import fi.codecrew.moya.model.UserImage; import fi.codecrew.moya.model.UserImage;
import fi.codecrew.moya.util.MailMessage;
import fi.codecrew.moya.util.UserSearchQuery; import fi.codecrew.moya.util.UserSearchQuery;
import fi.codecrew.moya.utilities.SearchQuery; import fi.codecrew.moya.utilities.SearchQuery;
import fi.codecrew.moya.utilities.SearchResult; import fi.codecrew.moya.utilities.SearchResult;
...@@ -98,6 +100,8 @@ public interface UserBeanLocal { ...@@ -98,6 +100,8 @@ public interface UserBeanLocal {
boolean initPasswordResetForEmail(String email, String url); boolean initPasswordResetForEmail(String email, String url);
PrintedCard rejectPrintedCard(PrintedCard card, MailMessage mail);
boolean initPasswordResetForUsername(String username, String url); boolean initPasswordResetForUsername(String username, String url);
void addGameID(TournamentGame game, String gameid); void addGameID(TournamentGame game, String gameid);
......
package fi.codecrew.moya.model;
import java.math.BigDecimal;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import org.eclipse.persistence.annotations.OptimisticLocking;
import org.eclipse.persistence.annotations.OptimisticLockingType;
import fi.codecrew.moya.enums.CardObjectDataType;
@Entity
@Table(name = "card_object_data")
@OptimisticLocking(type = OptimisticLockingType.CHANGED_COLUMNS)
public class CardObjectData extends GenericEntity {
private static final long serialVersionUID = 307145499023412008L;
@Column(name = "card_object_data_type", nullable = false)
@Enumerated(EnumType.STRING)
private CardObjectDataType objectDataType = CardObjectDataType.UNKNOWN;
@Column(name = "x", nullable = false)
private int x;
@Column(name = "y", nullable = false)
private int y;
@Column(name = "size", nullable = false, precision = 5, scale = 2)
private BigDecimal size;
@Column(name = "z_index", nullable = false)
private int zIndex;
@ManyToOne
@JoinColumn(nullable = false, name = "card_templates_id")
private CardTemplate cardTemplate;
public void setObjectDataType(CardObjectDataType field) {
this.objectDataType = field;
}
public CardObjectDataType getObjectDataType() {
return this.objectDataType;
}
public void setX(int x) {
this.x = x;
}
public int getX() {
return this.x;
}
public void setY(int y) {
this.y = y;
}
public int getY() {
return this.y;
}
public void setSize(BigDecimal size) {
this.size = size;
}
public BigDecimal getSize() {
return this.size;
}
public void setZIndex(int z) {
this.zIndex = z;
}
public int getzIndex() {
return zIndex;
}
public void setzIndex(int zIndex) {
this.zIndex = zIndex;
}
public int getZIndex() {
return this.zIndex;
}
public void setCardTemplate(CardTemplate template) {
this.cardTemplate = template;
}
public CardTemplate getCardTemplate() {
return this.cardTemplate;
}
}
package fi.codecrew.moya.model;
import java.awt.Color;
import java.awt.Font;
import java.math.BigDecimal;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import org.eclipse.persistence.annotations.OptimisticLocking;
import org.eclipse.persistence.annotations.OptimisticLockingType;
import fi.codecrew.moya.enums.CardTextAlignment;
import fi.codecrew.moya.enums.CardTextDataType;
import fi.codecrew.moya.enums.CardTextStyle;
@Entity
@Table(name = "card_text_data")
@OptimisticLocking(type = OptimisticLockingType.CHANGED_COLUMNS)
public class CardTextData extends GenericEntity{
private static final long serialVersionUID = 307145499023412008L;
@Column(name="card_text_data_type", nullable=false)
@Enumerated(EnumType.STRING)
private CardTextDataType textDataType = CardTextDataType.UNKNOWN;
@Column(name = "text_alignment", nullable = false)
@Enumerated(EnumType.STRING)
private CardTextAlignment textAlignment;
@Column(name = "x", nullable = false)
private int x;
@Column(name = "y", nullable = false)
private int y;
@Column(name = "size", nullable = false, precision = 5, scale = 2)
private BigDecimal size;
@Column(name = "font_color_r", nullable = false)
private int fontColorR;
@Column(name = "font_color_g", nullable = false)
private int fontColorG;
@Column(name = "font_color_b", nullable = false)
private int fontColorB;
@Column(name = "font_name", nullable = false)
private String fontName;
@Column(name = "font_style", nullable = false)
@Enumerated(EnumType.STRING)
private CardTextStyle fontStyle;
@Column(name = "text", nullable = true)
private String text;
@Column(name = "z_index", nullable = false)
private int zIndex;
@ManyToOne
@JoinColumn(nullable = false, name = "card_templates_id")
private CardTemplate cardTemplate;
public boolean isTypeStatic() {
if(this.textDataType == CardTextDataType.STATIC)
return true;
return false;
}
public void setTextDataType(CardTextDataType field) {
this.textDataType = field;
}
public CardTextDataType getTextDataType() {
return this.textDataType;
}
public void setX(int x) {
this.x = x;
}
public int getX() {
return this.x;
}
public void setY(int y) {
this.y = y;
}
public int getY() {
return this.y;
}
public void setSize(BigDecimal size) {
this.size = size;
}
public BigDecimal getSize() {
return this.size;
}
public void setFontName(String font) {
this.fontName = font;
}
public String getFontName() {
return this.fontName;
}
public void setFontStyle(CardTextStyle fontStyle) {
this.fontStyle = fontStyle;
}
public CardTextStyle getFontStyle() {
return this.fontStyle;
}
public void setText(String text) {
this.text = text;
}
public String getText() {
return this.text;
}
public int getzIndex() {
return zIndex;
}
public void setzIndex(int zIndex) {
this.zIndex = zIndex;
}
public CardTextAlignment getTextAlignment() {
return textAlignment;
}
public void setTextAlignment(CardTextAlignment textAlignment) {
this.textAlignment = textAlignment;
}
public void setFont(Font font) {
//this.font = font;
this.fontName = font.getFontName();
this.size = new BigDecimal(font.getSize());
if(font.isBold() && font.isItalic())
this.fontStyle = CardTextStyle.BOLDITALIC;
else if(font.isItalic())
this.fontStyle = CardTextStyle.ITALIC;
else if(font.isPlain())
this.fontStyle = CardTextStyle.PLAIN;
}
public Font getFont() {
if(this.fontStyle == CardTextStyle.BOLD)
return new Font(this.fontName, Font.BOLD, this.size.intValue());
else if(this.fontStyle == CardTextStyle.ITALIC)
return new Font(this.fontName, Font.ITALIC, this.size.intValue());
else if(this.fontStyle == CardTextStyle.PLAIN)
return new Font(this.fontName, Font.PLAIN, this.size.intValue());
else
return new Font(this.fontName, Font.PLAIN, this.size.intValue());
}
public void setCardTemplate(CardTemplate template) {
this.cardTemplate = template;
}
public CardTemplate getCardTemplate() {
return this.cardTemplate;
}
public LanEvent getEvent() {
if(cardTemplate != null)
return cardTemplate.getEvent();
else
return null;
}
public int getFontColorR() {
return fontColorR;
}
public void setFontColorR(int fontColorR) {
this.fontColorR = fontColorR;
}
public int getFontColorG() {
return fontColorG;
}
public void setFontColorG(int fontColorG) {
this.fontColorG = fontColorG;
}
public int getFontColorB() {
return fontColorB;
}
public void setFontColorB(int fontColorB) {
this.fontColorB = fontColorB;
}
public void setFontColor(int r, int g, int b) {
this.fontColorR = r;
this.fontColorG = g;
this.fontColorB = b;
}
public String getColorHexCode() {
String r = Integer.toHexString(fontColorR);
String g = Integer.toHexString(fontColorG);
String b = Integer.toHexString(fontColorB);
return r + g + b;
}
public void setColorHexCode(String colorHexCode) {
Color color = null;
try {
color = Color.decode("#"+colorHexCode);
fontColorR = color.getRed();
fontColorG = color.getGreen();
fontColorB = color.getBlue();
}catch(Exception ex) {
}
}
}
package fi.codecrew.moya.model; package fi.codecrew.moya.model;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.sql.Time;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Calendar; import java.util.Calendar;
import java.util.Date; import java.util.Date;
...@@ -26,13 +25,9 @@ import javax.validation.constraints.NotNull; ...@@ -26,13 +25,9 @@ import javax.validation.constraints.NotNull;
import org.eclipse.persistence.annotations.OptimisticLocking; import org.eclipse.persistence.annotations.OptimisticLocking;
import org.eclipse.persistence.annotations.OptimisticLockingType; import org.eclipse.persistence.annotations.OptimisticLockingType;
import org.eclipse.persistence.annotations.PrivateOwned; import org.eclipse.persistence.annotations.PrivateOwned;
import org.eclipse.persistence.annotations.TimeOfDay;
import org.eclipse.persistence.jpa.jpql.parser.DateTime;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import com.sun.xml.ws.commons.xmlutil.Converter;
import fi.codecrew.moya.enums.Gender; import fi.codecrew.moya.enums.Gender;
import fi.codecrew.moya.utilities.PasswordFunctions; import fi.codecrew.moya.utilities.PasswordFunctions;
...@@ -43,6 +38,9 @@ import fi.codecrew.moya.utilities.PasswordFunctions; ...@@ -43,6 +38,9 @@ import fi.codecrew.moya.utilities.PasswordFunctions;
@Table(name = "users") @Table(name = "users")
@OptimisticLocking(type = OptimisticLockingType.CHANGED_COLUMNS) @OptimisticLocking(type = OptimisticLockingType.CHANGED_COLUMNS)
public class User extends GenericEntity implements IUser { public class User extends GenericEntity implements IUser {
// private static final Logger logger = LoggerFactory.getLogger(User.class);
public static final String ANONYMOUS_LOGINNAME = "anonymous"; public static final String ANONYMOUS_LOGINNAME = "anonymous";
private static final long serialVersionUID = -1632200627103418206L; private static final long serialVersionUID = -1632200627103418206L;
...@@ -373,36 +371,37 @@ public class User extends GenericEntity implements IUser { ...@@ -373,36 +371,37 @@ public class User extends GenericEntity implements IUser {
} }
public BigDecimal getAge() { public BigDecimal getAge() {
BigDecimal age = new BigDecimal(0); logger.info("AgeWtf!");
if(birthday != null) { System.out.print("getAge()\n");
BigDecimal age = BigDecimal.ZERO;
if (birthday != null) {
Calendar calBirthday = Calendar.getInstance(); Calendar calBirthday = Calendar.getInstance();
calBirthday.setTime(birthday); calBirthday.setTime(birthday);
Calendar calNow = Calendar.getInstance(); Calendar calNow = Calendar.getInstance();
// Calendar calAge = Calendar.getInstance();
// calAge.add(Calendar.YEAR, -calBirthday.YEAR);
int yearB = calBirthday.get(Calendar.YEAR); int years = calNow.get(Calendar.YEAR) - calBirthday.get(Calendar.YEAR);
int yearNow = calNow.get(Calendar.YEAR); int days = 0;
int years = yearNow - yearB -1; logger.debug("Years: " + years);
int dayOfYearBirthDay = calBirthday.get(Calendar.DAY_OF_YEAR); if (calBirthday.get(Calendar.DAY_OF_YEAR) > calNow.get(Calendar.DAY_OF_YEAR)) {
int dayOfYear = calNow.get(Calendar.DAY_OF_YEAR); years--;
int days = 0; days = 365 - (calBirthday.get(Calendar.DAY_OF_YEAR) - calNow.get(Calendar.DAY_OF_YEAR));
if(dayOfYearBirthDay > dayOfYear) {
calBirthday.set(Calendar.YEAR, yearNow - 1);
days = 365 - calBirthday.get(Calendar.DAY_OF_YEAR) + dayOfYear;
} else { } else {
days = dayOfYear - dayOfYearBirthDay; days = calNow.get(Calendar.DAY_OF_YEAR) - calBirthday.get(Calendar.DAY_OF_YEAR);
} }
BigDecimal decimalYears = new BigDecimal(years); BigDecimal decimalYears = new BigDecimal(years);
float fraction = (float)((float)days/(float)365); float fraction = (float) ((float) days / (float) 365);
BigDecimal decimalDays = new BigDecimal(fraction); BigDecimal decimalDays = new BigDecimal(fraction);
age = age.add(decimalYears); age = age.add(decimalYears);
age = age.add(decimalDays); age = age.add(decimalDays);
System.out.print("Years: " + years + "\n"); logger.info("Years: " + years);
System.out.print("Days: " + days + "\n"); logger.info("Days: " + days);
System.out.print("Fraction of days: " + fraction + "\n"); logger.debug("Fraction of days: " + fraction);
} }
return age; return age;
......
...@@ -15,14 +15,12 @@ import org.postgresql.util.PGobject; ...@@ -15,14 +15,12 @@ import org.postgresql.util.PGobject;
public class JsonAttributeConverter implements AttributeConverter<JsonObject, PGobject> { public class JsonAttributeConverter implements AttributeConverter<JsonObject, PGobject> {
public PGobject convertToDatabaseColumn(JsonObject attribute) { public PGobject convertToDatabaseColumn(JsonObject attribute) {
if (attribute == null) {
return null;
}
final PGobject dataValue = new PGobject(); final PGobject dataValue = new PGobject();
dataValue.setType("json"); dataValue.setType("json");
try { try {
if (attribute == null)
dataValue.setValue("null");
else
dataValue.setValue(attribute.toString()); dataValue.setValue(attribute.toString());
} catch (SQLException e) { } catch (SQLException e) {
// This will never run because PGobject.setValue() cannot really // This will never run because PGobject.setValue() cannot really
...@@ -45,10 +43,14 @@ public class JsonAttributeConverter implements AttributeConverter<JsonObject, PG ...@@ -45,10 +43,14 @@ public class JsonAttributeConverter implements AttributeConverter<JsonObject, PG
throw new RuntimeException("Expected JSON object from database"); throw new RuntimeException("Expected JSON object from database");
} }
if(!dbData.getValue().equals("null")) {
// Read as JSON object // Read as JSON object
final StringReader stringReader = new StringReader(dbData.getValue()); final StringReader stringReader = new StringReader(dbData.getValue());
final JsonReader jsonReader = Json.createReader(stringReader); final JsonReader jsonReader = Json.createReader(stringReader);
return jsonReader.readObject(); return jsonReader.readObject();
} else {
return null;
}
} }
} }
...@@ -5,5 +5,6 @@ ...@@ -5,5 +5,6 @@
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src"/> <wb-resource deploy-path="/WEB-INF/classes" source-path="/src"/>
<property name="java-output-path" value="/MoyaTerminalWeb/build/classes"/> <property name="java-output-path" value="/MoyaTerminalWeb/build/classes"/>
<property name="context-root" value="moya-terminal-web"/> <property name="context-root" value="moya-terminal-web"/>
<property name="component.inclusion.patterns" value="WEB-INF/lib/javamelody-core*,WEB-INF/lib/primefaces*,**/*.xml,**/*.xhtml,**/*.properties,**/*.class,**/*.png,**/*.css,**/*.js,resources/*"/>
</wb-module> </wb-module>
</project-modules> </project-modules>
package fi.codecrew.moya.enums;
public enum CardObjectDataType {
UNKNOWN,
USERS_PICTURE,
USERS_BARCODE,
CARDS_BARCODE;
public String toStringLower() {
return this.toString().toLowerCase();
}
}
package fi.codecrew.moya.enums;
public enum CardTemplateDataType {
UNKNOWN,
TEXT_DATA,
OBJECT_DATA;
public String toStringLower() {
return this.toString().toLowerCase();
}
}
package fi.codecrew.moya.enums;
public enum CardTextAlignment {
LEFT,
CENTER,
RIGHT;
public String toStringLower() {
return this.toString().toLowerCase();
}
}
package fi.codecrew.moya.enums;
public enum CardTextDataType {
UNKNOWN,
NICK,
FIRSTNAME,
LASTNAME,
WHOLENAME,
STATIC,
AGE,
ROLE;
public String toStringLower() {
return this.toString().toLowerCase();
}
}
package fi.codecrew.moya.enums;
public enum CardTextStyle {
BOLD,
ITALIC,
PLAIN,
BOLDITALIC;
public String toStringLower() {
return this.toString().toLowerCase();
}
}
...@@ -11,6 +11,22 @@ ...@@ -11,6 +11,22 @@
<f:event type="preRenderView" listener="#{incomingView.initPrintCardView}" /> <f:event type="preRenderView" listener="#{incomingView.initPrintCardView}" />
</f:metadata> </f:metadata>
<ui:define name="content"> <ui:define name="content">
<h1>#{i18n['incomingflow.search']}</h1>
<h:form>
<h:panelGrid columns="2" >
<h:outputText value="#{i18n['incomingflow.multisearch']}" />
<h:outputText value="#{i18n['incomingflow.barcode']}" />
<p:autoComplete id="acsb" value="#{incomingView.searchMulti}" completeMethod="#{incomingView.matchMulti}" converter="#{eventUserConverter}" var="usrx" itemLabel="#{usrx.shortUserDescriptor}" itemValue="#{usrx}">
<p:ajax event="itemSelect" listener="#{incomingView.changeUser}" />
</p:autoComplete>
<p:autoComplete id="acs" value="#{incomingView.searchBarcode}" completeMethod="#{incomingView.matchBarcode}">
<p:ajax event="itemSelect" listener="#{incomingView.changeUser}" />
</p:autoComplete>
</h:panelGrid>
</h:form>
<h:outputScript library="primefaces" name="jquery/jquery.js" target="head" /> <h:outputScript library="primefaces" name="jquery/jquery.js" target="head" />
<h1>#{i18n['incomingflow.userdetails']}</h1> <h1>#{i18n['incomingflow.userdetails']}</h1>
<h:panelGrid id="cropper" columns="3"> <h:panelGrid id="cropper" columns="3">
...@@ -79,21 +95,7 @@ ...@@ -79,21 +95,7 @@
</p:dataTable> </p:dataTable>
</h:form> </h:form>
<h1>#{i18n['incomingflow.search']}</h1>
<h:form>
<h:panelGrid columns="2">
<h:outputText value="#{i18n['incomingflow.barcode']}" />
<h:outputText value="#{i18n['incomingflow.multisearch']}" />
<p:autoComplete id="acs" value="#{incomingView.searchBarcode}" completeMethod="#{incomingView.matchBarcode}">
<p:ajax event="itemSelect" listener="#{incomingView.changeUser}" />
</p:autoComplete>
<p:autoComplete id="acsb" value="#{incomingView.searchMulti}" completeMethod="#{incomingView.matchMulti}" converter="#{eventUserConverter}" var="usrx" itemLabel="#{usrx.shortUserDescriptor}" itemValue="#{usrx}">
<p:ajax event="itemSelect" listener="#{incomingView.changeUser}" />
</p:autoComplete>
</h:panelGrid>
</h:form>
</ui:define> </ui:define>
<ui:define name="sidebar"> <ui:define name="sidebar">
......
...@@ -81,7 +81,6 @@ ...@@ -81,7 +81,6 @@
</h:form> </h:form>
<h:form> <h:form>
<h:panelGroup> <h:panelGroup>
<table> <table>
<ui:fragment rendered="#{!cc.attrs.creating}"> <ui:fragment rendered="#{!cc.attrs.creating}">
......
<!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:users="http://java.sun.com/jsf/composite/tools/user"
xmlns:f="http://java.sun.com/jsf/core"
>
<h:body>
<ui:composition template="#{sessionHandler.template}">
<f:metadata>
<f:event type="preRenderView" listener="#{cardView.initCardCreate}" />
</f:metadata>
<ui:define name="content">
<h:form id="cardTemplates">
<h:panelGrid columns="2">
<h:outputLabel value="#{i18n['cardTemplate.name']}:" />
<h:inputText value="#{cardView.cardTemplate.name}" />
<h:outputLabel value="#{i18n['cardTemplate.power']}:" />
<h:inputText value="#{cardView.cardTemplate.power}" size="4" />
</h:panelGrid>
<h:commandButton action="#{cardView.createTemplate()}" value="#{i18n['cardTemplate.create']}" />
</h:form>
</ui:define>
</ui:composition>
</h:body>
</html>
\ No newline at end of file
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:users="http://java.sun.com/jsf/composite/tools/user"
xmlns:f="http://java.sun.com/jsf/core" xmlns:p="http://primefaces.org/ui">
<h:body>
<ui:composition template="#{sessionHandler.template}">
<ui:define name="content">
<f:metadata>
<f:viewParam name="textdataid" value="#{cardTemplateDataEditView.cardTextDataId}" />
<!-- <f:event type="preRenderView" listener="#{cardTemplateDataEditView.initCardTextData}" /> -->
<f:viewParam name="objectdataid" value="#{cardTemplateDataEditView.cardObjectDataId}" />
<!-- <f:event type="preRenderView" listener="#{cardTemplateDataEditView.initCardObjectData}" /> -->
<f:viewParam name="createobjecttype" value="#{cardTemplateDataEditView.createObjectType}" />
<!-- <f:event type="preRenderView" listener="#{cardTemplateDataEditView.initCreateObjectType}" /> -->
<f:viewParam name="templateid" value="#{cardTemplateDataEditView.templateId}" />
<f:event type="preRenderView" listener="#{cardTemplateDataEditView.initView()}" />
</f:metadata>
<h:form id="cardTemplateData">
<h:panelGrid columns="3">
<!--<h:outputLabel for="id" value="#{i18n['cardTemplate.id']}:" />
<h:outputText id="id" value="#{cardTemplateDataEditView.cardTemplate.id}" />
<h:message for="id" />
-->
<h:outputLabel for="typeTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" value="#{i18n['cardTextData.type']}:" />
<p:selectOneMenu id="typeTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" value="#{cardTemplateDataEditView.cardTextData.textDataType}">
<p:ajax event="change" update="staticTextPanel"/>
<f:selectItems var="textDataType" itemLabel="#{cardTemplateDataEditView.localisedLabel('cardTextData.type.', textDataType)}" value="#{cardTemplateDataEditView.cardTextDataTypes}"/>
</p:selectOneMenu>
<h:message for="typeTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" />
</h:panelGrid>
<p:panel id="staticTextPanel" collapsed="#{(empty cardTemplateDataEditView.cardTextData) or !cardTemplateDataEditView.cardTextData.typeStatic}" style="border:0px">
<h:panelGrid columns = "3" rendered="#{cardTemplateDataEditView.cardTextData.typeStatic}">
<h:outputText for="staticText" rendered="#{cardTemplateDataEditView.cardTextData.typeStatic}" value="#{i18n['cardTextData.text']}"/>
<h:inputText id="staticText" rendered="#{cardTemplateDataEditView.cardTextData.typeStatic}" value="#{cardTemplateDataEditView.cardTextData.text}"/>
<h:message for="staticText" rendered="#{cardTemplateDataEditView.cardTextData.typeStatic}" />
</h:panelGrid>
</p:panel>
<h:panelGrid columns="3">
<h:outputLabel for="typeObjectData" rendered="#{!empty cardTemplateDataEditView.cardObjectData}" value="#{i18n['cardObjectData.type']}:" />
<p:selectOneMenu id="typeObjectData" rendered="#{!empty cardTemplateDataEditView.cardObjectData}" value="#{cardTemplateDataEditView.cardObjectData.objectDataType}">
<f:selectItems var="objectDataType" itemLabel="#{cardTemplateDataEditView.localisedLabel('cardObjectData.type.', objectDataType)}" value="#{cardTemplateDataEditView.cardObjectDataTypes}" />
</p:selectOneMenu>
<h:message for="typeObjectData" rendered="#{!empty cardTemplateDataEditView.cardObjectData}" />
<h:outputLabel for="xTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" value="#{i18n['cardTextData.x']}:" />
<h:inputText id="xTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" value="#{cardTemplateDataEditView.cardTextData.x}"/>
<h:outputLabel for="xObjectData" rendered="#{!empty cardTemplateDataEditView.cardObjectData}" value="#{i18n['cardObjectData.x']}:" />
<h:inputText id="xObjectData" rendered="#{!empty cardTemplateDataEditView.cardObjectData}" value="#{cardTemplateDataEditView.cardObjectData.x}"/>
<h:message for="xTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" />
<h:message for="xObjectData" rendered="#{!empty cardTemplateDataEditView.cardObjectData}" />
<h:outputLabel for="yTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" value="#{i18n['cardTextData.y']}:" />
<h:outputLabel for="yObjectData" rendered="#{!empty cardTemplateDataEditView.cardObjectData}" value="#{i18n['cardObjectData.y']}:" />
<h:inputText id="yTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" value="#{cardTemplateDataEditView.cardTextData.y}"/>
<h:inputText id="yObjectData" rendered="#{!empty cardTemplateDataEditView.cardObjectData}" value="#{cardTemplateDataEditView.cardObjectData.y}"/>
<h:message for="yTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" />
<h:message for="yObjectData" rendered="#{!empty cardTemplateDataEditView.cardObjectData}" />
<h:outputLabel for="zTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" value="#{i18n['cardTextData.zindex']}:" />
<h:outputLabel for="zObjectData" rendered="#{!empty cardTemplateDataEditView.cardObjectData}" value="#{i18n['cardObjectData.zindex']}:" />
<h:inputText id="zTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" value="#{cardTemplateDataEditView.cardTextData.zIndex}"/>
<h:inputText id="zObjectData" rendered="#{!empty cardTemplateDataEditView.cardObjectData}" value="#{cardTemplateDataEditView.cardObjectData.zIndex}"/>
<h:message for="zTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" />
<h:message for="zObjectData" rendered="#{!empty cardTemplateDataEditView.cardObjectData}" />
<h:outputLabel for="sizeTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" value="#{i18n['cardTextData.size']}:" />
<h:outputLabel for="sizeObjectData" rendered="#{!empty cardTemplateDataEditView.cardObjectData}" value="#{i18n['cardObjectData.size']}:" />
<h:inputText id="sizeTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" value="#{cardTemplateDataEditView.cardTextData.size}" size="4" />
<h:inputText id="sizeObjectData" rendered="#{!empty cardTemplateDataEditView.cardObjectData}" value="#{cardTemplateDataEditView.cardObjectData.size}" size="4" />
<h:message for="sizeTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" />
<h:message for="sizeObjectData" rendered="#{!empty cardTemplateDataEditView.cardObjectData}" />
<h:outputLabel for="fontNameTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" value="#{i18n['cardTextData.fontname']}:" />
<h:inputText id="fontNameTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" value="#{cardTemplateDataEditView.cardTextData.fontName}"/>
<h:message for="fontNameTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" />
<h:outputLabel for="fontStyleTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" value="#{i18n['cardTextData.fontstyle']}:" />
<p:selectOneMenu id="fontStyleTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" value="#{cardTemplateDataEditView.cardTextData.fontStyle}">
<f:selectItems var="fontStyle" itemLabel="#{cardTemplateDataEditView.localisedLabel('cardTextData.fontstyle.', fontStyle)}" value="#{cardTemplateDataEditView.fontStyles}"/>
</p:selectOneMenu>
<h:message for="fontStyleTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" />
<h:outputLabel for="textAlignmentTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" value="#{i18n['cardTextData.textalignment']}:" />
<p:selectOneMenu id="textAlignmentTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" value="#{cardTemplateDataEditView.cardTextData.textAlignment}">
<f:selectItems var="textAlignment" itemLabel="#{cardTemplateDataEditView.localisedLabel('cardTextData.textalignment.', textAlignment)}" value="#{cardTemplateDataEditView.textAlignments}"/>
</p:selectOneMenu>
<h:message for="fontAlignmentTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" />
<h:outputLabel for="fontColorTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" value="#{i18n['cardTextData.fontcolor']}:" />
<p:colorPicker id="fontColorTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" value="#{cardTemplateDataEditView.cardTextData.colorHexCode}" />
</h:panelGrid>
<h:commandButton rendered="#{!empty cardTemplateDataEditView.cardTextData}" action="#{cardTemplateDataEditView.saveTextData()}" value="#{i18n['cardTextData.save']}" />
<h:commandButton rendered="#{!empty cardTemplateDataEditView.cardObjectData}" action="#{cardTemplateDataEditView.saveObjectData()}" value="#{i18n['cardObjectData.save']}" />
</h:form>
</ui:define>
</ui:composition>
</h:body>
</html>
\ No newline at end of file
...@@ -38,6 +38,13 @@ ...@@ -38,6 +38,13 @@
<f:convertNumber minFractionDigits="0" maxFractionDigits="2" /> <f:convertNumber minFractionDigits="0" maxFractionDigits="2" />
</h:inputText> </h:inputText>
<!--
<br />
<h:outputLabel for="rolefilter" value="#{i18n['userlist.rolefilter']}" />
<h:selectManyCheckbox layout="pageDirection" styleClass="nowrap" id="rolefilter"
value="#{userSearchView.searchQuery.filterRoles}" converter="#{roleConverter}">
</h:inputText>
-->
<br /> <br />
<h:outputLabel for="rolefilter" value="#{i18n['userlist.rolefilter']}" /> <h:outputLabel for="rolefilter" value="#{i18n['userlist.rolefilter']}" />
...@@ -80,7 +87,7 @@ ...@@ -80,7 +87,7 @@
<h:commandButton value="#{i18n['usercart.downloadExport']}"> <h:commandButton value="#{i18n['usercart.downloadExport']}">
<p:fileDownload value="#{userCartView.userExport}" /> <p:fileDownload value="#{userCartView.userExport}" />
</h:commandButton> </h:commandButton>
<h:commandButton action="#{userCartView.showOverview}" value="#{i18n['usercart.showoverview']}" /> <h:commandButton action="#{userCartView.showOverview()}" value="#{i18n['usercart.showoverview']}" />
<h:commandButton rendered="#{creditTransferView.transferPermissions}" action="#{userCartView.transferCredits}" value="#{i18n['usercart.transferCredits']}" /> <h:commandButton rendered="#{creditTransferView.transferPermissions}" action="#{userCartView.transferCredits}" value="#{i18n['usercart.transferCredits']}" />
......
<!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:users="http://java.sun.com/jsf/composite/tools/user"
xmlns:f="http://java.sun.com/jsf/core"
>
<h:body>
<ui:composition template="#{sessionHandler.template}">
<f:metadata>
<f:viewParam name="templateid" value="#{cardTemplateDataView.templateId}" />
<f:event type="preRenderView" listener="#{cardTemplateDataView.initCardTemplate()}" />
</f:metadata>
<ui:define name="content">
<h:form id="cardTextDatas">
<h:dataTable rendered="#{!empty cardTemplateDataView.cardTextDatas}" value="#{cardTemplateDataView.cardTextDatas}" var="textData">
<h:column>
#{textData.id}
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{i18n['cardTextData.type']}" />
</f:facet>
<h:outputText value="#{textData.textDataType}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{i18n['cardTextData.x']}" />
</f:facet>
<h:outputText value="#{textData.x}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{i18n['cardTextData.y']}" />
</f:facet>
<h:outputText value="#{textData.y}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{i18n['cardTextData.zindex']}" />
</f:facet>
<h:outputText value="#{textData.zIndex}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{i18n['cardTextData.size']}" />
</f:facet>
<h:outputText value="#{textData.size}" />
</h:column>
<h:column>
<h:link outcome="/useradmin/editCardTextData" value="#{i18n['cardTextData.edit']}">
<f:param name="textdataid" value="#{textData.id}" />
</h:link>
</h:column>
</h:dataTable>
<h:dataTable rendered="#{!empty cardTemplateDataView.cardObjectDatas}" value="#{cardTemplateDataView.cardObjectDatas}" var="objectData">
<h:column>
#{objectData.id}
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{i18n['cardObjectData.type']}" />
</f:facet>
<h:outputText value="#{objectData.objectDataType}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{i18n['cardObjectData.x']}" />
</f:facet>
<h:outputText value="#{objectData.x}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{i18n['cardObjectData.y']}" />
</f:facet>
<h:outputText value="#{objectData.y}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{i18n['cardObjectData.zindex']}" />
</f:facet>
<h:outputText value="#{objectData.zIndex}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{i18n['cardObjectData.size']}" />
</f:facet>
<h:outputText value="#{objectData.size}" />
</h:column>
<h:column>
<h:link outcome="/useradmin/editCardTextData" value="#{i18n['cardObjectData.edit']}">
<f:param name="objectdataid" value="#{objectData.id}" />
</h:link>
</h:column>
</h:dataTable>
</h:form>
</ui:define>
</ui:composition>
</h:body>
</html>
\ No newline at end of file
...@@ -46,6 +46,24 @@ ...@@ -46,6 +46,24 @@
<f:param name="templateid" value="#{card.id}" /> <f:param name="templateid" value="#{card.id}" />
</h:link> </h:link>
</h:column> </h:column>
<h:column>
<h:link outcome="/useradmin/editCardTextData" value="#{i18n['cardTextData.create']}">
<f:param name="templateid" value="#{card.id}" />
<f:param name="createobjecttype" value="#{cardView.textDataType}" />
</h:link>
</h:column>
<h:column>
<h:link outcome="/useradmin/editCardTextData" value="#{i18n['cardObjectData.create']}">
<f:param name="templateid" value="#{card.id}"/>
<f:param name="createobjecttype" value="#{cardView.objectDataType}" />
</h:link>
</h:column>
<h:column>
<h:link outcome="/useradmin/listCardTemplateData" value="#{i18n['cardTemplateData.list']}">
<f:param name="templateid" value="#{card.id}" />
</h:link>
</h:column>
</h:dataTable> </h:dataTable>
</h:form> </h:form>
......
...@@ -10,49 +10,103 @@ ...@@ -10,49 +10,103 @@
</f:metadata> </f:metadata>
<ui:define name="content"> <ui:define name="content">
<p:dialog id="rejectDialog" widgetVar="dialog">
<p>Diibadaaba diibadaaba, daaba dii</p>
<p:inputTextarea />
<br />
<p:commandButton oncomplete="PF('dialog').hide()" actionListener="#{userOverviewView.rejectCard()}" value="Apply" onerror="location.reload(true);"/>
<p:commandButton onclick="PF('dialog').hide()" type="button" value="Cancel" onerror="location.reload(true);"/>
</p:dialog>
<h:form id="form"> <h:form id="form">
<p:dataTable value="#{userOverviewView.userOverviewItems}" var="cartItem" binding="#{table}" id="cartOverviewTable"> <p:dataTable value="#{userOverviewView.userOverviewItems}" var="cartItem" binding="#{table}" id="cartOverviewTable">
<p:column style="#{cartItem.printedCard == null ? 'background:grey;' : ''}"> <p:column style="#{cartItem.printedCard == null ? 'background:grey;' : ''}">
<h:panelGroup layout="block" id="schneider" style="background: red;" styleClass="cardstatus-#{cartItem.printedCard == null ? 'nonprintable' : cartItem.printedCard.cardState.toStringLower()}"> <h:panelGroup layout="block" id="schneider" style="background: red;" styleClass="cardstatus-#{cartItem.printedCard == null ? 'nonprintable' : cartItem.printedCard.cardState.toStringLower()}">
<ui:fragment rendered="#{!empty cartItem.eventUser.currentImage}">
<img style="width: 150px;" src="#{request.contextPath}/dydata/userimage/#{cartItem.eventUser.currentImage.id}.img" alt="image" /> <ui:fragment rendered="#{(!empty cartItem.eventUser.currentImage) and (!empty cartItem.eventUser.currentImage.imageData)}">
<img style="width: 150px;" src="#{request.contextPath}/dydata/userimage/#{cartItem.eventUser.currentImage.id}.img" alt="image" onclick="PF('cropDialog#{table.rowIndex}').show();"/>
</ui:fragment> </ui:fragment>
<p:dialog id="imageCropperDialog" for="image" widgetVar="cropDialog#{table.rowIndex}" width="300" position="left">
<h:panelGrid>
<p:imageCropper value="#{cartItem.croppedImage}" aspectRatio="0.7317073170731707" image="/dydata/userimage/#{cartItem.eventUser.currentImage.id}.img" />
<h:commandButton action="#{userOverviewView.crop}" value="#{i18n['user.cropImage']}" oncomplete="PF('cropDialog#{table.rowIndex}').hide()"/>
</h:panelGrid>
</p:dialog>
<ui:fragment rendered="#{empty cartItem.eventUser.currentImage}"> <ui:fragment rendered="#{empty cartItem.eventUser.currentImage}">
<h:outputText value="#{i18n['overview.noimage']}" /> <h:outputText value="#{i18n['overview.noimage']}" />
</ui:fragment> </ui:fragment>
</h:panelGroup> </h:panelGroup>
</p:column> </p:column>
<p:column id="cardinfo" style="#{cartItem.printedCard == null ? 'background:grey;' : ''}"> <p:column id="cardinfo" style="#{cartItem.printedCard == null ? 'background:grey;' : ''}">
<h2> <h2>
<h:outputText value="#{cartItem.eventUser.nick}" /> <h:outputText value="#{cartItem.eventUser.nick}" />
</h2> </h2>
<p:panel id="userInfo">
<h:panelGrid columns="2" border="0"> <h:panelGrid columns="2" border="0">
<h:outputText value="#{i18n['user.wholeName']}" /> <h:outputText value="#{i18n['user.wholeName']}" />
<h:outputText value="#{cartItem.eventUser.firstnames} #{cartItem.eventUser.lastname}" /> <h:outputText value="#{cartItem.eventUser.firstnames} #{cartItem.eventUser.lastname}" />
<h:outputText value="#{i18n['user.phone']}" />
<h:outputText value="#{cartItem.eventUser.phone}" />
<h:outputText value="#{i18n['user.email']}" />
<h:outputText value="#{cartItem.eventUser.email}" />
<h:outputText value="#{i18n['printedCard.template']}" /> <h:outputText value="#{i18n['printedCard.template']}" />
<h:outputText value="#{cartItem.printedCard.template.name}" /> <h:outputText value="#{cartItem.printedCard.template.name}" />
<h:outputText value="#{i18n['printedCard.cardState']}" /> <h:outputText value="#{i18n['printedCard.cardState']}" />
<h:outputText value="#{cartItem.printedCard.cardState}" /> <h:outputText value="#{cartItem.printedCard.cardState}" />
<!-- <button onclick="location.replace('#{request.contextPath}/useradmin/edit.jsf?userid=#{user.user.id}')">#{i18n['user.edit']}</button> -->
</h:panelGrid> </h:panelGrid>
</p:panel>
</p:column> </p:column>
<p:column styleClass="cardstatus-#{cartItem.printedCard == null ? 'nonprintable' : cartItem.printedCard.cardState.toStringLower()}"> <p:column styleClass="cardstatus-#{cartItem.printedCard == null ? 'nonprintable' : cartItem.printedCard.cardState.toStringLower()}">
<p:commandButton value="OK #{table.rowIndex}" actionListener="#{userOverviewView.acceptCard()}" ajax="true" onerror="location.reload(true);" update="schneider cardinfo"> <p:commandButton value="OK #{table.rowIndex}" actionListener="#{userOverviewView.acceptCard()}" ajax="true" onerror="location.reload(true);" update=":form:cartOverviewTable:userInfo">
<!-- <f:ajax execute="uov-items" render="@all"></f:ajax> --> <!-- <f:ajax event="click" update="userInfo"></f:ajax>-->
</p:commandButton> </p:commandButton>
<p:commandButton id="Reject" value="Reject" onclick="PF('dialog').show();" type="button" onerror="location.reload(true);"/> <p:commandButton id="Reject#{table.rowIndex}" value="Reject" onclick="PF('dialog#{table.rowIndex}').show();" type="button" onerror="location.reload(true);" />
<p:dialog id="rejectDialog" widgetVar="dialog#{table.rowIndex}" width="600">
<h:selectBooleanCheckbox id="sendRejectionMail" value="#{cartItem.sendRejectionMail}">
<p:ajax event="change" update="sendMailPanel"/>
<h:outputLabel for="sendRejectionMail" value="#{i18n['rejectcard.sendRejectionMail']}" />
</h:selectBooleanCheckbox>
<h:panelGrid id="sendMailPanel" columns="1">
<h:panelGroup>
<h:outputText value="#{i18n['rejectcard.toAddr']}:" rendered="#{cartItem.sendRejectionMail}"/>
<h:inputText value="#{cartItem.rejectionMsgToAddr}" rendered="#{cartItem.sendRejectionMail}"/>
</h:panelGroup>
<h:panelGroup>
<h:outputText value="#{i18n['rejectcard.toName']}:" rendered="#{cartItem.sendRejectionMail}"/>
<h:inputText value="#{cartItem.rejectionMsgToName}" rendered="#{cartItem.sendRejectionMail}"/>
</h:panelGroup>
<h:panelGroup>
<h:outputText value="#{i18n['rejectcard.subject']}:" rendered="#{cartItem.sendRejectionMail}"/>
<h:inputText value="#{cartItem.rejectionMsgSubject}" rendered="#{cartItem.sendRejectionMail}"/>
</h:panelGroup>
<h:panelGroup>
<h:outputText value="#{i18n['rejectcard.body']}:" rendered="#{cartItem.sendRejectionMail}"/>
<h:outputText value="" rendered="#{cartItem.sendRejectionMail}"/>
</h:panelGroup>
<p:inputTextarea value="#{cartItem.rejectionMsgBody}" rendered="#{cartItem.sendRejectionMail}"/>
<h:panelGroup>
<p:commandButton rendered="#{cartItem.sendRejectionMail}" oncomplete="PF('dialog#{table.rowIndex}').hide()" actionListener="#{userOverviewView.rejectCard()}" value="#{i18n['rejectcard.sendAndReject']}" ajax="true" onerror="location.reload(true);" update=":form:cartOverviewTable:userInfo"/>
<p:commandButton rendered="#{!cartItem.sendRejectionMail}" oncomplete="PF('dialog#{table.rowIndex}').hide()" actionListener="#{userOverviewView.rejectCard()}" value="#{i18n['rejectcard.reject']}" ajax="true" onerror="location.reload(true);" update=":form:cartOverviewTable:userInfo"/>
<p:commandButton onclick="PF('dialog#{table.rowIndex}').hide()" type="button" value="Cancel" onerror="location.reload(true);"/>
</h:panelGroup>
</h:panelGrid>
</p:dialog>
<!--<p:commandButton id="Reject" value="Reject" onclick="#{userOverviewView.rejectCard()}" type="button" onerror="location.reload(true);" update="schneider cardinfo"/>-->
</p:column> </p:column>
</p:dataTable> </p:dataTable>
</h:form> </h:form>
......
...@@ -201,6 +201,51 @@ cardTemplate.roles = Associated roles ...@@ -201,6 +201,51 @@ cardTemplate.roles = Associated roles
cardTemplate.save = Save cardTemplate.save = Save
cardTemplate.sendImage = Upload Image cardTemplate.sendImage = Upload Image
cardTemplateData.list = List datas
cardObjectData.create = Add object data
cardObjectData.save = Save
cardObjectData.edit = Edit
cardObjectData.x = X coordinate
cardObjectData.y = Y coordinate
cardObjectData.size = Width (px)
cardObjectData.zindex = Z index
cardObjectData.type = Type
cardObjectData.type.UNKNOWN = Unknown
cardObjectData.type.USERS_PICTURE = User's picture
cardObjectData.type.USERS_BARCODE = User's barcode
cardObjectData.type.CARDS_BARCODE = Card's barcode
cardTextData.create = Add text data
cardTextData.save = Save
cardTextData.edit = Edit
cardTextData.x = X coordinate
cardTextData.y = Y coordinate
cardTextData.size = Size of text (px)
cardTextData.zindex = Z index
cardTextData.fontname = Font name
cardTextData.fontcolor = Font color
cardTextData.fontstyle = Font style
cardTextData.fontstyle.PLAIN = Plain
cardTextData.fontstyle.BOLD = Bold
cardTextData.fontstyle.ITALIC = Italic
cardTextData.fontstyle.BOLDITALIC = Bold and Italic
cardTextData.textalignment = Font alignment
cardTextData.textalignment.LEFT = Left
cardTextData.textalignment.CENTER = Center
cardTextData.textalignment.RIGHT = Right
cardTextData.text = Static text
cardTextData.type = Type
cardTextData.type.UNKNOWN = Unknown
cardTextData.type.NICK = Nick
cardTextData.type.WHOLENAME = Wholename
cardTextData.type.FIRSTNAME = Firstname
cardTextData.type.LASTNAME = Lastname
cardTextData.type.STATIC = Static
cardTextData.type.AGE = Age
cardTextData.type.ROLE = Role
cart.item = Item cart.item = Item
cart.item_quantity = Quantity cart.item_quantity = Quantity
cart.item_total = Total cart.item_total = Total
...@@ -749,6 +794,9 @@ poll.save = Send answers ...@@ -749,6 +794,9 @@ poll.save = Send answers
print = Print print = Print
printedCard.template = Template
printedCard.cardState = Card state
product.barcode = Barcode product.barcode = Barcode
product.billed = Billed product.billed = Billed
product.boughtTotal = Products billed product.boughtTotal = Products billed
...@@ -823,12 +871,23 @@ readerview.cards = Card ( printcount ) ...@@ -823,12 +871,23 @@ readerview.cards = Card ( printcount )
registerleaflet.title = Register leaflet registerleaflet.title = Register leaflet
rejectcard.mailSubject = Profile picture rejected
rejectcard.mailBody = Your profile picture for event {0} has been rejected. Please upload new picture as soon as possible. Picture is valid if your face is shown clearly and can be easily recognized. \n\n
rejectcard.toAddr = Email address
rejectcard.toName = Name
rejectcard.body = Body
rejectcard.subject = Subject
rejectcard.sendRejectionMail = Send mail
rejectcard.sendAndReject = Send and reject
rejectcard.reject = Reject
resetMail.body = You can change a forgotten password by inserting your username or email address to the field below. A link where you can change the password will be sent to the email address associated to that. resetMail.body = You can change a forgotten password by inserting your username or email address to the field below. A link where you can change the password will be sent to the email address associated to that.
resetMail.email = Email address resetMail.email = Email address
resetMail.header = Reset lost password resetMail.header = Reset lost password
resetMail.send = Send resetMail.send = Send
resetMail.username = Username 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
......
...@@ -203,6 +203,50 @@ cardTemplate.roles = Yhdistetyt roolit ...@@ -203,6 +203,50 @@ cardTemplate.roles = Yhdistetyt roolit
cardTemplate.save = Tallenna cardTemplate.save = Tallenna
cardTemplate.sendImage = Lataa kuva cardTemplate.sendImage = Lataa kuva
cardTemplateData.list = Ohjeissislln listaus
cardObjectData.create = Liit kuvia
cardObjectData.save = Tallenna
cardObjectData.edit = Muokkaa
cardObjectData.x = X koordinaatti
cardObjectData.y = Y koordinaatti
cardObjectData.size = Leveys (px)
cardObjectData.zindex = Z index
cardObjectData.type = Tyyppi
cardObjectData.type.UNKNOWN = Tuntematon
cardObjectData.type.USERS_PICTURE = Kyttjn kuva
cardObjectData.type.USERS_BARCODE = Kyttjn viivakoodi
cardObjectData.type.CARDS_BARCODE = Kortin viivakoodi
cardTextData.create = Liit teksti
cardTextData.save = Tallenna
cardTextData.edit = Muokkaa
cardTextData.x = X koordinaatti
cardTextData.y = Y koordinaatti
cardTextData.size = Tekstin koko (px)
cardTextData.zindex = Z index
cardTextData.fontname = Fontin nimi
cardTextData.fontstyle = Fontin tyyli
cardTextData.fontstyle.PLAIN = Ei tyylittely
cardTextData.fontstyle.BOLD = Bold
cardTextData.fontstyle.ITALIC = Italic
cardTextData.fontstyle.BOLDITALIC = Bold ja Italic
cardTextData.textalignment = Fontin sijoittelu
cardTextData.textalignment.LEFT = Vasen
cardTextData.textalignment.CENTER = Keskell
cardTextData.textalignment.RIGHT = Oikea
cardTextData.text = Kiinte teksti
cardTextData.type = Tyyppi
cardTextData.type.UNKNOWN = Tuntematon
cardTextData.type.NICK = Nimimerkki
cardTextData.type.WHOLENAME = Kokonimi
cardTextData.type.FIRSTNAME = Etunimi
cardTextData.type.LASTNAME = Sukunimi
cardTextData.type.STATIC = Staattinen
cardTextData.type.AGE = Ik
cardTextData.type.ROLE = Rooli
cardTextData.fontcolor = Fontin vri
cart.item = Tuote cart.item = Tuote
cart.item_quantity = M\u00E4\u00E4r\u00E4 cart.item_quantity = M\u00E4\u00E4r\u00E4
cart.item_total = Yhteens\u00E4 cart.item_total = Yhteens\u00E4
...@@ -733,6 +777,9 @@ poll.save = L\u00E4het\u00E4 vastauksesi ...@@ -733,6 +777,9 @@ poll.save = L\u00E4het\u00E4 vastauksesi
print = Tulosta print = Tulosta
printedCard.template = Kortin template
printedCard.cardState = Kortin tila
product.barcode = Viivakoodi product.barcode = Viivakoodi
product.billed = Laskutettu product.billed = Laskutettu
product.boughtTotal = Tuotteita laskutettu product.boughtTotal = Tuotteita laskutettu
...@@ -809,6 +856,16 @@ readerview.cards = Kortit ( tulostuslkm ) ...@@ -809,6 +856,16 @@ readerview.cards = Kortit ( tulostuslkm )
registerleaflet.title = Rekisteriseloste registerleaflet.title = Rekisteriseloste
rejectcard.mailSubject = {0} -tapahtuman profiilin kuva hyltty
rejectcard.mailBody = {0} -tapahtuman profiiliisi sy\u00F6tetty kuva on hyl\u00E4tty soveltumattomana. Sy\u00F6t\u00E4 uusi kuva v\u00E4litt\u00F6m\u00E4sti. Kuvan saat asetettua profiili-sivulta. Hyv\u00E4ksytt\u00E4v\u00E4ss\u00E4 kuvassa kasvosi n\u00E4kyvt selke\u00E4sti ja tunnistettavasti. \n\n
rejectcard.toAddr = Shkpostiosoite
rejectcard.toName = Nimi
rejectcard.body = Viestin sislt
rejectcard.subject = Viestin otsikko
rejectcard.sendRejectionMail = Lhet shkpostia
rejectcard.sendAndReject = Lhet ja hylk
rejectcard.reject = Hylk
resetMail.body = Voit vaihtaa unohtuneen salasanan sy\u00F6tt\u00E4m\u00E4ll\u00E4 k\u00E4ytt\u00E4j\u00E4tunnuksesi tai tunnukseen liitetyn s\u00E4hk\u00F6postiosoitteen allaolevaan kentt\u00E4\u00E4n. Tunnukseen liitettyyn s\u00E4hk\u00F6postiosoitteeseen l\u00E4hetet\u00E4\u00E4n kertak\u00E4ytt\u00F6inen osoite jossa voit vaihtaa sy\u00F6tt\u00E4m\u00E4si k\u00E4ytt\u00E4j\u00E4tunnuksen salasanan. resetMail.body = Voit vaihtaa unohtuneen salasanan sy\u00F6tt\u00E4m\u00E4ll\u00E4 k\u00E4ytt\u00E4j\u00E4tunnuksesi tai tunnukseen liitetyn s\u00E4hk\u00F6postiosoitteen allaolevaan kentt\u00E4\u00E4n. Tunnukseen liitettyyn s\u00E4hk\u00F6postiosoitteeseen l\u00E4hetet\u00E4\u00E4n kertak\u00E4ytt\u00F6inen osoite jossa voit vaihtaa sy\u00F6tt\u00E4m\u00E4si k\u00E4ytt\u00E4j\u00E4tunnuksen salasanan.
resetMail.email = S\u00E4hk\u00F6postiosoite resetMail.email = S\u00E4hk\u00F6postiosoite
resetMail.header = Salasana unohtunut? resetMail.header = Salasana unohtunut?
...@@ -1249,11 +1306,13 @@ user.uploadimage = L\u00E4het\u00E4 kuva ...@@ -1249,11 +1306,13 @@ user.uploadimage = L\u00E4het\u00E4 kuva
user.username = K\u00E4ytt\u00E4j\u00E4tunnus user.username = K\u00E4ytt\u00E4j\u00E4tunnus
user.validate.notUniqueUsername = K\u00E4ytt\u00E4j\u00E4tunnus on jo olemassa. Ole hyv\u00E4 ja valitse toinen tunnus user.validate.notUniqueUsername = K\u00E4ytt\u00E4j\u00E4tunnus on jo olemassa. Ole hyv\u00E4 ja valitse toinen tunnus
user.validateUser.commit = L\u00E4het\u00E4 user.validateUser.commit = L\u00E4het\u00E4
user.validateUser.header = Ole hyv\u00E4 ja sy\u00F6t\u00E4 kirjautumistiedot user.validateUser.header = Ole hyv\u00E4 ja sy\u00E4t\u00E4 kirjautumistiedot
user.wholeName = Nimi user.wholeName = Nimi
user.wholename = Koko nimi user.wholename = Koko nimi
user.zipCode = Postinumero user.zipCode = Postinumero
userImport.commit = Hyv\u00E4ksy userImport.commit = Hyv\u00E4ksy
userView.image = Kuva userView.image = Kuva
......
package fi.codecrew.moya.web.cdiview.card;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import javax.ejb.EJB;
import javax.enterprise.context.ConversationScoped;
import javax.inject.Named;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.codecrew.moya.beans.CardTemplateBeanLocal;
import fi.codecrew.moya.enums.CardObjectDataType;
import fi.codecrew.moya.enums.CardTemplateDataType;
import fi.codecrew.moya.enums.CardTextAlignment;
import fi.codecrew.moya.enums.CardTextDataType;
import fi.codecrew.moya.enums.CardTextStyle;
import fi.codecrew.moya.enums.apps.UserPermission;
import fi.codecrew.moya.model.CardObjectData;
import fi.codecrew.moya.model.CardTemplate;
import fi.codecrew.moya.model.CardTextData;
import fi.codecrew.moya.utilities.I18n;
import fi.codecrew.moya.web.cdiview.GenericCDIView;
import fi.codecrew.moya.web.cdiview.user.UserView;
@Named
@ConversationScoped
public class CardTemplateDataEditView extends GenericCDIView {
private static final long serialVersionUID = -9115983838324313414L;
private static final Logger logger = LoggerFactory.getLogger(CardTemplateDataEditView.class);
private Integer templateId = 0;
private Integer cardTextDataId = 0;
private Integer cardObjectDataId = 0;
private CardTemplateDataType createObjectType = CardTemplateDataType.UNKNOWN;
private CardTemplate cardTemplate;
private CardTextData cardTextData;
private CardObjectData cardObjectData;
private String fontColorHex;
@EJB
private transient CardTemplateBeanLocal cfbean;
public void initView() {
if (super.requirePermissions(UserPermission.VIEW_ALL))
{
if(cardTemplate == null) {
if(createObjectType != CardTemplateDataType.UNKNOWN && cardObjectDataId == 0 && cardTextDataId == 0) {
if(createObjectType == CardTemplateDataType.TEXT_DATA) {
setCardTextData(new CardTextData());
logger.info("create object is Text Data");
}
else if(createObjectType == CardTemplateDataType.OBJECT_DATA) {
setCardObjectData(new CardObjectData());
logger.info("create object is Object Data");
}
} else if(cardObjectDataId != 0){
setCardObjectData(cfbean.findObjectData(cardObjectDataId));
logger.info("CardObjectData {}", cardObjectData);
} else if(cardTextDataId != 0) {
setCardTextData(cfbean.findTextData(cardTextDataId));
logger.info("CardTextData {}", cardTextData);
}
setCardTemplate(cfbean.find(templateId));
logger.info("CardTemplate {}", cardTemplate);
if(cardTextData != null)
cardTextData.setCardTemplate(cardTemplate);
else if(cardObjectData != null)
cardObjectData.setCardTemplate(cardTemplate);
super.beginConversation();
}
}
}
public void initCardTextData() {
if (super.requirePermissions(UserPermission.VIEW_ALL))
{
if(cardTextData == null) {
setCardTextData(cfbean.findTextData(cardTextDataId));
super.beginConversation();
}
}
}
public void initCardObjectData() {
if (super.requirePermissions(UserPermission.VIEW_ALL))
{
if(cardObjectData == null) {
setCardObjectData(cfbean.findObjectData(cardObjectDataId));
super.beginConversation();
}
}
}
public void initCardTemplate() {
if (super.requirePermissions(UserPermission.VIEW_ALL))
{
if(cardTemplate == null) {
setCardTemplate(cfbean.find(templateId));
if(cardTextData != null)
cardTextData.setCardTemplate(cardTemplate);
else if(cardObjectData != null)
cardObjectData.setCardTemplate(cardTemplate);
super.beginConversation();
}
}
}
public void initCardTextDataCreate() {
if (super.requirePermissions(UserPermission.VIEW_ALL))
{
if(cardTextData == null) {
setCardTextData(new CardTextData());
//cardTextData.setMeta(Json.createObjectBuilder().build());
super.beginConversation();
}
}
}
public void initCardTextObjectCreate() {
if (super.requirePermissions(UserPermission.VIEW_ALL))
{
if(cardObjectData == null) {
setCardObjectData(new CardObjectData());
//cardObjectData.setMeta(Json.createObjectBuilder().build());
super.beginConversation();
}
}
}
public void initCreateObjectType() {
if (super.requirePermissions(UserPermission.VIEW_ALL))
{
/*
if(createObjectType != CardTemplateDataType.UNKNOWN) {
if(createObjectType == 1)
setCardTextData(new CardTextData());
else if(createObjectType == 2)
setCardObjectData(new CardObjectData());
super.beginConversation();
}*/
}
}
public String localisedLabel(String text, String type) {
return I18n.get(text + type);
}
public String getFontColorHex() {
return fontColorHex;
}
public void setFontColorHex(String fontColorHex) {
this.fontColorHex = fontColorHex;
}
public String saveTextData() {
//if(cardTextData.getMeta() == null)
// cardTextData.setMeta(Json.createObjectBuilder().build());
cardTextData = cfbean.save(cardTextData);
return null;
}
public String saveObjectData() {
cardObjectData = cfbean.save(cardObjectData);
return null;
}
public CardTextData getCardTextData() {
return cardTextData;
}
public void setCardTextData(CardTextData cardTextData) {
this.cardTextData = cardTextData;
}
public CardObjectData getCardObjectData() {
return cardObjectData;
}
public void setCardObjectData(CardObjectData cardObjectData) {
this.cardObjectData = cardObjectData;
}
public Integer getCardTextDataId() {
return cardTextDataId;
}
public void setCardTextDataId(Integer cardTextDataId) {
this.cardTextDataId = cardTextDataId;
}
public Integer getCardObjectDataId() {
return cardObjectDataId;
}
public void setCardObjectDataId(Integer cardObjectDataId) {
this.cardObjectDataId = cardObjectDataId;
}
public CardTemplateDataType getCreateObjectType() {
return createObjectType;
}
public void setCreateObjectType(CardTemplateDataType createObjectType) {
this.createObjectType = createObjectType;
}
public Integer getTemplateId() {
return templateId;
}
public void setTemplateId(Integer templateId) {
this.templateId = templateId;
}
public CardTemplate getCardTemplate() {
return cardTemplate;
}
public void setCardTemplate(CardTemplate cardTemplate) {
this.cardTemplate = cardTemplate;
}
public List<CardObjectDataType> getCardObjectDataTypes() {
return new ArrayList<CardObjectDataType>(Arrays.asList(CardObjectDataType.values()));
}
public List<CardTextDataType> getCardTextDataTypes() {
List<CardTextDataType> types = new ArrayList<CardTextDataType>(Arrays.asList(CardTextDataType.values()));
return types;
}
public List<CardTextStyle> getFontStyles() {
return new ArrayList<CardTextStyle>(Arrays.asList(CardTextStyle.values()));
}
public List<CardTextAlignment> getTextAlignments() {
return new ArrayList<CardTextAlignment>(Arrays.asList(CardTextAlignment.values()));
}
}
package fi.codecrew.moya.web.cdiview.card;
import java.lang.reflect.Array;
import java.util.List;
import javax.ejb.EJB;
import javax.enterprise.context.ConversationScoped;
import javax.inject.Named;
import javax.json.Json;
import fi.codecrew.moya.beans.CardTemplateBeanLocal;
import fi.codecrew.moya.enums.apps.UserPermission;
import fi.codecrew.moya.model.CardObjectData;
import fi.codecrew.moya.model.CardTemplate;
import fi.codecrew.moya.model.CardTextData;
import fi.codecrew.moya.web.cdiview.GenericCDIView;
@Named
@ConversationScoped
public class CardTemplateDataView extends GenericCDIView {
private static final long serialVersionUID = -9115983838324313414L;
private Integer templateId = 0;
private Integer cardTextDataId = 0;
private Integer cardObjectDataId = 0;
private Integer createObjectType = 0;
private CardTemplate cardTemplate;
private CardTextData cardTextData;
private CardObjectData cardObjectData;
private List<CardTextData> cardTextDatas;
private List<CardObjectData> cardObjectDatas;
@EJB
private transient CardTemplateBeanLocal cfbean;
public void initCardTemplate() {
if (super.requirePermissions(UserPermission.VIEW_ALL))
{
if(cardTemplate == null) {
setCardTemplate(cfbean.find(templateId));
if(cardTemplate != null)
{
setCardTextDatas(cfbean.findCardTextDatas(cardTemplate));
setCardObjectDatas(cfbean.findCardObjectDatas(cardTemplate));
}
}
super.beginConversation();
}
}
public String saveTextData() {
//if(cardTextData.getMeta() == null)
// cardTextData.setMeta(Json.createObjectBuilder().build());
cardTextData = cfbean.save(cardTextData);
return null;
}
public String saveObjectData() {
cardObjectData = cfbean.save(cardObjectData);
return null;
}
public CardTextData getCardTextData() {
return cardTextData;
}
public void setCardTextData(CardTextData cardTextData) {
this.cardTextData = cardTextData;
}
public CardObjectData getCardObjectData() {
return cardObjectData;
}
public void setCardObjectData(CardObjectData cardObjectData) {
this.cardObjectData = cardObjectData;
}
public Integer getCardTextDataId() {
return cardTextDataId;
}
public void setCardTextDataId(Integer cardTextDataId) {
this.cardTextDataId = cardTextDataId;
}
public Integer getCardObjectDataId() {
return cardObjectDataId;
}
public void setCardObjectDataId(Integer cardObjectDataId) {
this.cardObjectDataId = cardObjectDataId;
}
public Integer getCreateObjectType() {
return createObjectType;
}
public void setCreateObjectType(Integer createObjectType) {
this.createObjectType = createObjectType;
}
public Integer getTemplateId() {
return templateId;
}
public void setTemplateId(Integer templateId) {
this.templateId = templateId;
}
public CardTemplate getCardTemplate() {
return cardTemplate;
}
public void setCardTemplate(CardTemplate cardTemplate) {
this.cardTemplate = cardTemplate;
}
public List<CardTextData> getCardTextDatas() {
return cardTextDatas;
}
public void setCardTextDatas(List<CardTextData> cardTextDatas) {
this.cardTextDatas = cardTextDatas;
}
public List<CardObjectData> getCardObjectDatas() {
return cardObjectDatas;
}
public void setCardObjectDatas(List<CardObjectData> cardObjectDatas) {
this.cardObjectDatas = cardObjectDatas;
}
}
...@@ -15,6 +15,7 @@ import org.slf4j.LoggerFactory; ...@@ -15,6 +15,7 @@ import org.slf4j.LoggerFactory;
import fi.codecrew.moya.beans.CardTemplateBeanLocal; import fi.codecrew.moya.beans.CardTemplateBeanLocal;
import fi.codecrew.moya.beans.EventBeanLocal; import fi.codecrew.moya.beans.EventBeanLocal;
import fi.codecrew.moya.enums.CardTemplateDataType;
import fi.codecrew.moya.enums.apps.UserPermission; import fi.codecrew.moya.enums.apps.UserPermission;
import fi.codecrew.moya.model.CardTemplate; import fi.codecrew.moya.model.CardTemplate;
import fi.codecrew.moya.model.EventUser; import fi.codecrew.moya.model.EventUser;
...@@ -172,4 +173,11 @@ public class CardView extends GenericCDIView { ...@@ -172,4 +173,11 @@ public class CardView extends GenericCDIView {
this.templateImage = templateImage; this.templateImage = templateImage;
} }
public CardTemplateDataType getTextDataType() {
return CardTemplateDataType.TEXT_DATA;
}
public CardTemplateDataType getObjectDataType() {
return CardTemplateDataType.OBJECT_DATA;
}
} }
package fi.codecrew.moya.web.cdiview.user; package fi.codecrew.moya.web.cdiview.user;
import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import javax.ejb.EJB; import javax.ejb.EJB;
...@@ -12,9 +13,13 @@ import org.slf4j.Logger; ...@@ -12,9 +13,13 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import fi.codecrew.moya.beans.CardTemplateBeanLocal; import fi.codecrew.moya.beans.CardTemplateBeanLocal;
import fi.codecrew.moya.beans.UserBeanLocal;
import fi.codecrew.moya.enums.CardState; import fi.codecrew.moya.enums.CardState;
import fi.codecrew.moya.model.EventUser; import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.PrintedCard; import fi.codecrew.moya.model.PrintedCard;
import fi.codecrew.moya.model.UserImage;
import fi.codecrew.moya.util.MailMessage;
import fi.codecrew.moya.utilities.I18n;
import fi.codecrew.moya.web.cdiview.GenericCDIView; import fi.codecrew.moya.web.cdiview.GenericCDIView;
import fi.codecrew.moya.web.helpers.UserOverviewItem; import fi.codecrew.moya.web.helpers.UserOverviewItem;
...@@ -29,6 +34,9 @@ public class UserOverviewView extends GenericCDIView { ...@@ -29,6 +34,9 @@ public class UserOverviewView extends GenericCDIView {
@EJB @EJB
private CardTemplateBeanLocal cardTemplateBean; private CardTemplateBeanLocal cardTemplateBean;
@EJB
private UserBeanLocal userBean;
private ListDataModel<UserOverviewItem> userOverviewItems = null; private ListDataModel<UserOverviewItem> userOverviewItems = null;
private static final Logger logger = LoggerFactory.getLogger(UserOverviewView.class); private static final Logger logger = LoggerFactory.getLogger(UserOverviewView.class);
...@@ -38,10 +46,12 @@ public class UserOverviewView extends GenericCDIView { ...@@ -38,10 +46,12 @@ public class UserOverviewView extends GenericCDIView {
ArrayList<UserOverviewItem> ovlist = new ArrayList<UserOverviewItem>(); ArrayList<UserOverviewItem> ovlist = new ArrayList<UserOverviewItem>();
for (EventUser eu : getUserCartView().getUsercart()) { for (EventUser eu : getUserCartView().getUsercart()) {
PrintedCard pc = cardTemplateBean.checkPrintedCard(eu); PrintedCard pc = cardTemplateBean.checkPrintedCard(eu);
UserOverviewItem uoi = new UserOverviewItem(eu, pc); UserOverviewItem uoi = new UserOverviewItem(eu, pc, I18n.get("rejectcard.mailSubject"), I18n.get("rejectcard.mailBody"));
ovlist.add(uoi); ovlist.add(uoi);
} }
userOverviewItems = new ListDataModel<>(ovlist); userOverviewItems = new ListDataModel<>(ovlist);
super.beginConversation();
} }
} }
...@@ -51,13 +61,36 @@ public class UserOverviewView extends GenericCDIView { ...@@ -51,13 +61,36 @@ public class UserOverviewView extends GenericCDIView {
public void rejectCard() public void rejectCard()
{ {
UserOverviewItem cardItem = userOverviewItems.getRowData(); logger.info("rejectCard() start");
logger.info("Rejecting card"); UserOverviewItem cardItem = null;
try {
cardItem = userOverviewItems.getRowData();
logger.info("rejectCard() cardItem {}", cardItem);
}catch(Exception ex) {
logger.info(ex.getMessage());
}
if(cardItem != null) {
logger.info("rejectCard(): Rejecting card {}", cardItem.getPrintedCard());
PrintedCard card = cardItem.getPrintedCard(); PrintedCard card = cardItem.getPrintedCard();
card.setCardState(CardState.REJECTED);
card = cardTemplateBean.saveCard(card); if(card != null) {
MailMessage mail = null;
if(cardItem.isSendRejectionMail()) {
mail = new MailMessage();
mail.setToAddress(cardItem.getRejectionMsgToAddr());
mail.setToName(cardItem.getRejectionMsgToName());
mail.setTo(card.getUser().getUser());
mail.setSubject(cardItem.getRejectionMsgSubject());
mail.setMessage(cardItem.getRejectionMsgBody());
}
card = userBean.rejectPrintedCard(card, mail);
cardItem.setPrintedCard(card); cardItem.setPrintedCard(card);
logger.info("rejectCard(): Rejected card {}, state {}", card, card.getCardState() );
}
}
// cardTemplateBean.setCardState(cardItem.getPrintedCard(), CardState.REJECTED); // cardTemplateBean.setCardState(cardItem.getPrintedCard(), CardState.REJECTED);
} }
...@@ -73,6 +106,30 @@ public class UserOverviewView extends GenericCDIView { ...@@ -73,6 +106,30 @@ public class UserOverviewView extends GenericCDIView {
logger.info("Accepted card: {}", cardItem.getPrintedCard()); logger.info("Accepted card: {}", cardItem.getPrintedCard());
} }
public String crop()
{
UserOverviewItem cardItem = userOverviewItems.getRowData();
if (cardItem == null || cardItem.getCroppedImage() == null )
return null;
logger.info("Cropped image {}x{}", cardItem.getCroppedImage().getLeft(), cardItem.getCroppedImage().getTop());
logger.info("Cropped data bytesize {}, type {}", cardItem.getCroppedImage().getBytes().length, cardItem.getCroppedImage().getOriginalFilename());
try {
UserImage newImage =
userBean.saveCroppedImage(cardItem.getEventUser().getCurrentImage(),
cardItem.getCroppedImage().getLeft(), cardItem.getCroppedImage().getTop(),
cardItem.getCroppedImage().getWidth(), cardItem.getCroppedImage().getHeight());
cardItem.setEventUser(userBean.getEventUser(newImage.getUser(), false));
} catch (IOException e) {
logger.info("Error converting image", e);
super.addFaceMessage("user.errorConvertingImage");
}
return null;
}
public void setUserOverviewItems(ListDataModel<UserOverviewItem> userOverviewItems) { public void setUserOverviewItems(ListDataModel<UserOverviewItem> userOverviewItems) {
this.userOverviewItems = userOverviewItems; this.userOverviewItems = userOverviewItems;
} }
...@@ -84,5 +141,4 @@ public class UserOverviewView extends GenericCDIView { ...@@ -84,5 +141,4 @@ public class UserOverviewView extends GenericCDIView {
public void setUserCartView(UserCartView userCartView) { public void setUserCartView(UserCartView userCartView) {
this.userCartView = userCartView; this.userCartView = userCartView;
} }
} }
package fi.codecrew.moya.web.helpers; package fi.codecrew.moya.web.helpers;
import java.io.ByteArrayInputStream;
import javax.faces.event.ActionEvent; import javax.faces.event.ActionEvent;
import org.primefaces.model.CroppedImage;
import org.primefaces.model.DefaultStreamedContent;
import org.primefaces.model.StreamedContent;
import fi.codecrew.moya.enums.CardState; import fi.codecrew.moya.enums.CardState;
import fi.codecrew.moya.model.EventUser; import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.PrintedCard; import fi.codecrew.moya.model.PrintedCard;
...@@ -11,9 +17,58 @@ public class UserOverviewItem { ...@@ -11,9 +17,58 @@ public class UserOverviewItem {
private EventUser eventUser; private EventUser eventUser;
private PrintedCard printedCard; private PrintedCard printedCard;
public UserOverviewItem(EventUser eu, PrintedCard pc) { private boolean sendRejectionMail;
private CroppedImage croppedImage;
private String rejectionMsg;
private String rejectionMsgSubject;
private String rejectionMsgBody;
private String rejectionMsgToAddr;
private String rejectionMsgToName;
public UserOverviewItem(EventUser eu, PrintedCard pc, String mailSubject, String mailBody) {
eventUser = eu; eventUser = eu;
printedCard = pc; printedCard = pc;
sendRejectionMail = true;
if(mailSubject != null)
this.rejectionMsgSubject = mailSubject;
else
this.rejectionMsgSubject = "";
if(mailBody != null)
this.rejectionMsgBody = mailBody;
else
this.rejectionMsgBody = "";
if(this.rejectionMsgSubject.contains("{0}") && eventUser != null && eventUser.getEvent() != null)
this.rejectionMsgSubject = this.rejectionMsgSubject.replace("{0}", eventUser.getEvent().getName());
if(this.rejectionMsgBody.contains("{0}") && eventUser != null && eventUser.getEvent() != null)
this.rejectionMsgBody = this.rejectionMsgBody.replace("{0}", eventUser.getEvent().getName());
this.rejectionMsgToAddr = eventUser.getEmail();
this.rejectionMsgToName = eventUser.getWholeName();
}
public StreamedContent getStreamedContent() {
if(eventUser.getCurrentImage() != null && eventUser.getCurrentImage().getImageData() != null) {
String mime = eventUser.getCurrentImage().getMimeType();
if(mime == null || mime.equals(""))
mime = "image/jpg";
return new DefaultStreamedContent(new ByteArrayInputStream(eventUser.getCurrentImage().getImageData()), mime);
}
return null;
}
public CroppedImage getCroppedImage() {
return croppedImage;
}
public void setCroppedImage(CroppedImage croppedImage) {
this.croppedImage = croppedImage;
} }
public void acceptCard(ActionEvent ae) { public void acceptCard(ActionEvent ae) {
...@@ -35,4 +90,52 @@ public class UserOverviewItem { ...@@ -35,4 +90,52 @@ public class UserOverviewItem {
public void setPrintedCard(PrintedCard printedCard) { public void setPrintedCard(PrintedCard printedCard) {
this.printedCard = printedCard; this.printedCard = printedCard;
} }
public boolean isSendRejectionMail() {
return sendRejectionMail;
}
public void setSendRejectionMail(boolean rejectionSendMail) {
this.sendRejectionMail = rejectionSendMail;
}
public String getRejectionMsg() {
return rejectionMsg;
}
public void setRejectionMsg(String rejectionMsg) {
this.rejectionMsg = rejectionMsg;
}
public String getRejectionMsgSubject() {
return rejectionMsgSubject;
}
public void setRejectionMsgSubject(String rejectionMsgSubject) {
this.rejectionMsgSubject = rejectionMsgSubject;
}
public String getRejectionMsgBody() {
return rejectionMsgBody;
}
public void setRejectionMsgBody(String rejectionMsgBody) {
this.rejectionMsgBody = rejectionMsgBody;
}
public String getRejectionMsgToAddr() {
return rejectionMsgToAddr;
}
public void setRejectionMsgToAddr(String rejectionMsgToAddr) {
this.rejectionMsgToAddr = rejectionMsgToAddr;
}
public String getRejectionMsgToName() {
return rejectionMsgToName;
}
public void setRejectionMsgToName(String rejectionMsgToName) {
this.rejectionMsgToName = rejectionMsgToName;
}
} }
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!