Commit 4ba6b779 by Liv Haapala

reject-button fixed and added email sending

Calculation of age fixed
Data for cardTemplate
1 parent 2afbe690
Showing with 1125 additions and 458 deletions
......@@ -60,7 +60,16 @@ public class BootstrapBean implements BootstrapBeanLocal {
dbUpdates.add(new String[] {
"alter table compos add hidden boolean default false not null"
});
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;"
});
}
@EJB
......
......@@ -21,12 +21,16 @@ import org.slf4j.LoggerFactory;
import fi.codecrew.moya.enums.CardState;
import fi.codecrew.moya.enums.apps.UserPermission;
import fi.codecrew.moya.facade.CardObjectDataFacade;
import fi.codecrew.moya.facade.CardTemplateFacade;
import fi.codecrew.moya.facade.CardTextDataFacade;
import fi.codecrew.moya.facade.EventUserFacade;
import fi.codecrew.moya.facade.GroupMembershipFacade;
import fi.codecrew.moya.facade.LanEventPropertyFacade;
import fi.codecrew.moya.facade.PrintedCardFacade;
import fi.codecrew.moya.model.CardObjectData;
import fi.codecrew.moya.model.CardTemplate;
import fi.codecrew.moya.model.CardTextData;
import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.LanEvent;
import fi.codecrew.moya.model.LanEventProperty;
......@@ -75,6 +79,12 @@ public class CardTemplateBean implements CardTemplateBeanLocal {
@EJB
private GroupMembershipFacade gmFacade;
@EJB
private CardTextDataFacade ctdFacade;
@EJB
private CardObjectDataFacade codFacade;
// @Override
// @RolesAllowed("USER_MANAGEMENT/WRITE")
// public List<CardTemplate> findAll() {
......@@ -226,7 +236,19 @@ public class CardTemplateBean implements CardTemplateBeanLocal {
return cdFacade.merge(card);
}
@RolesAllowed(UserPermission.S_WRITE_ROLES)
@Override
public CardTextData save(CardTextData textData) {
return ctdFacade.merge(textData);
}
@RolesAllowed(UserPermission.S_WRITE_ROLES)
@Override
public CardObjectData save(CardObjectData objectData) {
return codFacade.merge(objectData);
}
@Override
public PrintedCard getCard(Integer id) {
return printedcardfacade.find(id);
......
......@@ -31,6 +31,7 @@ import javax.persistence.PersistenceContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.codecrew.moya.enums.CardState;
import fi.codecrew.moya.enums.apps.EventPermission;
import fi.codecrew.moya.enums.apps.SpecialPermission;
import fi.codecrew.moya.enums.apps.UserPermission;
......@@ -146,7 +147,9 @@ public class UserBean implements UserBeanLocal {
private EventFacade eventfacade;
@EJB
private ProductFacade productFacade;
@EJB
private CardTemplateBeanLocal cardTemplateBean;
@Override
@RolesAllowed(UserPermission.S_VIEW_ALL)
public List<EventUser> getUsers() {
......@@ -463,6 +466,51 @@ public class UserBean implements UserBeanLocal {
return true;
}
public PrintedCard rejectPrintedCard(PrintedCard card, String msg) {
if(card != null) {
card.setCardState(CardState.REJECTED);
card = cardTemplateBean.saveCard(card);
logger.info("rejectPrintedCard(): Rejected card {}, state {}", card, card.getCardState() );
MailMessage mail = new MailMessage();
User user = null;
if(card.getUser() != null && card.getUser().getUser() != null)
user = card.getUser().getUser();
LanEvent event = card.getEvent();
if(user != null && event != null) {
String info = "";
if(msg != null) {
info = msg;
}
mail.setTo(user);
mail.setSubject(I18n.get("rejectcard.mailSubject"));
mail.setMessage(I18n.get("rejectcard.mailBody", event.getName(), info));
logger.info("sending mail! user {}", new Object[] { user });
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
// @RolesAllowed(UserPermission.S_VIEW_ALL)
// 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.CardTemplate_;
import fi.codecrew.moya.model.CardTextData;
import fi.codecrew.moya.beans.EventBeanLocal;
import fi.codecrew.moya.model.CardTemplate;
@Stateless
@LocalBean
public class CardObjectDataFacade extends IntegerPkGenericFacade<CardObjectData> {
//@EJB
//private EventBeanLocal eventbean;
public CardObjectDataFacade() {
super(CardObjectData.class);
}
/*
public List<CardTextData> findAll()
{*/
/*
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<CardTemplate> cq = cb.createQuery(CardTextData.class);
Root<CardTextData> root = cq.from(CardTextData.class);
cq.where(cb.equal(root.get(CardTemplate_.event), eventbean.getCurrentEvent()));
return getEm().createQuery(cq).getResultList();
*/
//}
}
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.beans.EventBeanLocal;
import fi.codecrew.moya.model.CardTemplate;
@Stateless
@LocalBean
public class CardTextDataFacade extends IntegerPkGenericFacade<CardTextData> {
//@EJB
//private EventBeanLocal eventbean;
public CardTextDataFacade() {
super(CardTextData.class);
}
/*
public List<CardTextData> findAll()
{*/
/*
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<CardTemplate> cq = cb.createQuery(CardTextData.class);
Root<CardTextData> root = cq.from(CardTextData.class);
cq.where(cb.equal(root.get(CardTemplate_.event), eventbean.getCurrentEvent()));
return getEm().createQuery(cq).getResultList();
*/
//}
}
......@@ -6,7 +6,9 @@ import java.util.List;
import javax.ejb.Local;
import fi.codecrew.moya.enums.CardState;
import fi.codecrew.moya.model.CardObjectData;
import fi.codecrew.moya.model.CardTemplate;
import fi.codecrew.moya.model.CardTextData;
import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.PrintedCard;
import fi.codecrew.moya.model.ReaderEvent;
......@@ -26,6 +28,10 @@ public interface CardTemplateBeanLocal extends EntityFinderBean<CardTemplate> {
List<PrintedCard> findActiveCards();
CardTemplate save(CardTemplate card);
CardTextData save(CardTextData textData);
CardObjectData save(CardObjectData objectData);
PrintedCard getCard(Integer idParam);
......
......@@ -12,6 +12,7 @@ import fi.codecrew.moya.model.Feedback;
import fi.codecrew.moya.model.GameID;
import fi.codecrew.moya.model.GroupMembership;
import fi.codecrew.moya.model.LanEvent;
import fi.codecrew.moya.model.PrintedCard;
import fi.codecrew.moya.model.Role;
import fi.codecrew.moya.model.TournamentGame;
import fi.codecrew.moya.model.User;
......@@ -98,6 +99,8 @@ public interface UserBeanLocal {
boolean initPasswordResetForEmail(String email, String url);
PrintedCard rejectPrintedCard(PrintedCard card, String msg);
boolean initPasswordResetForUsername(String username, String url);
void addGameID(TournamentGame game, String gameid);
......
......@@ -8,7 +8,7 @@
<property name="eclipselink.ddl-generation" value="create-tables" />
<property name="eclipselink.cache.size.default" value="16384" />
<property name="eclipselink.ddl-generation.output-mode"
value="database" />
value="sql-script" />
<property name="eclipselink.logging.logger" value="ServerLogger" />
<property name="eclipselink.jdbc.uppercase-columns" value="false" />
<property name="eclipselink.target-database"
......@@ -17,6 +17,7 @@
value="org.ancoron.postgresql.jpa.eclipselink.ConverterInitializer" />
<property name="eclipselink.descriptor.customizer"
value="fi.codecrew.moya.database.MoyaDescriptorCustomizer" />
<property name="eclipselink.create-ddl-jdbc-file-name" value="moya-database-schema.sql"/>
</properties>
</persistence-unit>
......
package fi.codecrew.moya.model;
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;
@Column(name = "x", nullable = false)
private int x;
@Column(name = "y", nullable = false)
private int y;
@Column(name = "size", nullable = false)
private int 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(int size) {
this.size = size;
}
public int 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.Font;
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;
@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.UKNOWN;
@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)
private int size;
@Column(name = "font_name", nullable = false)
private String fontName;
@Column(name = "font_style", nullable = false)
private int 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 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(int size) {
this.size = size;
}
public int getSize() {
return this.size;
}
public void setFontName(String font) {
this.fontName = font;
}
public String getFontName() {
return this.fontName;
}
public void setFontStyle(int fontStyle) {
this.fontStyle = fontStyle;
}
public int 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 = font.getSize();
this.fontStyle = font.getStyle();
}
public Font getFont() {
return new Font(this.fontName, this.fontStyle, this.size);
}
public void setCardTemplate(CardTemplate template) {
this.cardTemplate = template;
}
public CardTemplate getCardTemplate() {
return this.cardTemplate;
}
}
package fi.codecrew.moya.model;
import java.math.BigDecimal;
import java.sql.Time;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
......@@ -26,13 +25,9 @@ import javax.validation.constraints.NotNull;
import org.eclipse.persistence.annotations.OptimisticLocking;
import org.eclipse.persistence.annotations.OptimisticLockingType;
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.LoggerFactory;
import com.sun.xml.ws.commons.xmlutil.Converter;
import fi.codecrew.moya.enums.Gender;
import fi.codecrew.moya.utilities.PasswordFunctions;
......@@ -43,375 +38,379 @@ import fi.codecrew.moya.utilities.PasswordFunctions;
@Table(name = "users")
@OptimisticLocking(type = OptimisticLockingType.CHANGED_COLUMNS)
public class User extends GenericEntity implements IUser {
public static final String ANONYMOUS_LOGINNAME = "anonymous";
private static final long serialVersionUID = -1632200627103418206L;
@Column(name = "created", nullable = false, updatable = false)
@Temporal(TemporalType.TIMESTAMP)
private Calendar created = Calendar.getInstance();
// private static final Logger logger = LoggerFactory.getLogger(User.class);
public static final String ANONYMOUS_LOGINNAME = "anonymous";
private static final long serialVersionUID = -1632200627103418206L;
@Column(name = "created", nullable = false, updatable = false)
@Temporal(TemporalType.TIMESTAMP)
private Calendar created = Calendar.getInstance();
@NotNull
@Column(name = "login", unique = true, nullable = false)
private String login = "";
@Column(name = "active", nullable = false, columnDefinition = "boolean default true")
private boolean active = true;
@Column(name = "password")
private String password;
@Column(name = "lastname")
private String lastname = "";
@Column(name = "firstnames")
private String firstnames = "";
@Column(name = "birthday")
@Temporal(TemporalType.TIMESTAMP)
private Date birthday;
@Column(name = "nick")
private String nick = "";
@Column(name = "email")
private String email = "";
@NotNull
@Column(name = "login", unique = true, nullable = false)
private String login = "";
@Column(name = "address")
private String address = "";
@Column(name = "active", nullable = false, columnDefinition = "boolean default true")
private boolean active = true;
@Column(name = "zip")
private String zip = "";
@Column(name = "password")
private String password;
@Column(name = "postal_town")
private String postalTown = "";
@Column(name = "lastname")
private String lastname = "";
@Column(name = "firstnames")
private String firstnames = "";
@Column(name = "town")
private String town = "";
@Column(name = "phone")
private String phone = "";
@Column(name = "birthday")
@Temporal(TemporalType.TIMESTAMP)
private Date birthday;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "current_image_id", referencedColumnName = "id")
private UserImage currentImage;
@Column(name = "nick")
private String nick = "";
@Column(name = "email")
private String email = "";
@Column(name = "address")
private String address = "";
@Column(name = "zip")
private String zip = "";
@Column(name = "postal_town")
private String postalTown = "";
@Column(name = "town")
private String town = "";
@Column(name = "phone")
private String phone = "";
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "current_image_id", referencedColumnName = "id")
private UserImage currentImage;
@Enumerated(EnumType.STRING)
@Column(name = "gender", nullable = false)
private Gender gender = Gender.UNDEFINED;
/**
* hash generated for password reset..
*/
@Column(name = "confirm_hash")
private String confirmHash;
@Column(name = "confirm_time")
@Temporal(TemporalType.TIMESTAMP)
private Calendar confirmTime;
@Column(name = "superadmin", updatable = false)
private boolean superadmin = false;
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL)
@OrderBy
@PrivateOwned
private List<UserImage> userImageList;
@OneToMany(mappedBy = "user", fetch = FetchType.LAZY)
@OrderBy()
private List<LicenseCode> licenseCodes;
@Transient
private static final Logger logger = LoggerFactory.getLogger(User.class);
@Override
public Calendar getCreated() {
return created;
}
@Override
public void setCreated(Calendar created) {
this.created = created;
}
@Override
public boolean getActive() {
return active;
}
@Override
public void setActive(boolean active) {
this.active = active;
}
@Override
public String getPassword() {
logger.warn("Directly reading raw User password");
return password;
}
@Override
public void setPassword(String password) {
logger.warn("Directly settings raw User password");
this.password = password;
}
@Override
public String getWholeName() {
String ret = new StringBuilder().append(firstnames).append(" ").append(lastname).toString().trim();
if (ret.isEmpty()) {
ret = login;
}
return ret;
}
@Override
public String getLastname() {
return lastname;
}
@Override
public void setLastname(String lastname) {
this.lastname = lastname;
}
@Override
public String getFirstnames() {
return firstnames;
}
@Override
public void setFirstnames(String firstnames) {
this.firstnames = firstnames;
}
@Override
public Date getBirthday() {
return birthday;
}
@Override
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
@Override
public String getNick() {
return nick;
}
@Override
public void setNick(String nick) {
this.nick = nick;
}
@Override
public String getEmail() {
return email;
}
@Override
public void setEmail(String email) {
this.email = email;
}
@Override
public String getAddress() {
return address;
}
@Override
public void setAddress(String address) {
this.address = address;
}
@Override
public String getZip() {
return zip;
}
@Override
public void setZip(String zip) {
this.zip = zip;
}
@Override
public String getTown() {
return town;
}
@Override
public void setTown(String town) {
this.town = town;
}
@Override
public String getPhone() {
return phone;
}
@Override
public void setPhone(String phone) {
this.phone = phone;
}
@Override
public String getLogin() {
return login;
}
@Override
public void setLogin(String login) {
// Do not allow anonymous userchange
if (!isAnonymous()) {
if (login != null) {
this.login = login.trim().toLowerCase();
} else {
login = null;
}
}
}
@Override
public List<UserImage> getUserImageList() {
return userImageList;
}
@Override
public void setUserImageList(List<UserImage> userImageList) {
this.userImageList = userImageList;
}
@Override
public String getConfirmHash() {
return confirmHash;
}
@Override
public void setConfirmHash(String confirmHash) {
this.confirmHash = confirmHash;
}
@Override
public Calendar getConfirmTime() {
return confirmTime;
}
@Override
public void setConfirmTime(Calendar confirmTime) {
this.confirmTime = confirmTime;
}
@Override
public void resetPassword(String password) {
String newEncryptedPassword = PasswordFunctions.getEncryptedPassword(password);
this.password = newEncryptedPassword; // Bypass setter
}
@Override
public boolean checkPassword(String plainPassword) {
boolean matches = PasswordFunctions.checkPlainPassword(plainPassword, this.password);
return matches;
}
@Override
public boolean isSuperadmin() {
return superadmin;
}
@Override
public void setPostalTown(String postalTown) {
this.postalTown = postalTown;
}
@Override
public String getPostalTown() {
return postalTown;
}
@Override
public void setGender(Gender gender) {
this.gender = gender;
}
@Override
public Gender getGender() {
return gender;
}
@Override
public void setCurrentImage(UserImage currentImage) {
this.currentImage = currentImage;
}
@Override
public UserImage getCurrentImage() {
return currentImage;
}
@Transient
private Boolean isAnon;
@Override
public boolean isAnonymous() {
if (isAnon == null) {
isAnon = ANONYMOUS_LOGINNAME.equals(login);
}
return isAnon;
}
public List<LicenseCode> getLicenseCodes() {
if (licenseCodes == null)
licenseCodes = new ArrayList<LicenseCode>();
return licenseCodes;
}
public void setLicenseCodes(List<LicenseCode> codes) {
this.licenseCodes = codes;
}
public BigDecimal getAge() {
BigDecimal age = new BigDecimal(0);
if(birthday != null) {
Calendar calBirthday = Calendar.getInstance();
calBirthday.setTime(birthday);
Calendar calNow = Calendar.getInstance();
int yearB = calBirthday.get(Calendar.YEAR);
int yearNow = calNow.get(Calendar.YEAR);
int years = yearNow - yearB -1;
int dayOfYearBirthDay = calBirthday.get(Calendar.DAY_OF_YEAR);
int dayOfYear = calNow.get(Calendar.DAY_OF_YEAR);
int days = 0;
if(dayOfYearBirthDay > dayOfYear) {
calBirthday.set(Calendar.YEAR, yearNow - 1);
days = 365 - calBirthday.get(Calendar.DAY_OF_YEAR) + dayOfYear;
} else {
days = dayOfYear - dayOfYearBirthDay;
}
BigDecimal decimalYears = new BigDecimal(years);
float fraction = (float)((float)days/(float)365);
BigDecimal decimalDays = new BigDecimal(fraction);
age = age.add(decimalYears);
age = age.add(decimalDays);
//System.out.print("Years: " + years + "\n");
//System.out.print("Days: " + days + "\n");
//System.out.print("Fraction of days: " + fraction + "\n");
}
return age;
}
public String getShortUserDescriptor() {
StringBuilder sb = new StringBuilder();
sb.append(getNick()).append(" // ").append(getWholeName()).append(" // ").append(getEmail());
return sb.toString();
}
@Enumerated(EnumType.STRING)
@Column(name = "gender", nullable = false)
private Gender gender = Gender.UNDEFINED;
/**
* hash generated for password reset..
*/
@Column(name = "confirm_hash")
private String confirmHash;
@Column(name = "confirm_time")
@Temporal(TemporalType.TIMESTAMP)
private Calendar confirmTime;
@Column(name = "superadmin", updatable = false)
private boolean superadmin = false;
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL)
@OrderBy
@PrivateOwned
private List<UserImage> userImageList;
@OneToMany(mappedBy = "user", fetch = FetchType.LAZY)
@OrderBy()
private List<LicenseCode> licenseCodes;
@Transient
private static final Logger logger = LoggerFactory.getLogger(User.class);
@Override
public Calendar getCreated() {
return created;
}
@Override
public void setCreated(Calendar created) {
this.created = created;
}
@Override
public boolean getActive() {
return active;
}
@Override
public void setActive(boolean active) {
this.active = active;
}
@Override
public String getPassword() {
logger.warn("Directly reading raw User password");
return password;
}
@Override
public void setPassword(String password) {
logger.warn("Directly settings raw User password");
this.password = password;
}
@Override
public String getWholeName() {
String ret = new StringBuilder().append(firstnames).append(" ").append(lastname).toString().trim();
if (ret.isEmpty()) {
ret = login;
}
return ret;
}
@Override
public String getLastname() {
return lastname;
}
@Override
public void setLastname(String lastname) {
this.lastname = lastname;
}
@Override
public String getFirstnames() {
return firstnames;
}
@Override
public void setFirstnames(String firstnames) {
this.firstnames = firstnames;
}
@Override
public Date getBirthday() {
return birthday;
}
@Override
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
@Override
public String getNick() {
return nick;
}
@Override
public void setNick(String nick) {
this.nick = nick;
}
@Override
public String getEmail() {
return email;
}
@Override
public void setEmail(String email) {
this.email = email;
}
@Override
public String getAddress() {
return address;
}
@Override
public void setAddress(String address) {
this.address = address;
}
@Override
public String getZip() {
return zip;
}
@Override
public void setZip(String zip) {
this.zip = zip;
}
@Override
public String getTown() {
return town;
}
@Override
public void setTown(String town) {
this.town = town;
}
@Override
public String getPhone() {
return phone;
}
@Override
public void setPhone(String phone) {
this.phone = phone;
}
@Override
public String getLogin() {
return login;
}
@Override
public void setLogin(String login) {
// Do not allow anonymous userchange
if (!isAnonymous()) {
if (login != null) {
this.login = login.trim().toLowerCase();
} else {
login = null;
}
}
}
@Override
public List<UserImage> getUserImageList() {
return userImageList;
}
@Override
public void setUserImageList(List<UserImage> userImageList) {
this.userImageList = userImageList;
}
@Override
public String getConfirmHash() {
return confirmHash;
}
@Override
public void setConfirmHash(String confirmHash) {
this.confirmHash = confirmHash;
}
@Override
public Calendar getConfirmTime() {
return confirmTime;
}
@Override
public void setConfirmTime(Calendar confirmTime) {
this.confirmTime = confirmTime;
}
@Override
public void resetPassword(String password) {
String newEncryptedPassword = PasswordFunctions.getEncryptedPassword(password);
this.password = newEncryptedPassword; // Bypass setter
}
@Override
public boolean checkPassword(String plainPassword) {
boolean matches = PasswordFunctions.checkPlainPassword(plainPassword, this.password);
return matches;
}
@Override
public boolean isSuperadmin() {
return superadmin;
}
@Override
public void setPostalTown(String postalTown) {
this.postalTown = postalTown;
}
@Override
public String getPostalTown() {
return postalTown;
}
@Override
public void setGender(Gender gender) {
this.gender = gender;
}
@Override
public Gender getGender() {
return gender;
}
@Override
public void setCurrentImage(UserImage currentImage) {
this.currentImage = currentImage;
}
@Override
public UserImage getCurrentImage() {
return currentImage;
}
@Transient
private Boolean isAnon;
@Override
public boolean isAnonymous() {
if (isAnon == null) {
isAnon = ANONYMOUS_LOGINNAME.equals(login);
}
return isAnon;
}
public List<LicenseCode> getLicenseCodes() {
if (licenseCodes == null)
licenseCodes = new ArrayList<LicenseCode>();
return licenseCodes;
}
public void setLicenseCodes(List<LicenseCode> codes) {
this.licenseCodes = codes;
}
public BigDecimal getAge() {
logger.info("AgeWtf!");
System.out.print("getAge()\n");
BigDecimal age = new BigDecimal(0);
if (birthday != null) {
Calendar calBirthday = Calendar.getInstance();
calBirthday.setTime(birthday);
Calendar calNow = Calendar.getInstance();
// Calendar calAge = Calendar.getInstance();
// calAge.add(Calendar.YEAR, -calBirthday.YEAR);
int years = calNow.get(Calendar.YEAR) - calBirthday.get(Calendar.YEAR);
int days = 0;
logger.debug("Years: " + years);
if (calBirthday.get(Calendar.DAY_OF_YEAR) > calNow.get(Calendar.DAY_OF_YEAR)) {
years--;
days = 365 - (calBirthday.get(Calendar.DAY_OF_YEAR) - calNow.get(Calendar.DAY_OF_YEAR));
} else {
days = calNow.get(Calendar.DAY_OF_YEAR) - calBirthday.get(Calendar.DAY_OF_YEAR);
}
BigDecimal decimalYears = new BigDecimal(years);
float fraction = (float) ((float) days / (float) 365);
BigDecimal decimalDays = new BigDecimal(fraction);
age = age.add(decimalYears);
age = age.add(decimalDays);
logger.info("Years: " + years);
logger.info("Days: " + days);
logger.debug("Fraction of days: " + fraction);
}
return age;
}
public String getShortUserDescriptor() {
StringBuilder sb = new StringBuilder();
sb.append(getNick()).append(" // ").append(getWholeName()).append(" // ").append(getEmail());
return sb.toString();
}
}
......@@ -5,5 +5,6 @@
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src"/>
<property name="java-output-path" value="/MoyaTerminalWeb/build/classes"/>
<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>
</project-modules>
package fi.codecrew.moya.enums;
public enum CardObjectDataType {
UKNOWN,
PICTURE,
USERS_BARCODE,
CARDS_BARCODE;
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 {
UKNOWN,
NICK,
FIRSTNAME,
LASTNAME,
AGE,
ROLE;
public String toStringLower() {
return this.toString().toLowerCase();
}
}
......@@ -11,6 +11,22 @@
<f:event type="preRenderView" listener="#{incomingView.initPrintCardView}" />
</f:metadata>
<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" />
<h1>#{i18n['incomingflow.userdetails']}</h1>
<h:panelGrid id="cropper" columns="3">
......@@ -79,21 +95,7 @@
</p:dataTable>
</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 name="sidebar">
......
......@@ -81,7 +81,7 @@
</h:form>
<h:form>
kluygy User #{userView.selectedUser} #{userView.selectedUser.user} #{userView.selectedUser.user.age}
<h:panelGroup>
<table>
<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}">
<f:metadata>
<f:viewParam name="templateid" value="#{cardView.templateId}" />
<f:event type="preRenderView" listener="#{cardView.initCardTemplate}" />
</f:metadata>
<ui:define name="content">
<h:form id="cardTemplates">
<h:panelGrid columns="3">
<h:outputLabel for="id" value="#{i18n['cardTemplate.id']}:" />
<h:outputText id="id" value="#{cardView.cardTemplate.id}" />
<h:message for="id" />
<h:outputLabel for="name" value="#{i18n['cardTemplate.name']}:" />
<h:inputText id="name" value="#{cardView.cardTemplate.name}" />
<h:message for="name" />
<h:outputLabel for="power" value="#{i18n['cardTemplate.power']}:" />
<h:inputText id="power" value="#{cardView.cardTemplate.power}" size="4" />
<h:message for="power" />
<h:outputLabel for="roles" value="#{i18n['cardTemplate.roles']}" />
<h:selectManyCheckbox layout="pageDirection" value="#{cardView.cardTemplate.roles}" converter="#{roleConverter}" id="roles">
<f:selectItems var="role" itemLabel="#{role.name}" value="#{roleDataView.roles}" />
</h:selectManyCheckbox>
<h:message for="roles"></h:message>
</h:panelGrid>
<h:commandButton action="#{cardView.saveTemplate()}" value="#{i18n['cardTemplate.save']}" />
</h:form>
<h:form enctype="multipart/form-data">
<p:fileUpload value="#{cardView.templateImage}" mode="simple" />
<h:commandButton action="#{cardView.saveImage}" value="#{i18n['sendImage']}" />
</h:form>
<ui:fragment rendered="#{!empty cardView.cardTemplate}">
<h2>#{i18n['cardTemplate.imageheader']}</h2>
<img src="#{request.contextPath}/dydata/cardtemplate/#{cardView.cardTemplate.id}.img" />
</ui:fragment>
</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">
<h:form id="cardTemplateData">
<h:panelGrid columns="3">
<h:outputLabel for="typeTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" value="#{i18n['cardTextData.type']}:" />
<h:outputLabel for="typeObjectData" rendered="#{!empty cardTemplateDataEditView.cardObjectData}" value="#{i18n['cardObjectData.type']}:" />
<h:inputText rendered="#{(empty cardTemplateDataEditView.cardTextData) and (empty cardTemplateDataEditView.cardObjectData)}" id="typeTextData" value="" />
<h:inputText rendered="#{!empty cardTemplateDataEditView.cardTextData}" id="typeObjectData" value="#{cardTemplateDataEditView.cardTextData.textDataType}" />
<h:message for="typeTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" />
<h:message for="typeObjectData" rendered="#{!empty cardTemplateDataEditView.cardObjectData}" />
<h:outputLabel for="xTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" value="#{i18n['cardTextData.xCoordinate']}:" />
<h:outputLabel for="xObjectData" rendered="#{!empty cardTemplateDataEditView.cardObjectData}" value="#{i18n['cardObjectData.xCoordinate']}:" />
<h:inputText id="xTextData" rendered="#{(empty cardTemplateDataEditView.cardTextData) and (empty cardTemplateDataEditView.cardObjectData)}" value=""/>
<h:inputText id="xTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" value="#{cardTemplateDataEditView.cardTextData.x}"/>
<h:inputText id="xTextData" 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.yCoordinate']}:" />
<h:outputLabel for="yObjectData" rendered="#{!empty cardTemplateDataEditView.cardObjectData}" value="#{i18n['cardObjectData.yCoordinate']}:" />
<h:inputText id="yTextData" rendered="#{(empty cardTemplateDataEditView.cardTextData) and (empty cardTemplateDataEditView.cardObjectData)}" value=""/>
<h:inputText id="yTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" value="#{cardTemplateDataEditView.cardTextData.y}"/>
<h:inputText id="yTextData" 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) and (empty cardTemplateDataEditView.cardObjectData)}" value=""/>
<h:inputText id="zTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" value="#{cardTemplateDataEditView.cardTextData.zIndex}"/>
<h:inputText id="zTextData" 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 rendered="#{(empty cardTemplateDataEditView.cardTextData) and (empty cardTemplateDataEditView.cardObjectData)}" value="" size="4" />
<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:outputLabel for="fontNameObjectData" rendered="#{!empty cardTemplateDataEditView.cardObjectData}" value="#{i18n['cardObjectData.fontname']}:" />
<h:inputText id="fontNameTextData" rendered="#{(empty cardTemplateDataEditView.cardTextData) and (empty cardTemplateDataEditView.cardObjectData)}" value=""/>
<h:inputText id="fontNameTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" value="#{cardTemplateDataEditView.cardTextData.fontName}"/>
<h:inputText id="fontNameTextData" rendered="#{!empty cardTemplateDataEditView.cardObjectData}" value="#{cardTemplateDataEditView.cardObjectData.fontName}"/>
<h:message for="fontNameTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" />
<h:message for="fontNameObjectData" rendered="#{!empty cardTemplateDataEditView.cardObjectData}" />
<h:outputLabel for="fontStyleTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" value="#{i18n['cardTextData.fontstyle']}:" />
<h:outputLabel for="fontStyleObjectData" rendered="#{!empty cardTemplateDataEditView.cardObjectData}" value="#{i18n['cardObjectData.fontstyle']}:" />
<h:inputText id="fontStyleTextData" rendered="#{(empty cardTemplateDataEditView.cardTextData) and (empty cardTemplateDataEditView.cardObjectData)}" value=""/>
<h:inputText id="fontStyleTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" value="#{cardTemplateDataEditView.cardTextData.fontStyle}"/>
<h:inputText id="fontStyleTextData" rendered="#{!empty cardTemplateDataEditView.cardObjectData}" value="#{cardTemplateDataEditView.cardObjectData.fontStyle}"/>
<h:message for="fontStyleTextData" rendered="#{!empty cardTemplateDataEditView.cardTextData}" />
<h:message for="fontStyleObjectData" rendered="#{!empty cardTemplateDataEditView.cardObjectData}" />
</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
......@@ -46,6 +46,11 @@
<f:param name="templateid" value="#{card.id}" />
</h:link>
</h:column>
<h:column>
<h:link outcome="/useradmin/editCardTemplate" value="#{i18n['cardTemplate.edit']}">
<f:param name="templateid" value="#{card.id}" />
</h:link>
</h:column>
</h:dataTable>
</h:form>
......
......@@ -10,15 +10,6 @@
</f:metadata>
<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">
<p:dataTable value="#{userOverviewView.userOverviewItems}" var="cartItem" binding="#{table}" id="cartOverviewTable">
<p:column style="#{cartItem.printedCard == null ? 'background:grey;' : ''}">
......@@ -52,7 +43,17 @@
<!-- <f:ajax execute="uov-items" render="@all"></f:ajax> -->
</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}">
<p>{0} -tapahtuman profiiliisi sy\u00E4tetty kuva on hyl\u00E4tty soveltumattomana. Sy\u00E4t\u00E4 uusi kuva v\u00E4litt\u00E4m\u00E4sti. Kuvan saat asetettua profiili-sivulta. Hyv\u00E4ksytt\u00E4v\u00E4ss\u00E4 kuvassa kasvosi n\u00E4kyvät selke\u00E4sti ja tunnistettavasti.</p>
<p:inputTextarea value="#{userOverviewView.rejectionMsg}"/>
<br />
<p:commandButton oncomplete="PF('dialog#{table.rowIndex}').hide()" actionListener="#{userOverviewView.rejectCard()}" value="Apply" ajax="true" onerror="location.reload(true);"/>
<p:commandButton onclick="PF('dialog#{table.rowIndex}').hide()" type="button" value="Cancel" onerror="location.reload(true);"/>
</p:dialog>
<!--<p:commandButton id="Reject" value="Reject" onclick="#{userOverviewView.rejectCard()}" type="button" onerror="location.reload(true);" update="schneider cardinfo"/>-->
</p:column>
</p:dataTable>
</h:form>
......
......@@ -201,6 +201,28 @@ cardTemplate.roles = Associated roles
cardTemplate.save = Save
cardTemplate.sendImage = Upload Image
cardObjectData.create = Add object data to card layout
cardObjectData.save = Save
cardObjectData.edit = Edit
cardObjectData.x = X coordinate
cardObjectData.y = Y coordinate
cardObjectData.size = Size of text (px)
cardObjectData.zindex = Z index
cardObjectData.type = Type
cardTextData.create = Add text data to card layout
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.fontstyle = Font style
cardTextData.fontalignment = Font alignment
cardTextData.text = Static text
cardTextData.type = Type
cart.item = Item
cart.item_quantity = Quantity
cart.item_total = Total
......
......@@ -203,6 +203,28 @@ cardTemplate.roles = Yhdistetyt roolit
cardTemplate.save = Tallenna
cardTemplate.sendImage = Lataa kuva
cardObjectData.create = Liit korttilayoutiin kuvia
cardObjectData.save = Tallenna
cardObjectData.edit = Muokkaa
cardObjectData.x = X koordinaatti
cardObjectData.y = Y koordinaatti
cardObjectData.size = Tekstin koko (px)
cardObjectData.zindex = Z index
cardObjectData.type = Tyyppi
cardTextData.create = Liit korttilayoutiin 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.fontalignment = Fontin sijoittelu
cardTextData.text = Kiinte teksti
cardTextData.type = Tyyppi
cart.item = Tuote
cart.item_quantity = M\u00E4\u00E4r\u00E4
cart.item_total = Yhteens\u00E4
......@@ -1235,11 +1257,14 @@ user.uploadimage = L\u00E4het\u00E4 kuva
user.username = K\u00E4ytt\u00E4j\u00E4tunnus
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.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 = Koko nimi
user.zipCode = Postinumero
rejectcard.mailSubject = Kuva hyltty
rejectcard.mailBody = {0} -tapahtuman profiiliisi sy\u00E4tetty kuva on hyl\u00E4tty soveltumattomana. Sy\u00E4t\u00E4 uusi kuva v\u00E4litt\u00E4m\u00E4sti. Kuvan saat asetettua profiili-sivulta. Hyv\u00E4ksytt\u00E4v\u00E4ss\u00E4 kuvassa kasvosi n\u00E4kyvt selke\u00E4sti ja tunnistettavasti. \n\n {0}
userImport.commit = Hyv\u00E4ksy
userView.image = Kuva
......
package fi.codecrew.moya.web.cdiview.card;
import javax.ejb.EJB;
import javax.enterprise.context.ConversationScoped;
import javax.inject.Named;
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 CardTemplateDataEditView extends GenericCDIView {
private static final long serialVersionUID = -9115983838324313414L;
private CardTextData cardTextData;
private CardObjectData cardObjectData;
@EJB
private transient CardTemplateBeanLocal cfbean;
public void initCardTextDataCreate() {
if (super.requirePermissions(UserPermission.VIEW_ALL))
{
setCardTextData(new CardTextData());
super.beginConversation();
}
}
public void initCardTextObjectCreate() {
if (super.requirePermissions(UserPermission.VIEW_ALL))
{
setCardObjectData(new CardObjectData());
super.beginConversation();
}
}
public CardTextData saveTextData() {
cardTextData = cfbean.save(cardTextData);
return null;
}
public CardObjectData 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;
}
}
......@@ -12,6 +12,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.codecrew.moya.beans.CardTemplateBeanLocal;
import fi.codecrew.moya.beans.UserBeanLocal;
import fi.codecrew.moya.enums.CardState;
import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.PrintedCard;
......@@ -29,8 +30,13 @@ public class UserOverviewView extends GenericCDIView {
@EJB
private CardTemplateBeanLocal cardTemplateBean;
@EJB
private UserBeanLocal userBean;
private ListDataModel<UserOverviewItem> userOverviewItems = null;
private String rejectionMsg;
private static final Logger logger = LoggerFactory.getLogger(UserOverviewView.class);
public void initView() {
......@@ -42,6 +48,7 @@ public class UserOverviewView extends GenericCDIView {
ovlist.add(uoi);
}
userOverviewItems = new ListDataModel<>(ovlist);
super.beginConversation();
}
}
......@@ -51,13 +58,24 @@ public class UserOverviewView extends GenericCDIView {
public void rejectCard()
{
UserOverviewItem cardItem = userOverviewItems.getRowData();
logger.info("Rejecting card");
PrintedCard card = cardItem.getPrintedCard();
card.setCardState(CardState.REJECTED);
card = cardTemplateBean.saveCard(card);
cardItem.setPrintedCard(card);
UserOverviewItem cardItem = null;
try {
cardItem = userOverviewItems.getRowData();
}catch(Exception ex) {
logger.info(ex.getMessage());
}
if(cardItem != null) {
logger.info("rejectCard(): Rejecting card {}", cardItem.getPrintedCard());
PrintedCard card = cardItem.getPrintedCard();
if(rejectionMsg == null)
rejectionMsg = "";
card = userBean.rejectPrintedCard(card, rejectionMsg);
cardItem.setPrintedCard(card);
logger.info("rejectCard(): Rejected card {}, state {}", card, card.getCardState() );
}
// cardTemplateBean.setCardState(cardItem.getPrintedCard(), CardState.REJECTED);
}
......@@ -85,4 +103,12 @@ public class UserOverviewView extends GenericCDIView {
this.userCartView = userCartView;
}
public void setRejectionMsg(String msg) {
this.rejectionMsg = msg;
}
public String getRejectionMsg() {
return this.rejectionMsg;
}
}
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!