Commit e2be07d6 by Antti Tönkyrä

Merge branch 'master' of gitlab.codecrew.fi:codecrew/moya into tournadmin

2 parents 2366cd98 eca9d1d0
Showing with 822 additions and 548 deletions
......@@ -79,7 +79,7 @@ public class BootstrapBean implements BootstrapBeanLocal {
dbUpdates.add(new String[] {
"alter table compos add hidden boolean default false not null"
});
dbUpdates.add(alterTables("ADD COLUMN meta json",
"account_events",
"actionlog_message_responses",
......@@ -151,49 +151,47 @@ public class BootstrapBean implements BootstrapBeanLocal {
"user_notes",
"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));"
"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';"
});
});
dbUpdates.add(new String[] {
"ALTER TABLE event_log RENAME log_id TO id;"
});
"ALTER TABLE event_log RENAME log_id TO id;"
});
dbUpdates.add(new String[] {
"ALTER TABLE network_associations ALTER COLUMN meta TYPE json USING (meta::json);"
"ALTER TABLE network_associations ALTER COLUMN meta TYPE json USING (meta::json);"
});
dbUpdates.add(new String[] {"CREATE TABLE lecture_groups (id SERIAL NOT NULL, event_id integer NOT NULL, description TEXT, name TEXT, select_count INTEGER, meta json, PRIMARY KEY (id))",
dbUpdates.add(new String[] { "CREATE TABLE lecture_groups (id SERIAL NOT NULL, event_id integer NOT NULL, description TEXT, name TEXT, select_count INTEGER, meta json, PRIMARY KEY (id))",
"CREATE TABLE lectures (id SERIAL NOT NULL, description TEXT, hours numeric(10,2), max_participants_count INTEGER, name TEXT, start_time TIMESTAMPTZ, lecture_group_id INTEGER, meta json, PRIMARY KEY (id))",
"CREATE TABLE lecture_roles (role_id INTEGER NOT NULL, lecture_id INTEGER NOT NULL, PRIMARY KEY (role_id, lecture_id))",
"CREATE TABLE lecture_participants (eventuser_id INTEGER NOT NULL, lecture_id INTEGER NOT NULL, PRIMARY KEY (eventuser_id, lecture_id))",
......@@ -201,9 +199,14 @@ public class BootstrapBean implements BootstrapBeanLocal {
"ALTER TABLE lecture_roles ADD CONSTRAINT FK_lecture_roles_lecture_id FOREIGN KEY (lecture_id) REFERENCES lectures (id)",
"ALTER TABLE lecture_roles ADD CONSTRAINT FK_lecture_roles_role_id FOREIGN KEY (role_id) REFERENCES roles (id)",
"ALTER TABLE lecture_participants ADD CONSTRAINT FK_lecture_participants_eventuser_id FOREIGN KEY (eventuser_id) REFERENCES event_users (id)",
"ALTER TABLE lecture_participants ADD CONSTRAINT FK_lecture_participants_lecture_id FOREIGN KEY (lecture_id) REFERENCES lectures (id)"});
"ALTER TABLE lecture_participants ADD CONSTRAINT FK_lecture_participants_lecture_id FOREIGN KEY (lecture_id) REFERENCES lectures (id)" });
dbUpdates.add(new String[] { "ALTER TABLE roles ADD COLUMN user_selectable_role boolean DEFAULT false;" });
dbUpdates.add(new String[] {
"ALTER TABLE group_memberships ADD COLUMN place_product INTEGER",
"ALTER TABLE group_memberships ADD CONSTRAINT FK_group_memberships_place_product FOREIGN KEY (place_product) REFERENCES products (id)"
});
}
@EJB
......
......@@ -117,7 +117,9 @@ public class LectureBean implements LectureBeanLocal {
lectureloop: for (Lecture l : lectureGroup.getLectures()) {
for (Role r : l.getOpenForRoles()) {
if (userRoles.contains(r)) {
lectures.add(l);
if(!user.getLectures().contains(l)) {
lectures.add(l);
}
continue lectureloop;
}
}
......@@ -214,4 +216,9 @@ public class LectureBean implements LectureBeanLocal {
return false;
}
@Override
public Lecture getFirstLecture() {
return lectureFacade.findFirstLecture();
}
}
......@@ -10,7 +10,6 @@ import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
......@@ -42,6 +41,7 @@ import com.pdfjet.TextLine;
import fi.codecrew.moya.enums.apps.MapPermission;
import fi.codecrew.moya.enums.apps.SpecialPermission;
import fi.codecrew.moya.exceptions.BortalCatchableException;
import fi.codecrew.moya.facade.EventMapFacade;
import fi.codecrew.moya.facade.EventUserFacade;
import fi.codecrew.moya.facade.GroupMembershipFacade;
import fi.codecrew.moya.facade.PlaceFacade;
......@@ -107,6 +107,8 @@ public class PlaceBean implements PlaceBeanLocal {
@EJB
private BarcodeBeanLocal barcodeBean;
@EJB
private EventMapFacade eventMapFacade;
@Override
@RolesAllowed(MapPermission.S_MANAGE_MAPS)
......@@ -626,9 +628,9 @@ public class PlaceBean implements PlaceBeanLocal {
try {
List<Place> places = placeFacade.findAll();
Collections.sort(places);
logger.info("sorting places etc.");
return generatePlacesPdf(width, height, font1, font1, places);
} catch (Exception e) {
logger.error("Exception from place pdf generation.", e);
......@@ -637,4 +639,33 @@ public class PlaceBean implements PlaceBeanLocal {
}
}
@Override
public Long selectablePlaceCount(EventMap map) {
return placeFacade.countSelectable(map);
}
@Override
public EventMap findMap(Integer mapId) {
return eventMapFacade.find(mapId);
}
@Override
public Long availablePlaceCount(EventMap map) {
return placeFacade.countAvailable(map);
}
@Override
public EventMap getActiveMap() {
LanEvent event = eventBean.getCurrentEvent();
logger.info("Current event: {}, maps {}", event, event.getEventMaps());
for (EventMap map : event.getEventMaps()) {
logger.info("Checking active map {}, is active {}", map, map.isActive());
if (map.isActive()) {
return map;
}
}
return null;
}
}
package fi.codecrew.moya.beans;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.imageio.ImageIO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.pdfjet.CoreFont;
import com.pdfjet.Image;
import com.pdfjet.ImageType;
import com.pdfjet.PDF;
import com.pdfjet.Page;
import com.pdfjet.TextLine;
import fi.codecrew.moya.facade.EventMapFacade;
import fi.codecrew.moya.facade.PlaceFacade;
import fi.codecrew.moya.model.CardTemplate;
import fi.codecrew.moya.model.EventMap;
import fi.codecrew.moya.model.LanEvent;
import fi.codecrew.moya.model.Place;
import fi.codecrew.moya.model.PrintedCard;
import fi.codecrew.moya.util.MassPrintResult;
/**
* Session Bean implementation class PlaceMapBean
*/
@Stateless
public class PlaceMapBean implements PlaceMapBeanLocal {
/**
* Default constructor.
*/
public PlaceMapBean() {
// TODO Auto-generated constructor stub
}
@EJB
private PlaceFacade placeFacade;
@EJB
// private EventMapBean eventmapBean;
private EventMapFacade eventMapFacade;
@EJB
private EventBeanLocal eventbean;
private static final Logger logger = LoggerFactory.getLogger(PlaceMapBean.class);
@Override
public Long selectablePlaceCount(EventMap map) {
return eventMapFacade.countSelectable(map);
}
@Override
public EventMap findMap(Integer mapId) {
return eventMapFacade.find(mapId);
}
@Override
public Long availablePlaceCount(EventMap map) {
return eventMapFacade.countAvailable(map);
}
@Override
public EventMap getActiveMap() {
LanEvent event = eventbean.getCurrentEvent();
logger.info("Current event: {}, maps {}", event, event.getEventMaps());
for (EventMap map : event.getEventMaps()) {
logger.info("Checking active map {}, is active {}", map, map.isActive());
if (map.isActive()) {
return map;
}
}
return null;
}
}
......@@ -28,8 +28,11 @@ import fi.codecrew.moya.enums.apps.UserPermission;
import fi.codecrew.moya.facade.AccountEventFacade;
import fi.codecrew.moya.facade.BillLineFacade;
import fi.codecrew.moya.facade.DiscountFacade;
import fi.codecrew.moya.facade.EventMapFacade;
import fi.codecrew.moya.facade.EventUserFacade;
import fi.codecrew.moya.facade.GroupMembershipFacade;
import fi.codecrew.moya.facade.InventoryEventFacade;
import fi.codecrew.moya.facade.PlaceFacade;
import fi.codecrew.moya.facade.ProductFacade;
import fi.codecrew.moya.facade.UserFacade;
import fi.codecrew.moya.model.AccountEvent;
......@@ -107,6 +110,14 @@ public class ProductBean implements ProductBeanLocal {
@EJB
private CardTemplateBean cardTemplateBean;
@EJB
private PlaceFacade placeFacade;
@EJB
private EventMapFacade mapfacade;
@EJB
private GroupMembershipFacade gmfacade;
private static final Logger logger = LoggerFactory.getLogger(ProductBean.class);
/**
......@@ -188,6 +199,15 @@ public class ProductBean implements ProductBeanLocal {
return getPrivateProductLimit(product, user, prodCounts, userroles);
}
/**
* Returns available products to be bought for the user.
*
* @param product
* @param user
* @param prodCounts
* @param userroles
* @return Number of buyable products
*/
private BigDecimal getPrivateProductLimit(Product product, EventUser user, Map<Integer, BigDecimal> prodCounts, Set<Role> userroles)
{
BigDecimal ret = null;
......@@ -222,15 +242,26 @@ public class ProductBean implements ProductBeanLocal {
switch (limit.getType())
{
case GLOBAL_BILLED:
case PLACE: {
Long reserved = 0L;
Long available = 0L;
for (Product p : limit.getProducts()) {
reserved += gmfacade.findPlaceProductCount(p);
available += placeFacade.findCountForProduct(p);
}
ret = BigDecimal.valueOf(available - reserved).subtract(count);
break;
}
case GLOBAL_BILLED: {
BigDecimal globBillTot = BigDecimal.ZERO;
for (Product p : limit.getProducts()) {
BillSummary globBilledSummary = billLineFacade.getLineSummary(p, eventbean.getCurrentEvent());
globBillTot = globBillTot.add(globBilledSummary.getTotal());
globBillTot = globBillTot.add(globBilledSummary.getActive());
}
count = count.add(globBillTot);
ret = limit.getUpperLimit().subtract(count);
break;
}
case GLOBAL_BILL_PAID:
BigDecimal globBillPaid = BigDecimal.ZERO;
for (Product p : limit.getProducts()) {
......@@ -258,7 +289,7 @@ public class ProductBean implements ProductBeanLocal {
BigDecimal userBillTot = BigDecimal.ZERO;
for (Product p : limit.getProducts()) {
BillSummary userBilledSummary = billLineFacade.getLineSummary(p, eventbean.getCurrentEvent(), user);
userBillTot = userBillTot.add(userBilledSummary.getTotal());
userBillTot = userBillTot.add(userBilledSummary.getActive());
}
count = count.add(userBillTot);
ret = limit.getUpperLimit().subtract(count);
......
......@@ -2,13 +2,8 @@ package fi.codecrew.moya.facade;
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.Place_;
import fi.codecrew.moya.model.EventMap;
import fi.codecrew.moya.model.Place;
@Stateless
@LocalBean
......@@ -18,43 +13,4 @@ public class EventMapFacade extends IntegerPkGenericFacade<EventMap> {
super(EventMap.class);
}
public Long countAvailable(EventMap map) {
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<Long> cq = cb.createQuery(Long.class);
Root<Place> root = cq.from(Place.class);
cq.select(cb.count(root));
cq.where(
cb.equal(root.get(Place_.map), map),
cb.isFalse(root.get(Place_.disabled))
);
return getSingleNullableResult(getEm().createQuery(cq));
}
public Long countSelectable(EventMap map) {
if (map == null) {
return null;
}
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<Long> cq = cb.createQuery(Long.class);
Root<Place> root = cq.from(Place.class);
cq.select(cb.count(root));
cq.where(
cb.equal(root.get(Place_.map), map),
cb.isNull(root.get(Place_.releaseTime)),
cb.isNull(root.get(Place_.group)),
cb.isFalse(root.get(Place_.disabled))
);
return getSingleNullableResult(getEm().createQuery(cq));
}
}
......@@ -20,6 +20,7 @@ import fi.codecrew.moya.model.GroupMembership_;
import fi.codecrew.moya.model.PlaceGroup;
import fi.codecrew.moya.model.PlaceGroup_;
import fi.codecrew.moya.model.Place_;
import fi.codecrew.moya.model.Product;
import fi.codecrew.moya.utilities.PasswordFunctions;
@Stateless
......@@ -65,13 +66,13 @@ public class GroupMembershipFacade extends IntegerPkGenericFacade<GroupMembershi
// q.setParameter("token", token);
return getSingleNullableResult(getEm().createQuery(cq));
}
public List<GroupMembership> matchByToken(String token) {
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<GroupMembership> cq = cb.createQuery(GroupMembership.class);
Root<GroupMembership> root = cq.from(GroupMembership.class);
cq.where(cb.like(root.get(GroupMembership_.inviteToken), "%"+token+"%"),
cq.where(cb.like(root.get(GroupMembership_.inviteToken), "%" + token + "%"),
cb.equal(root.get(GroupMembership_.placeGroup).get(PlaceGroup_.event), eventbean.getCurrentEvent())
);
......@@ -123,7 +124,7 @@ public class GroupMembershipFacade extends IntegerPkGenericFacade<GroupMembershi
// p.setParameter("user", user);
// return p.getResultList();
}
public List<GroupMembership> findAllWithoutUser() {
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<GroupMembership> cq = cb.createQuery(GroupMembership.class);
......@@ -137,4 +138,16 @@ public class GroupMembershipFacade extends IntegerPkGenericFacade<GroupMembershi
return getEm().createQuery(cq).getResultList();
}
public Long findPlaceProductCount(Product product) {
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<Long> cq = cb.createQuery(Long.class);
Root<GroupMembership> root = cq.from(GroupMembership.class);
cq.select(cb.count(root));
cq.where(cb.equal(root.get(GroupMembership_.placeProduct), product));
return super.getSingleNullableResult(getEm().createQuery(cq));
}
}
package fi.codecrew.moya.facade;
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.EventUser;
import fi.codecrew.moya.beans.EventBean;
import fi.codecrew.moya.model.Lecture;
import fi.codecrew.moya.model.LectureGroup_;
import fi.codecrew.moya.model.Lecture_;
@Stateless
@LocalBean
......@@ -12,4 +18,20 @@ public class LectureFacade extends IntegerPkGenericFacade<Lecture> {
public LectureFacade() {
super(Lecture.class);
}
@EJB
EventBean eventbean;
public Lecture findFirstLecture() {
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<Lecture> cq = cb.createQuery(Lecture.class);
Root<Lecture> root = cq.from(Lecture.class);
cq.where(cb.equal(root.get(Lecture_.lectureGroup).get(LectureGroup_.event), eventbean.getCurrentEvent()));
cq.orderBy(cb.asc(root.get(Lecture_.startTime)));
return getSingleNullableResult(getEm().createQuery(cq).setMaxResults(1));
}
}
......@@ -22,13 +22,14 @@ import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.LanEvent;
import fi.codecrew.moya.model.Place;
import fi.codecrew.moya.model.Place_;
import fi.codecrew.moya.model.Product;
@Stateless
@LocalBean
public class PlaceFacade extends IntegerPkGenericFacade<Place> {
private static final Logger logger = LoggerFactory.getLogger(PlaceFacade.class);
@EJB
EventBeanLocal eventBean;
......@@ -127,18 +128,66 @@ public class PlaceFacade extends IntegerPkGenericFacade<Place> {
);
return getSingleNullableResult(getEm().createQuery(cq));
}
public List<Place> findAll() {
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<Place> cq = cb.createQuery(Place.class);
Root<Place> root = cq.from(Place.class);
cq.where( cb.equal(root.get(Place_.map).get(EventMap_.event), eventBean.getCurrentEvent()));
cq.where(cb.equal(root.get(Place_.map).get(EventMap_.event), eventBean.getCurrentEvent()));
cq.orderBy(cb.asc(root.get(Place_.name)));
return getEm().createQuery(cq).getResultList();
}
}
public Long findCountForProduct(Product product) {
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<Long> cq = cb.createQuery(Long.class);
Root<Place> root = cq.from(Place.class);
cq.select(cb.count(root));
cq.where(
cb.equal(root.get(Place_.product), product),
cb.isFalse(root.get(Place_.disabled))
);
return super.getSingleNullableResult(getEm().createQuery(cq));
}
public Long countAvailable(EventMap map) {
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<Long> cq = cb.createQuery(Long.class);
Root<Place> root = cq.from(Place.class);
cq.select(cb.count(root));
cq.where(
cb.equal(root.get(Place_.map), map),
cb.isFalse(root.get(Place_.disabled))
);
return getSingleNullableResult(getEm().createQuery(cq));
}
public Long countSelectable(EventMap map) {
if (map == null) {
return null;
}
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<Long> cq = cb.createQuery(Long.class);
Root<Place> root = cq.from(Place.class);
cq.select(cb.count(root));
cq.where(
cb.equal(root.get(Place_.map), map),
cb.isNull(root.get(Place_.releaseTime)),
cb.isNull(root.get(Place_.group)),
cb.isFalse(root.get(Place_.disabled))
);
return getSingleNullableResult(getEm().createQuery(cq));
}
}
......@@ -34,4 +34,6 @@ public interface LectureBeanLocal {
public int userLectureSelects(LectureGroup group, EventUser user);
public boolean isUserCanParticipate(EventUser user);
public Lecture getFirstLecture();
}
......@@ -72,4 +72,12 @@ public interface PlaceBeanLocal {
PlaceGroup reserveSelectedPlaces(EventUser eventuser) throws BortalCatchableException;
public Long selectablePlaceCount(EventMap activeMap);
public EventMap findMap(Integer mapId);
public Long availablePlaceCount(EventMap activeMap);
public EventMap getActiveMap();
}
package fi.codecrew.moya.beans;
import java.util.List;
import javax.ejb.Local;
import fi.codecrew.moya.model.EventMap;
import fi.codecrew.moya.model.Place;
@Local
public interface PlaceMapBeanLocal {
// public String getSelectPlaceMapUrl(EventMap activeMap, List<Place>
// selectedPlaces, User user);
public Long selectablePlaceCount(EventMap activeMap);
public EventMap findMap(Integer mapId);
public Long availablePlaceCount(EventMap activeMap);
public EventMap getActiveMap();
// wanha poistoon, see placebean
// public byte[] placeCodesPdf(List<Place> places);
// public List<Place> findSelectedPlaces(EventMap map);
// public EventMap findMap(int i);
}
......@@ -6,31 +6,40 @@ import fi.codecrew.moya.model.BillLine;
public class BillSummary {
public BillSummary(String name) {
this.name = name;
}
private String name;
private BigDecimal total = BigDecimal.ZERO;
private BigDecimal paid = BigDecimal.ZERO;
public String getName() {
return name;
}
public BigDecimal getTotal() {
return total;
}
public void addLine(BillLine bl) {
total = getTotal().add(bl.getQuantity());
if (bl.getBill().getPaidDate() != null) {
paid = getPaid().add(bl.getQuantity());
}
}
public BigDecimal getPaid() {
return paid;
}
public BillSummary(String name) {
this.name = name;
}
private String name;
private BigDecimal active = BigDecimal.ZERO;
private BigDecimal paid = BigDecimal.ZERO;
private BigDecimal expired = BigDecimal.ZERO;
public String getName() {
return name;
}
public BigDecimal getActive() {
return active;
}
public void addLine(BillLine bl) {
if (bl.getBill().isExpired()) {
expired = getExpired().add(bl.getQuantity());
} else {
active = getActive().add(bl.getQuantity());
if (bl.getBill().getPaidDate() != null) {
paid = getPaid().add(bl.getQuantity());
}
}
}
public BigDecimal getPaid() {
return paid;
}
public BigDecimal getExpired() {
return expired;
}
}
......@@ -4,7 +4,6 @@
*/
package fi.codecrew.moya.model;
import java.beans.Transient;
import java.util.Calendar;
import javax.persistence.CascadeType;
......@@ -54,8 +53,11 @@ public class GroupMembership extends GenericEntity {
@JoinColumn(name = "place_reservation_id", referencedColumnName = "id", nullable = true, unique = true)
private Place placeReservation;
@ManyToOne
@JoinColumn(name = "place_product")
private Product placeProduct;
@JoinColumn(name = EVENTUSER_ID, referencedColumnName = EventUser.ID_COLUMN)
@ManyToOne
private EventUser user;
......@@ -143,4 +145,12 @@ public class GroupMembership extends GenericEntity {
public String getInviteToken() {
return inviteToken;
}
public Product getPlaceProduct() {
return placeProduct;
}
public void setPlaceProduct(Product placeProduct) {
this.placeProduct = placeProduct;
}
}
......@@ -145,20 +145,22 @@ public class Lecture extends GenericEntity {
this.startTime = startTime;
}
/*
@Transient
public Calendar getEndTime() {
public Date getEndTime() {
if (getStartTime() == null || getHours() == null)
return getStartTime();
Calendar endTime = (Calendar) getStartTime().clone();
Calendar endTime = Calendar.getInstance();
endTime.setTime((Date) getStartTime().clone());
endTime.add(Calendar.MINUTE, getHours().multiply(new BigDecimal(60)).intValue());
return endTime;
return endTime.getTime();
}
/*
@Transient
public void setEndTime(Calendar endTime) {
......
......@@ -5,8 +5,6 @@
package fi.codecrew.moya.model;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
......@@ -134,9 +132,9 @@ public class Product extends GenericEntity {
}
private Product(String string) {
private Product(String name) {
super();
name = "----";
this.name = name;
}
public BigDecimal getSoldCash() {
......
......@@ -2,5 +2,5 @@ package fi.codecrew.moya.model;
public enum ProductLimitationType {
GLOBAL_BILLED, GLOBAL_BILL_PAID, GLOBAL_ACCOUNTEVENTS, USER_BILLED, USER_BILL_PAID, USER_ACCOUNTEVENTS,
GLOBAL_BILLED, GLOBAL_BILL_PAID, GLOBAL_ACCOUNTEVENTS, USER_BILLED, USER_BILL_PAID, USER_ACCOUNTEVENTS, PLACE
}
......@@ -20,7 +20,7 @@
<f:facet name="header">
<h:outputText value="${i18n['product.boughtTotal']}" />
</f:facet>
<h:outputText value="#{sumline.total}">
<h:outputText value="#{sumline.active}">
<f:convertNumber />
</h:outputText>
</h:column>
......@@ -32,6 +32,14 @@
<f:convertNumber />
</h:outputText>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="${i18n['product.expired']}" />
</f:facet>
<h:outputText value="#{sumline.expired}">
<f:convertNumber />
</h:outputText>
</h:column>
</h:dataTable>
</ui:define>
</ui:composition>
......
......@@ -7,16 +7,18 @@
<f:event type="preRenderView" listener="#{lectureUserView.initView()}" />
</f:metadata>
<ui:define rendered="#{lectureUserView.lectureGroupsVisible}" name="title">
<ui:define rendered="#{lectureUserView.lectureGroupsVisible}" name="title">
<h1>#{i18n['viewlectures.title']}</h1>
</ui:define>
<ui:define name="content">
<h:form id="viewlecturesform">
<p:outputPanel styleClass="messagebox" rendered="#{!lectureUserView.participateActive}">
<h2><p:outputLabel value="#{i18n['lecture.participateNotActive.title']}" /></h2>
<h2>
<p:outputLabel value="#{i18n['lecture.participateNotActive.title']}" />
</h2>
<p:outputLabel value="#{i18n['lecture.participateNotActive.message']}" />
</p:outputPanel>
......@@ -32,13 +34,13 @@
<h:outputText value="#{lectureGroup.selectCount}" />
</p:column>
<p:column>
<p:commandButton value="#{i18n['lectureGroup.view']}" actionListener="#{lectureUserView.selectCurrentLectureGroup}" update=":viewlecturesform:participatedLectures :viewlecturesform:availableLectures :viewlecturesform:title" onerror="location.reload(true)" />
<p:commandButton value="#{i18n['lectureGroup.view']}" actionListener="#{lectureUserView.selectCurrentLectureGroup}" update=":viewlecturesform:availableLectures:lecturelist :viewlecturesform:availableLectures:schedule :viewlecturesform:participatedLectures :viewlecturesform:title" onerror="location.reload(true)" />
</p:column>
</p:dataTable>
</p:fieldset>
<h1>
<h:outputText id="title" value="#{lectureUserView.currentLectureGroup.name}" />
<h:outputText id="title" value="#{lectureUserView.currentLectureGroup.name}" />
</h1>
......@@ -62,39 +64,94 @@
<h:outputText value="#{lecture.participantsCount}" /> / <h:outputText value="#{lecture.maxParticipantsCount}" />
</p:column>
<p:column style="width:110px">
<p:commandButton value="#{i18n['lecture.unparticipate']}" actionListener="#{lectureUserView.unParticipateCurrent}" update=":viewlecturesform:availableLectures :viewlecturesform:participatedLectures" onerror="location.reload(true)" />
</p:column>
</p:dataTable>
</p:fieldset>
<br /><br />
<p:fieldset id="availableLectures" legend="#{i18n['lecture.availableLectures']}" >
<p:dataTable value="#{lectureUserView.lectures}" var="lecture">
<p:column headerText="#{i18n['lecture.name']}" sortBy="#{lecture.name}" style="width:125px">
<h:outputText value="#{lecture.name}" />
</p:column>
<p:column headerText="#{i18n['lecture.description']}" sortBy="#{lecture.description}">
<h:outputText value="#{lecture.description}" />
</p:column>
<p:column headerText="#{i18n['lecture.hours']}" sortBy="#{lecture.hours}" style="width:110px">
<h:outputText value="#{lecture.hours}" />
</p:column>
<p:column headerText="#{i18n['lecture.startTime']}" sortBy="#{lecture.startTime}" style="width:110px">
<h:outputText value="#{lecture.startTime}">
<f:convertDateTime pattern="#{sessionHandler.datetimeFormat}" timeZone="#{sessionHandler.timezone}" />
</h:outputText>
</p:column>
<p:column headerText="#{i18n['lecture.participants']}" sortBy="#{lecture.participantsCount}" style="width:110px">
<h:outputText value="#{lecture.participantsCount}" /> / <h:outputText value="#{lecture.maxParticipantsCount}" />
</p:column>
<p:column style="width:80px">
<p:commandButton value="#{i18n['lecture.participate']}" rendered="#{!lectureUserView.currentGroupFull and !lecture.full and lectureUserView.participateActive}" actionListener="#{lectureUserView.participateCurrent}" update=":viewlecturesform:availableLectures :viewlecturesform:participatedLectures" onerror="location.reload(true)" />
<h:outputText value="#{i18n['lecture.full']}" rendered="#{lecture.full}" />
<h:outputText value="#{i18n['lecture.groupFull']}" rendered="#{lectureUserView.currentGroupFull}" />
<p:commandButton value="#{i18n['lecture.unparticipate']}" actionListener="#{lectureUserView.unParticipateCurrent}" update=":viewlecturesform:availableLectures:lecturelist :viewlecturesform:availableLectures:schedule :viewlecturesform:participatedLectures" onerror="location.reload(true)" />
</p:column>
</p:dataTable>
</p:fieldset>
<br />
<br />
<h2>#{i18n['lecture.availableLectures']}</h2>
<p:tabView id="availableLectures">
<p:tab title="#{i18n['lecture.availableLecturesList']}">
<p:dataTable id="lecturelist" value="#{lectureUserView.lectures}" var="lecture">
<p:column headerText="#{i18n['lecture.name']}" sortBy="#{lecture.name}" style="width:125px">
<h:outputText value="#{lecture.name}" />
</p:column>
<p:column headerText="#{i18n['lecture.description']}" sortBy="#{lecture.description}">
<h:outputText value="#{lecture.description}" />
</p:column>
<p:column headerText="#{i18n['lecture.hours']}" sortBy="#{lecture.hours}" style="width:110px">
<h:outputText value="#{lecture.hours}" />
</p:column>
<p:column headerText="#{i18n['lecture.startTime']}" sortBy="#{lecture.startTime}" style="width:110px">
<h:outputText value="#{lecture.startTime}">
<f:convertDateTime pattern="#{sessionHandler.datetimeFormat}" timeZone="#{sessionHandler.timezone}" />
</h:outputText>
</p:column>
<p:column headerText="#{i18n['lecture.participants']}" sortBy="#{lecture.participantsCount}" style="width:110px">
<h:outputText value="#{lecture.participantsCount}" /> / <h:outputText value="#{lecture.maxParticipantsCount}" />
</p:column>
<p:column style="width:80px">
<p:commandButton value="#{i18n['lecture.participate']}" rendered="#{!lectureUserView.currentGroupFull and !lecture.full and lectureUserView.participateActive}" actionListener="#{lectureUserView.participateCurrent}" update=":viewlecturesform:availableLectures :viewlecturesform:participatedLectures" onerror="location.reload(true)" />
<h:outputText value="#{i18n['lecture.full']}" rendered="#{lecture.full}" />&nbsp;
<h:outputText value="#{i18n['lecture.groupFull']}" rendered="#{lectureUserView.currentGroupFull}" />
</p:column>
</p:dataTable>
</p:tab>
<p:tab title="#{i18n['lecture.availableLecturesCalendar']}">
<p:schedule id="schedule" axisFormat="H:mm" timeFormat="H:mm" timeZone="#{sessionHandler.timezone}" initialDate="#{lectureUserView.scheduleInitDate}" value="#{lectureUserView.coursesCalendar}" locale="#{sessionHandler.locale}" tooltip="true" draggable="false" resizable="false" view="agendaDay" allDaySlot="false">
<p:ajax event="eventSelect" listener="#{lectureUserView.onLecureCalendarEventSelect}" update=":viewlecturesform:participatedLectures :viewlecturesform:availableLectures:schedule" />
</p:schedule>
</p:tab>
</p:tabView>
</h:form>
<script type="text/javascript">
PrimeFaces.locales['fi'] = {
closeText : 'Sulje',
prevText : 'Edellinen',
nextText : 'Seuraava',
currentText : 'Tänään',
monthNames : [ 'Tammikuu','Helmikuu','Maaliskuu','Huhtikuu','Toukokuu','Kesäkuu','Heinäkuu','Elokuu','Syyskuu','Lokakuu','Marraskuu', 'Joulukuu' ],
monthNamesShort : [ 'Tammikuu', 'Helmikuu','Maaliskuu','Huhtikuu','Toukokuu','Kesäkuu','Heinäkuu','Elokuu','Syyskuu','Lokakuu','Marraskuu','Joulukuu'],
dayNames : [ 'Sunnuntai','Maanantai','Tiistain','Keskiviikko','Torstai','Perjantai','Lauantai' ],
dayNamesShort : [ 'Su','Ma','Ti','Ke','To','Pe','La' ],
dayNamesMin : [ 'Su','Ma','Ti','Ke','To','Pe','La' ],
weekHeader : 'vk',
firstDay : 1,
isRTL : false,
showMonthAfterYear : false,
yearSuffix : '',
month : 'Kuukausi',
week : 'Viikko',
day : 'Päivä',
allDayText : 'Koko päivä'
};
PrimeFaces.locales['und'] = {
closeText : 'Sulje',
prevText : 'Edellinen',
nextText : 'Seuraava',
currentText : 'Tänään',
monthNames : [ 'Tammikuu','Helmikuu','Maaliskuu','Huhtikuu','Toukokuu','Kesäkuu','Heinäkuu','Elokuu','Syyskuu','Lokakuu','Marraskuu', 'Joulukuu' ],
monthNamesShort : [ 'Tammikuu', 'Helmikuu','Maaliskuu','Huhtikuu','Toukokuu','Kesäkuu','Heinäkuu','Elokuu','Syyskuu','Lokakuu','Marraskuu','Joulukuu'],
dayNames : [ 'Sunnuntai','Maanantai','Tiistain','Keskiviikko','Torstai','Perjantai','Lauantai' ],
dayNamesShort : [ 'Su','Ma','Ti','Ke','To','Pe','La' ],
dayNamesMin : [ 'Su','Ma','Ti','Ke','To','Pe','La' ],
weekHeader : 'vk',
firstDay : 1,
isRTL : false,
showMonthAfterYear : false,
yearSuffix : '',
month : 'Kuukausi',
week : 'Viikko',
day : 'Päivä',
allDayText : 'Koko päivä'
};
</script>
</ui:define>
......
......@@ -115,4 +115,31 @@
.success {
color: #006600;
}
\ No newline at end of file
}
.lectureCalendar,
.lectureCalendarParticipating,
.lectureCalendarDisabled {
border: 1px solid black;
padding: 3px;
font-size: 11px;
}
.lectureCalendarParticipating {
background-color: green;
}
.lectureCalendarDisabled {
background-color: gray;
}
.noBorders tr, .noBorders td {
background: none !important;
border: none !important;
}
.inlineRow > td {
padding: 0 !important;
margin: 0;
padding-left: 40px !important;
}
......@@ -218,3 +218,4 @@ th, td {
padding-right: 20px;
padding-bottom: 20px;
}
......@@ -13,7 +13,7 @@
<p>#{i18n['tournaments.admin.view_tournament_description_teamview_addition']}</p>
<h:form>
<p:dataTable value="#{tournamentParticipantsView.tournament.participants}" var="participant">
<p:column style="width:2%">
<p:column style="width:20px">
<p:rowToggler />
</p:column>
<p:column>
......@@ -28,32 +28,40 @@
</f:facet>
<h:outputText value="#{participant.participator.nick}" />
</p:column>
<p:rowExpansion>
<h:panelGrid id="display" columns="2" cellpadding="4" styleClass=" ui-widget-content grid">
<h:outputText value="#{i18n['tournament.team_members']}" />
<h:panelGroup>
<ul>
<ui:repeat var="member" value="#{participant.teamMembers}">
<li>
<h:outputText value="#{member.eventUser.nick}" />
<ul>
<li>
<h:outputText value="#{tournamentParticipantsView.eventUserGameID[member.eventUser.id]}" />
</li>
<li>
<h:outputText value="#{member.eventUser.email}" />
</li>
<li>
<ui:repeat rendered="#{not empty member.eventUser.groupMemberships}" var="groupMembership" value="#{member.eventUser.groupMemberships}">
<h:outputText value="#{groupMembership.placeReservation.name}" />&nbsp;
</ui:repeat>
</li>
</ul>
</li>
</ui:repeat>
</ul>
</h:panelGroup>
</h:panelGrid>
<p:rowExpansion styleClass="inlineRow">
<p:dataTable value="#{participant.teamMembers}" var="member">
<p:column>
<f:facet name="header">
<h:outputText value="#{i18n['user.nick']}" />
</f:facet>
<h:outputText value="#{member.eventUser.nick}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{i18n['tournament.participant_gameid']}" />
</f:facet>
<h:outputText value="#{tournamentParticipantsView.eventUserGameID[member.eventUser.id]}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{i18n['user.email']}" />
</f:facet>
<h:outputText value="#{member.eventUser.email}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{i18n['place.code']}" />
</f:facet>
<ui:repeat rendered="#{not empty member.eventUser.groupMemberships}" var="groupMembership" value="#{member.eventUser.groupMemberships}">
<h:outputText value="#{groupMembership.placeReservation.name}" />&nbsp;
</ui:repeat>
</p:column>
</p:dataTable>
</p:rowExpansion>
</p:dataTable>
</h:form>
......
......@@ -17,7 +17,8 @@
<p>#{i18n['tournaments.description']}</p>
<h2>#{i18n['tournaments.open_tournaments']}</h2>
<p:dataTable value="#{tournamentListView.setupPhaseTournaments}" var="tournament">
<p:column style="width:2%">
<p:column style="width:20px">
<p:rowToggler />
</p:column>
<p:column>
......@@ -96,7 +97,7 @@
</p:dataTable>
<h2>#{i18n['tournaments.setup_closed_tournaments']}</h2>
<p:dataTable value="#{tournamentListView.setupClosedPhaseTournaments}" var="tournament">
<p:column style="width:2%">
<p:column style="width:20px">
<p:rowToggler />
</p:column>
<p:column>
......
......@@ -36,76 +36,76 @@ bill.showPayButtons = Show pay buttons
billine.vatp = vat-%
bortalApplication.BILL = Creating, and managing bills
bortalApplication.COMPO = Managing compos
bortalApplication.CONTENT = Product & shop management
bortalApplication.EVENT = Event permissions
bortalApplication.LAYOUT = Laout management
bortalApplication.LICENSE = License stuff
bortalApplication.MAP = Map management
bortalApplication.POLL = Polling stuff
bortalApplication.SALESPOINT = Managing salespoint
bortalApplication.SHOP = Product % shop management
bortalApplication.TERMINAL = Sales and self help terminal roles
bortalApplication.USER = User management related
bortalApplication.bill.CREATE_BILL = Create bills for self
bortalApplication.bill.CREATE_VERKKOMAKSU = Can create web payment to self
bortalApplication.bill.READ_ALL = "Read all bills"
bortalApplication.bill.VIEW_OWN = View own bills
bortalApplication.bill.WRITE_ALL = Modify all bills
bortalApplication.compo.MANAGE = Manage compos
bortalApplication.compo.SUBMIT_ENTRY = Submit entry
bortalApplication.compo.VIEW_COMPOS = View compos
bortalApplication.compo.VOTE = Vote
bortalApplication.content.MANAGE_ACTIONLOG = Manage actionlog
bortalApplication.content.MANAGE_MENU = Manage menus
bortalApplication.content.MANAGE_NEWS = Manage newsgroups
bortalApplication.content.MANAGE_PAGES = Manage pages
bortalApplication.event.MANAGE_PRIVATE_PROPERTIES = Can manage event private properties
bortalApplication.event.MANAGE_PROPERTIES = Can manage event properties
bortalApplication.license.MANAGE = Can manage licenses
bortalApplication.license.VIEW_OWN_CODES = Can view own licenses
bortalApplication.map.BUY_PLACES = Reserve and buy places from map
bortalApplication.map.MANAGE_MAPS = Create and modify maps
bortalApplication.map.MANAGE_OTHERS = Manage other users reservations in map
bortalApplication.map.RELEASE_PLACE = Can release place
bortalApplication.map.VIEW = View maps
bortalApplication.poll.ANSWER = Can answer and view availabe polls
bortalApplication.poll.CREATE = Create and manage polls
bortalApplication.poll.VIEW_RESULTS = View anonymized poll results
bortalApplication.salespoint.MODIFY = Modify salespoints
bortalApplication.salespoint.VIEW = View salespoints
bortalApplication.shop.LIST_ALL_PRODUCTS = List all products in shop
bortalApplication.shop.LIST_USERPRODUCTS = List products for users in shop
bortalApplication.shop.MANAGE_FOODWAVES = Can manage food waves
bortalApplication.shop.MANAGE_PRODUCTS = Create and modify products
bortalApplication.shop.SHOP_FOODWAVE = Can shop on food wave
bortalApplication.shop.SHOP_PRODUCTS = Shop products to self
bortalApplication.shop.SHOP_TO_OTHERS = Shop to other users
bortalApplication.terminal.CASHIER = Access cashier terminal functions
bortalApplication.terminal.CUSTOMER = Access client terminal functions
bortalApplication.terminal.SELFHELP = Self help terminal
bortalApplication.tournament.DOUBLE_ELIMINATION = Double elimination
bortalApplication.tournament.SINGLE_ELIMINATION = Single Elimination
bortalApplication.user = User permissions
bortalApplication.user.ANYUSER = All users have this anyways
bortalApplication.user.CREATE_NEW = Create new user
bortalApplication.user.INVITE_USERS = Invite users
bortalApplication.user.LOGGED_IN_USER = Logged in user
bortalApplication.user.LOGIN = Can login
bortalApplication.user.LOGOUT = Can logout
bortalApplication.user.MANAGE_HTTP_SESSION = Manage http sessions
bortalApplication.user.MODIFY = Modify users
bortalApplication.user.MODIFY_ACCOUNTEVENTS = Modify Account events
bortalApplication.user.READ_ORGROLES = View organization roles
bortalApplication.user.READ_ROLES = View all roles.
bortalApplication.user.VIEW_ACCOUNTEVENTS = Show other users account events
bortalApplication.user.VIEW_ALL = View all users
bortalApplication.user.VIEW_OWN_ACCOUNTEVENTS = View own accountevent
bortalApplication.user.VIEW_SELF = Can view self
bortalApplication.user.VITUTTAAKO = Can send feedback
bortalApplication.user.WRITE_ORGROLES = Modify organization roles
bortalApplication.user.WRITE_ROLES = Modify roles
bortalApplication.BILL = Creating, and managing bills
bortalApplication.COMPO = Managing compos
bortalApplication.CONTENT = Product & shop management
bortalApplication.EVENT = Event permissions
bortalApplication.LAYOUT = Laout management
bortalApplication.LICENSE = License stuff
bortalApplication.MAP = Map management
bortalApplication.POLL = Polling stuff
bortalApplication.SALESPOINT = Managing salespoint
bortalApplication.SHOP = Product % shop management
bortalApplication.TERMINAL = Sales and self help terminal roles
bortalApplication.USER = User management related
bortalApplication.bill.CREATE_BILL = Create bills for self
bortalApplication.bill.CREATE_VERKKOMAKSU = Can create web payment to self
bortalApplication.bill.READ_ALL = "Read all bills"
bortalApplication.bill.VIEW_OWN = View own bills
bortalApplication.bill.WRITE_ALL = Modify all bills
bortalApplication.compo.MANAGE = Manage compos
bortalApplication.compo.SUBMIT_ENTRY = Submit entry
bortalApplication.compo.VIEW_COMPOS = View compos
bortalApplication.compo.VOTE = Vote
bortalApplication.content.MANAGE_ACTIONLOG = Manage actionlog
bortalApplication.content.MANAGE_MENU = Manage menus
bortalApplication.content.MANAGE_NEWS = Manage newsgroups
bortalApplication.content.MANAGE_PAGES = Manage pages
bortalApplication.event.MANAGE_PRIVATE_PROPERTIES = Can manage event private properties
bortalApplication.event.MANAGE_PROPERTIES = Can manage event properties
bortalApplication.license.MANAGE = Can manage licenses
bortalApplication.license.VIEW_OWN_CODES = Can view own licenses
bortalApplication.map.BUY_PLACES = Reserve and buy places from map
bortalApplication.map.MANAGE_MAPS = Create and modify maps
bortalApplication.map.MANAGE_OTHERS = Manage other users reservations in map
bortalApplication.map.RELEASE_PLACE = Can release place
bortalApplication.map.VIEW = View maps
bortalApplication.poll.ANSWER = Can answer and view availabe polls
bortalApplication.poll.CREATE = Create and manage polls
bortalApplication.poll.VIEW_RESULTS = View anonymized poll results
bortalApplication.salespoint.MODIFY = Modify salespoints
bortalApplication.salespoint.VIEW = View salespoints
bortalApplication.shop.LIST_ALL_PRODUCTS = List all products in shop
bortalApplication.shop.LIST_USERPRODUCTS = List products for users in shop
bortalApplication.shop.MANAGE_FOODWAVES = Can manage food waves
bortalApplication.shop.MANAGE_PRODUCTS = Create and modify products
bortalApplication.shop.SHOP_FOODWAVE = Can shop on food wave
bortalApplication.shop.SHOP_PRODUCTS = Shop products to self
bortalApplication.shop.SHOP_TO_OTHERS = Shop to other users
bortalApplication.terminal.CASHIER = Access cashier terminal functions
bortalApplication.terminal.CUSTOMER = Access client terminal functions
bortalApplication.terminal.SELFHELP = Self help terminal
bortalApplication.tournament.DOUBLE_ELIMINATION = Double elimination
bortalApplication.tournament.SINGLE_ELIMINATION = Single Elimination
bortalApplication.user = User permissions
bortalApplication.user.ANYUSER = All users have this anyways
bortalApplication.user.CREATE_NEW = Create new user
bortalApplication.user.INVITE_USERS = Invite users
bortalApplication.user.LOGGED_IN_USER = Logged in user
bortalApplication.user.LOGIN = Can login
bortalApplication.user.LOGOUT = Can logout
bortalApplication.user.MANAGE_HTTP_SESSION = Manage http sessions
bortalApplication.user.MODIFY = Modify users
bortalApplication.user.MODIFY_ACCOUNTEVENTS = Modify Account events
bortalApplication.user.READ_ORGROLES = View organization roles
bortalApplication.user.READ_ROLES = View all roles.
bortalApplication.user.VIEW_ACCOUNTEVENTS = Show other users account events
bortalApplication.user.VIEW_ALL = View all users
bortalApplication.user.VIEW_OWN_ACCOUNTEVENTS = View own accountevent
bortalApplication.user.VIEW_SELF = Can view self
bortalApplication.user.VITUTTAAKO = Can send feedback
bortalApplication.user.WRITE_ORGROLES = Modify organization roles
bortalApplication.user.WRITE_ROLES = Modify roles
card.massprint.title = Print all
......@@ -196,12 +196,14 @@ lanEventPrivateProperty.save = Save
lanEventPrivateProperty.textValue = Text value
lanEventPrivateProperty.valueIsRawdataWarning = Raw value
lanEventProperty.booleanValue = Boolean value
lanEventProperty.defaultValue = Default value
lanEventProperty.save = Save
lanEventProperty.textValue = Text value
lanEventProperty.booleanValue = Boolean value
lanEventProperty.defaultValue = Default value
lanEventProperty.save = Save
lanEventProperty.textValue = Text value
lecture.availableLectures = Aihealueen kurssit ja luennot
lecture.availableLecturesCalendar = Kalenterina
lecture.availableLecturesList = Listana
lecture.createLecture = Uuden tiedot
lecture.createNew = Luo uusi
lecture.description = Kuvaus
......@@ -216,6 +218,7 @@ lecture.participate = Ilmoittaudu
lecture.participateNotActive.message = Voit ilmoittautua kursseille kun olet ostanut lipun tapahtumaan
lecture.participateNotActive.title = Osta ensiksi p\u00E4\u00E4sylippu
lecture.participatedLectures = Kurssi-ilmoittautumisesi
lecture.participating = Osallistumassa
lecture.roles = Roolit
lecture.saveLecture = Muokkaa
lecture.selectgroup = Valitse aihealue
......@@ -282,9 +285,9 @@ poll.edit = edit
print = Print
product.providedRole = Product defines role
product.returnProductEdit = Return to product:
product.saved = Product saved
product.providedRole = Product defines role
product.returnProductEdit = Return to product:
product.saved = Product saved
productshop.minusOne = -1
productshop.minusTen = -10
......
......@@ -9,6 +9,7 @@ acc_line.time = Transaction Date
accountEvent.commit = Save
accountEvent.delete = Delete
accountEvent.deliver = Deliver
accountEvent.delivered = Delivered
accountEvent.edit = Edit
accountEvent.eventTime = Time
......@@ -119,77 +120,98 @@ billine.vatp = vat-%
bills.noBills = No bills
bortalApplication.BILL = Creating, and managing bills
bortalApplication.COMPO = Managing compos
bortalApplication.CONTENT = Product & shop management
bortalApplication.EVENT = Event permissions
bortalApplication.LAYOUT = Laout management
bortalApplication.LICENSE = License stuff
bortalApplication.MAP = Map management
bortalApplication.POLL = Polling stuff
bortalApplication.SALESPOINT = Managing salespoint
bortalApplication.SHOP = Product and shop management
bortalApplication.TERMINAL = Sales and self help terminal roles
bortalApplication.USER = User management related
bortalApplication.bill.CREATE_BILL = Create bills for self
bortalApplication.bill.CREATE_VERKKOMAKSU = Can create web payment to self
bortalApplication.bill.READ_ALL = Read all bills
bortalApplication.bill.VIEW_OWN = View own bills
bortalApplication.bill.WRITE_ALL = Modify all bills
bortalApplication.compo.MANAGE = Manage compos
bortalApplication.compo.SUBMIT_ENTRY = Submit compo entry
bortalApplication.compo.VIEW_COMPOS = View compos
bortalApplication.compo.VOTE = Vote on compos
bortalApplication.content.MANAGE_ACTIONLOG = Manage actionlog
bortalApplication.content.MANAGE_MENU = Manage menus
bortalApplication.content.MANAGE_NEWS = Manage newsgroups
bortalApplication.content.MANAGE_PAGES = Manage pages
bortalApplication.event.MANAGE_PRIVATE_PROPERTIES = Can manage event private properties
bortalApplication.event.MANAGE_PROPERTIES = Can manage event properties
bortalApplication.license.MANAGE = Can manage licenses
bortalApplication.license.VIEW_OWN_CODES = Can view own licenses
bortalApplication.map.BUY_PLACES = Reserve and buy places from map
bortalApplication.map.MANAGE_MAPS = Create and modify maps
bortalApplication.map.MANAGE_OTHERS = Manage other users reservations in map
bortalApplication.map.RELEASE_PLACE = Can release place
bortalApplication.map.VIEW = View maps
bortalApplication.poll.ANSWER = Can answer and view availabe polls
bortalApplication.poll.CREATE = Create and manage polls
bortalApplication.poll.VIEW_RESULTS = View anonymized poll results
bortalApplication.salespoint.MODIFY = Modify salespoints
bortalApplication.salespoint.VIEW = View salespoints
bortalApplication.shop.LIST_ALL_PRODUCTS = List all products in shop
bortalApplication.shop.LIST_USERPRODUCTS = List products for users in shop
bortalApplication.shop.MANAGE_FOODWAVES = Can manage food waves
bortalApplication.shop.MANAGE_PRODUCTS = Create and modify products
bortalApplication.shop.SHOP_FOODWAVE = Can shop on food wave
bortalApplication.shop.SHOP_PRODUCTS = Shop products to self
bortalApplication.shop.SHOP_TO_OTHERS = Shop to other users
bortalApplication.terminal.CASHIER = Access cashier terminal functions
bortalApplication.terminal.CUSTOMER = Access client terminal functions
bortalApplication.terminal.SELFHELP = Self help terminal
bortalApplication.tournamentstatus.COMPLETED = Completed
bortalApplication.tournamentstatus.IN_PROGRESS = In progress
bortalApplication.tournamentstatus.SETUP = Setup
bortalApplication.user = User permissions
bortalApplication.user.ANYUSER = All users have this anyways
bortalApplication.user.CREATE_NEW = Create new user
bortalApplication.user.INVITE_USERS = Invite users
bortalApplication.user.LOGGED_IN_USER = Logged in user
bortalApplication.user.LOGIN = Can login
bortalApplication.user.LOGOUT = Can logout
bortalApplication.user.MANAGE_HTTP_SESSION = Manage http sessions
bortalApplication.user.MODIFY = Modify users
bortalApplication.user.MODIFY_ACCOUNTEVENTS = Modify Account events
bortalApplication.user.READ_ORGROLES = View organization roles
bortalApplication.user.READ_ROLES = View all roles.
bortalApplication.user.VIEW_ACCOUNTEVENTS = Show other users account events
bortalApplication.user.VIEW_ALL = View all users
bortalApplication.user.VIEW_OWN_ACCOUNTEVENTS = View own accountevent
bortalApplication.user.VIEW_SELF = Can view self
bortalApplication.user.VITUTTAAKO = Can send feedback
bortalApplication.user.WRITE_ORGROLES = Modify organization roles
bortalApplication.user.WRITE_ROLES = Modify roles
bortalApplication.BILL = Creating, and managing bills
bortalApplication.COMPO = Managing compos
bortalApplication.CONTENT = Product & shop management
bortalApplication.EVENT = Event permissions
bortalApplication.LAYOUT = Laout management
bortalApplication.LECTURE = Lecture permissions
bortalApplication.LICENSE = License stuff
bortalApplication.MAP = Map management
bortalApplication.NETWORKASSOCIATION = Network association related permissions
bortalApplication.POLL = Polling stuff
bortalApplication.SALESPOINT = Managing salespoint
bortalApplication.SHOP = Product and shop management
bortalApplication.TERMINAL = Sales and self help terminal roles
bortalApplication.TOURNAMENT = Tournament permissions
bortalApplication.USER = User management related
bortalApplication.bill.CREATE_BILL = Create bills for self
bortalApplication.bill.CREATE_VERKKOMAKSU = Can create web payment to self
bortalApplication.bill.READ_ALL = Read all bills
bortalApplication.bill.VIEW_OWN = View own bills
bortalApplication.bill.WRITE_ALL = Modify all bills
bortalApplication.compo.MANAGE = Manage compos
bortalApplication.compo.SUBMIT_ENTRY = Submit compo entry
bortalApplication.compo.VIEW_COMPOS = View compos
bortalApplication.compo.VOTE = Vote on compos
bortalApplication.content.MANAGE_ACTIONLOG = Manage actionlog
bortalApplication.content.MANAGE_MENU = Manage menus
bortalApplication.content.MANAGE_NEWS = Manage newsgroups
bortalApplication.content.MANAGE_PAGES = Manage pages
bortalApplication.event.MANAGE_EVENT = Can manage event
bortalApplication.event.MANAGE_PRIVATE_PROPERTIES = Can manage event private properties
bortalApplication.event.MANAGE_PROPERTIES = Can manage event properties
bortalApplication.lecture.MANAGE = Can manage lectures and courses
bortalApplication.lecture.PARTICIPATE = Can participate to lectures and courses
bortalApplication.lecture.VIEW = Can view lectures and courses
bortalApplication.license.MANAGE = Can manage licenses
bortalApplication.license.VIEW_OWN_CODES = Can view own licenses
bortalApplication.map.BUY_PLACES = Reserve and buy places from map
bortalApplication.map.MANAGE_MAPS = Create and modify maps
bortalApplication.map.MANAGE_OTHERS = Manage other users reservations in map
bortalApplication.map.RELEASE_PLACE = Can release place
bortalApplication.map.VIEW = View maps
bortalApplication.networkauthentication.CAN_ADMINISTER_ASSOCIATIONS = Can manage network associations
bortalApplication.networkauthentication.CAN_ASSOCIATE = Can associate to network
bortalApplication.networkauthentication.CAN_ASSOCIATE_MANY_PER_PLACE = Can associate many clients per one place
bortalApplication.networkauthentication.CAN_SHUFFLE_IN_GROUP = Can suffle place in same group
bortalApplication.networkauthentication.OVERRIDE_PLACE_REQUIREMENT = Can override placecode requirement
bortalApplication.poll.ANSWER = Can answer and view availabe polls
bortalApplication.poll.CREATE = Create and manage polls
bortalApplication.poll.VIEW_RESULTS = View anonymized poll results
bortalApplication.salespoint.MODIFY = Modify salespoints
bortalApplication.salespoint.VIEW = View salespoints
bortalApplication.shop.LIST_ALL_PRODUCTS = List all products in shop
bortalApplication.shop.LIST_USERPRODUCTS = List products for users in shop
bortalApplication.shop.MANAGE_FOODWAVES = Can manage food waves
bortalApplication.shop.MANAGE_PRODUCTS = Create and modify products
bortalApplication.shop.SHOP_FOODWAVE = Can shop on food wave
bortalApplication.shop.SHOP_PRODUCTS = Shop products to self
bortalApplication.shop.SHOP_TO_OTHERS = Shop to other users
bortalApplication.terminal.ADMIN = Admin terminal
bortalApplication.terminal.CASHIER = Access cashier terminal functions
bortalApplication.terminal.CUSTOMER = Access client terminal functions
bortalApplication.terminal.INFO = Info terminal
bortalApplication.terminal.SELFHELP = Self help terminal
bortalApplication.terminal.USER = User terminal
bortalApplication.tournament.MANAGE_ALL = Can manage all tournaments
bortalApplication.tournament.PARTICIPATE = Can participate in tournament
bortalApplication.tournament.REMOVE_OWN_PARTICIPATION = Can remove own participation
bortalApplication.tournament.VIEW = Can view tournaments
bortalApplication.tournamentstatus.COMPLETED = Completed
bortalApplication.tournamentstatus.IN_PROGRESS = In progress
bortalApplication.tournamentstatus.SETUP = Setup
bortalApplication.user = User permissions
bortalApplication.user.ANYUSER = All users have this anyways
bortalApplication.user.CREATE_NEW = Create new user
bortalApplication.user.INVITE_USERS = Invite users
bortalApplication.user.LOGGED_IN_USER = Logged in user
bortalApplication.user.LOGIN = Can login
bortalApplication.user.LOGOUT = Can logout
bortalApplication.user.MANAGE_HTTP_SESSION = Manage http sessions
bortalApplication.user.MODIFY = Modify users
bortalApplication.user.MODIFY_ACCOUNTEVENTS = Modify Account events
bortalApplication.user.MODIFY_OWN_GAMEIDS = Can modify own game IDs
bortalApplication.user.READ_ORGROLES = View organization roles
bortalApplication.user.READ_ROLES = View all roles.
bortalApplication.user.VIEW_ACCOUNTEVENTS = Show other users account events
bortalApplication.user.VIEW_ALL = View all users
bortalApplication.user.VIEW_ALL_GAMEIDS = Can view all game IDs
bortalApplication.user.VIEW_OWN_ACCOUNTEVENTS = View own accountevent
bortalApplication.user.VIEW_SELF = Can view self
bortalApplication.user.VITUTTAAKO = Can send feedback
bortalApplication.user.WRITE_ORGROLES = Modify organization roles
bortalApplication.user.WRITE_ROLES = Modify roles
card.massprint.title = Print all
......@@ -540,10 +562,13 @@ lanEventPrivateProperty.value = Private property value
lanEventPrivateProperty.valueIsRawdataWarning = Raw value
lanEventProperty.booleanValue = Boolean value
lanEventProperty.confirmDelete = Confirm delete
lanEventProperty.createProperty = Create property
lanEventProperty.defaultValue = Default value
lanEventProperty.deleteProperty = Delete property
lanEventProperty.editProperty = Edit property
lanEventProperty.key = Property key
lanEventProperty.longValue = Long value
lanEventProperty.save = Save
lanEventProperty.textValue = Text value
lanEventProperty.value = Property value
......@@ -554,6 +579,8 @@ layout.editContent = Edit center
layout.editTop = Edit topcontent
lecture.availableLectures = available lectures
lecture.availableLecturesCalendar = In calendar
lecture.availableLecturesList = In list
lecture.createLecture = New lecture
lecture.createNew = Create new
lecture.description = Description
......@@ -568,6 +595,7 @@ lecture.participate = Participate
lecture.participateNotActive.message = You can participate to lectures when you have bought a ticket to event.
lecture.participateNotActive.title = Buy tickets before participating
lecture.participatedLectures = Your lectures
lecture.participating = Participating
lecture.roles = Roles
lecture.saveLecture = Edit
lecture.selectgroup = Select lecturegroup
......@@ -650,8 +678,11 @@ menu.sort = Sort
menu.toAdmin = Adminview
menu.toUser = Userview
menuitem.key = Menuitem key
menuitem.navigation.key = Product flag
menulist.header = Menulist
nasty.user = Go away!
networkassociation.action = Action
......@@ -697,6 +728,7 @@ org.hibernate.validator.constraints.NotEmpty.message = may not be empty
org.hibernate.validator.constraints.Range.message = must be between {min} and {max}
orgrole.create = Create
orgrole.edit = Edit orgrole
orgrole.list.title = Organization role list
orgrole.name = Name
orgrole.parents = Parent
......@@ -895,6 +927,7 @@ product.unitName = Unit name
product.vat = VAT-% (0.0 - 0.99)
productFlag.CREATE_NEW_PLACE_WHEN_BOUGHT = Create new place bought
productFlag.HIDE_FROM_INFOSHOP = Hide from info shop
productFlag.PREPAID_CREDIT = Prepaid credit
productFlag.PREPAID_INSTANT_CREATE = Prepaid instant create
productFlag.RESERVE_PLACE_WHEN_BOUGHT = Reserve place when bought
......@@ -995,6 +1028,8 @@ salespoint.noSalesPoints = Amount
save = Save
sendImage = Send image
sendPicture.header = S
shop.accountBalance = Credits
......@@ -1224,6 +1259,7 @@ tournament.admin.delete = Delete
tournament.admin.delete_cancel = Cancel Deletion
tournament.admin.delete_confirm = Confirm Deletion
tournament.admin.edit = Edit
tournament.admin.tournament_deleted_successfully = Tournament deleted successfully
tournament.admin.tournament_edited_successfully = Edited successfully
tournament.admin.tournament_rules_edit_failed = Rule Edit Failed
tournament.admin.tournament_rules_edited_successfully = Rules successfully edited
......
......@@ -9,6 +9,7 @@ acc_line.time = Ostoaika
accountEvent.commit = Tallenna
accountEvent.delete = Poista
accountEvent.deliver = Toimita
accountEvent.delivered = Toimitettu
accountEvent.edit = Muokkaa
accountEvent.eventTime = Aika
......@@ -120,77 +121,98 @@ billine.vatp = alv-%
bills.noBills = Ei laskuja
bortalApplication.BILL = Laskujen oikeudet
bortalApplication.COMPO = Compojen oikeudet
bortalApplication.CONTENT = Sis\u00E4lt\u00F6jen hallitaoikeudet
bortalApplication.EVENT = Tapahtuman oikeudet
bortalApplication.LAYOUT = N\u00E4kymien hallinta
bortalApplication.LICENSE = Lisenssioikeudet
bortalApplication.MAP = Karttojen oikeudet
bortalApplication.POLL = Kyselyiden oikeudet
bortalApplication.SALESPOINT = Myyntipisteiden oikeudet
bortalApplication.SHOP = Kaupan oikeudet
bortalApplication.TERMINAL = K\u00E4ytt\u00F6p\u00E4\u00E4tteiden roolit
bortalApplication.USER = K\u00E4ytt\u00E4j\u00E4oikeudet
bortalApplication.bill.CREATE_BILL = Voi luoda laskuja itselle
bortalApplication.bill.CREATE_VERKKOMAKSU = Voi luoda verkkomaksun itselleen
bortalApplication.bill.READ_ALL = Saa lukea kaikkia laskuja
bortalApplication.bill.VIEW_OWN = Voi katsoa omia laskuja
bortalApplication.bill.WRITE_ALL = Saa muokata kaikkia laskuja
bortalApplication.compo.MANAGE = Saa hallita compoja
bortalApplication.compo.SUBMIT_ENTRY = Saa lis\u00E4t\u00E4 entryn compoon
bortalApplication.compo.VIEW_COMPOS = Saa katsoa compoja
bortalApplication.compo.VOTE = Voi \u00E4\u00E4nest\u00E4\u00E4 compoissa
bortalApplication.content.MANAGE_ACTIONLOG = Saa hallita tapahtumalogia
bortalApplication.content.MANAGE_MENU = Saa hallinnoida valikoita
bortalApplication.content.MANAGE_NEWS = Saa hallinnoida uutisia
bortalApplication.content.MANAGE_PAGES = Saa hallinnoida sivuja
bortalApplication.event.MANAGE_PRIVATE_PROPERTIES = Saa hallita tapahtuman yksityisi\u00E4 asetuksia
bortalApplication.event.MANAGE_PROPERTIES = Saa hallita tapahtuman asetuksia
bortalApplication.license.MANAGE = Saa hallinnoida lisenssej\u00E4
bortalApplication.license.VIEW_OWN_CODES = Voi katsella omia lisenssej\u00E4
bortalApplication.map.BUY_PLACES = Voi varata ja ostaa konepaikkoja kartalta
bortalApplication.map.MANAGE_MAPS = Saa luoda ja muokata karttoja
bortalApplication.map.MANAGE_OTHERS = Saa hallita muiden k\u00E4ytt\u00E4jien varauksia kartalla
bortalApplication.map.RELEASE_PLACE = Voi vapauttaa paikan
bortalApplication.map.VIEW = Saa n\u00E4hd\u00E4 kartat
bortalApplication.poll.ANSWER = Voi vastata avoimiin kyselyihin
bortalApplication.poll.CREATE = Saa luoda ja hallita kyselyit\u00E4
bortalApplication.poll.VIEW_RESULTS = Saa n\u00E4hd\u00E4 nimett\u00F6mien kyselyiden vastaukset
bortalApplication.salespoint.MODIFY = Saa muokata myyntipisteit\u00E4
bortalApplication.salespoint.VIEW = Saa n\u00E4hd\u00E4 myyntipisteet
bortalApplication.shop.LIST_ALL_PRODUCTS = Saa listata kaikki kaupan tuotteet
bortalApplication.shop.LIST_USERPRODUCTS = Voi listata kaikki k\u00E4ytt\u00E4jille tarkoitetut tuotteet kaupassa
bortalApplication.shop.MANAGE_FOODWAVES = Saa hallita ruokatilauksia
bortalApplication.shop.MANAGE_PRODUCTS = Saa luoda ja muokata tuotteita
bortalApplication.shop.SHOP_FOODWAVE = Voi ostaa ruokatilauksessa
bortalApplication.shop.SHOP_PRODUCTS = Voi ostaa tuotteita itselle
bortalApplication.shop.SHOP_TO_OTHERS = Saa ostaa tuotteita muille
bortalApplication.terminal.CASHIER = Muokata rahastusp\u00E4\u00E4tteiden toimintoja
bortalApplication.terminal.CUSTOMER = Muokata k\u00E4vij\u00E4p\u00E4\u00E4tteiden toimintoja
bortalApplication.terminal.SELFHELP = Itsepalvelup\u00E4\u00E4te
bortalApplication.tournamentstatus.COMPLETED = P\u00E4\u00E4ttynyt
bortalApplication.tournamentstatus.IN_PROGRESS = K\u00E4ynniss\u00E4
bortalApplication.tournamentstatus.SETUP = Valmistelussa
bortalApplication.user = K\u00E4ytt\u00E4j\u00E4oikeudet
bortalApplication.user.ANYUSER = AINA kaikilla k\u00E4ytt\u00E4jill\u00E4
bortalApplication.user.CREATE_NEW = Voi luoda uuden k\u00E4ytt\u00E4j\u00E4n
bortalApplication.user.INVITE_USERS = Voi kutsua yst\u00E4vi\u00E4
bortalApplication.user.LOGGED_IN_USER = Kirjautunut k\u00E4ytt\u00E4j\u00E4
bortalApplication.user.LOGIN = Voi kirjautua
bortalApplication.user.LOGOUT = Voi uloskirjautua
bortalApplication.user.MANAGE_HTTP_SESSION = Saa hallita http istuntoja
bortalApplication.user.MODIFY = Saa muokata k\u00E4ytt\u00E4ji\u00E4
bortalApplication.user.MODIFY_ACCOUNTEVENTS = Saa muokata k\u00E4ytt\u00E4j\u00E4tapahtumia
bortalApplication.user.READ_ORGROLES = Saa n\u00E4hd\u00E4 j\u00E4rjest\u00E4j\u00E4roolit
bortalApplication.user.READ_ROLES = Saa n\u00E4hd\u00E4 kaikki roolit
bortalApplication.user.VIEW_ACCOUNTEVENTS = Saa n\u00E4hd\u00E4 muiden k\u00E4ytt\u00E4jien tapahtumat
bortalApplication.user.VIEW_ALL = Saa n\u00E4hd\u00E4 kaikki k\u00E4ytt\u00E4j\u00E4t
bortalApplication.user.VIEW_OWN_ACCOUNTEVENTS = Tarkastele omia tilitapahtumia
bortalApplication.user.VIEW_SELF = Voi katsella omaa tunnusta
bortalApplication.user.VITUTTAAKO = Saa avautua
bortalApplication.user.WRITE_ORGROLES = Saa muokata organisaation rooleja
bortalApplication.user.WRITE_ROLES = Saa muokata rooleja
bortalApplication.BILL = Laskujen oikeudet
bortalApplication.COMPO = Compojen oikeudet
bortalApplication.CONTENT = Sis\u00E4lt\u00F6jen hallitaoikeudet
bortalApplication.EVENT = Tapahtuman oikeudet
bortalApplication.LAYOUT = N\u00E4kymien hallinta
bortalApplication.LECTURE = Kurssien ja luentojen oikeudet
bortalApplication.LICENSE = Lisenssioikeudet
bortalApplication.MAP = Karttojen oikeudet
bortalApplication.NETWORKASSOCIATION = Verkkoon liittymisen oikeudet
bortalApplication.POLL = Kyselyiden oikeudet
bortalApplication.SALESPOINT = Myyntipisteiden oikeudet
bortalApplication.SHOP = Kaupan oikeudet
bortalApplication.TERMINAL = K\u00E4ytt\u00F6p\u00E4\u00E4tteiden roolit
bortalApplication.TOURNAMENT = Turnauksien oikeudet
bortalApplication.USER = K\u00E4ytt\u00E4j\u00E4oikeudet
bortalApplication.bill.CREATE_BILL = Voi luoda laskuja itselle
bortalApplication.bill.CREATE_VERKKOMAKSU = Voi luoda verkkomaksun itselleen
bortalApplication.bill.READ_ALL = Saa lukea kaikkia laskuja
bortalApplication.bill.VIEW_OWN = Voi katsoa omia laskuja
bortalApplication.bill.WRITE_ALL = Saa muokata kaikkia laskuja
bortalApplication.compo.MANAGE = Saa hallita compoja
bortalApplication.compo.SUBMIT_ENTRY = Saa lis\u00E4t\u00E4 entryn compoon
bortalApplication.compo.VIEW_COMPOS = Saa katsoa compoja
bortalApplication.compo.VOTE = Voi \u00E4\u00E4nest\u00E4\u00E4 compoissa
bortalApplication.content.MANAGE_ACTIONLOG = Saa hallita tapahtumalogia
bortalApplication.content.MANAGE_MENU = Saa hallinnoida valikoita
bortalApplication.content.MANAGE_NEWS = Saa hallinnoida uutisia
bortalApplication.content.MANAGE_PAGES = Saa hallinnoida sivuja
bortalApplication.event.MANAGE_EVENT = Saa hallinnoida tapahtumaa
bortalApplication.event.MANAGE_PRIVATE_PROPERTIES = Saa hallita tapahtuman yksityisi\u00E4 asetuksia
bortalApplication.event.MANAGE_PROPERTIES = Saa hallita tapahtuman asetuksia
bortalApplication.lecture.MANAGE = Saa hallinnoida kursseja ja luentoja
bortalApplication.lecture.PARTICIPATE = Saa osallistua kursseille ja luennoille
bortalApplication.lecture.VIEW = Saa n\u00E4hd\u00E4 kurssit ja luennot
bortalApplication.license.MANAGE = Saa hallinnoida lisenssej\u00E4
bortalApplication.license.VIEW_OWN_CODES = Voi katsella omia lisenssej\u00E4
bortalApplication.map.BUY_PLACES = Voi varata ja ostaa konepaikkoja kartalta
bortalApplication.map.MANAGE_MAPS = Saa luoda ja muokata karttoja
bortalApplication.map.MANAGE_OTHERS = Saa hallita muiden k\u00E4ytt\u00E4jien varauksia kartalla
bortalApplication.map.RELEASE_PLACE = Voi vapauttaa paikan
bortalApplication.map.VIEW = Saa n\u00E4hd\u00E4 kartat
bortalApplication.networkauthentication.CAN_ADMINISTER_ASSOCIATIONS = Saa hallinnoida verkkoon liittymisi\u00E4
bortalApplication.networkauthentication.CAN_ASSOCIATE = Saa liitty\u00E4 verkkoon
bortalApplication.networkauthentication.CAN_ASSOCIATE_MANY_PER_PLACE = Saa liitt\u00E4\u00E4 useamman laitteen samaan paikkaan
bortalApplication.networkauthentication.CAN_SHUFFLE_IN_GROUP = Saa olla eri paikalla samassa ryhm\u00E4ss\u00E4
bortalApplication.networkauthentication.OVERRIDE_PLACE_REQUIREMENT = Ei tarvitse paikkakoodia
bortalApplication.poll.ANSWER = Voi vastata avoimiin kyselyihin
bortalApplication.poll.CREATE = Saa luoda ja hallita kyselyit\u00E4
bortalApplication.poll.VIEW_RESULTS = Saa n\u00E4hd\u00E4 nimett\u00F6mien kyselyiden vastaukset
bortalApplication.salespoint.MODIFY = Saa muokata myyntipisteit\u00E4
bortalApplication.salespoint.VIEW = Saa n\u00E4hd\u00E4 myyntipisteet
bortalApplication.shop.LIST_ALL_PRODUCTS = Saa listata kaikki kaupan tuotteet
bortalApplication.shop.LIST_USERPRODUCTS = Voi listata kaikki k\u00E4ytt\u00E4jille tarkoitetut tuotteet kaupassa
bortalApplication.shop.MANAGE_FOODWAVES = Saa hallita ruokatilauksia
bortalApplication.shop.MANAGE_PRODUCTS = Saa luoda ja muokata tuotteita
bortalApplication.shop.SHOP_FOODWAVE = Voi ostaa ruokatilauksessa
bortalApplication.shop.SHOP_PRODUCTS = Voi ostaa tuotteita itselle
bortalApplication.shop.SHOP_TO_OTHERS = Saa ostaa tuotteita muille
bortalApplication.terminal.ADMIN = Yll\u00E4pitop\u00E4\u00E4te
bortalApplication.terminal.CASHIER = Muokata rahastusp\u00E4\u00E4tteiden toimintoja
bortalApplication.terminal.CUSTOMER = Muokata k\u00E4vij\u00E4p\u00E4\u00E4tteiden toimintoja
bortalApplication.terminal.INFO = Infop\u00E4\u00E4te
bortalApplication.terminal.SELFHELP = Itsepalvelup\u00E4\u00E4te
bortalApplication.terminal.USER = K\u00E4ytt\u00E4j\u00E4p\u00E4\u00E4te
bortalApplication.tournament.MANAGE_ALL = Saa hallita kaikkia turnauksia
bortalApplication.tournament.PARTICIPATE = Saa osallistua turnaukseen
bortalApplication.tournament.REMOVE_OWN_PARTICIPATION = Saa perua oman osallistumisen turnaukseen
bortalApplication.tournament.VIEW = Saa katsoa turnauksia
bortalApplication.tournamentstatus.COMPLETED = P\u00E4\u00E4ttynyt
bortalApplication.tournamentstatus.IN_PROGRESS = K\u00E4ynniss\u00E4
bortalApplication.tournamentstatus.SETUP = Valmistelussa
bortalApplication.user = K\u00E4ytt\u00E4j\u00E4oikeudet
bortalApplication.user.ANYUSER = AINA kaikilla k\u00E4ytt\u00E4jill\u00E4
bortalApplication.user.CREATE_NEW = Voi luoda uuden k\u00E4ytt\u00E4j\u00E4n
bortalApplication.user.INVITE_USERS = Voi kutsua yst\u00E4vi\u00E4
bortalApplication.user.LOGGED_IN_USER = Kirjautunut k\u00E4ytt\u00E4j\u00E4
bortalApplication.user.LOGIN = Voi kirjautua
bortalApplication.user.LOGOUT = Voi uloskirjautua
bortalApplication.user.MANAGE_HTTP_SESSION = Saa hallita http istuntoja
bortalApplication.user.MODIFY = Saa muokata k\u00E4ytt\u00E4ji\u00E4
bortalApplication.user.MODIFY_ACCOUNTEVENTS = Saa muokata k\u00E4ytt\u00E4j\u00E4tapahtumia
bortalApplication.user.MODIFY_OWN_GAMEIDS = Saa muokata omia peli-ID:it\u00E4
bortalApplication.user.READ_ORGROLES = Saa n\u00E4hd\u00E4 j\u00E4rjest\u00E4j\u00E4roolit
bortalApplication.user.READ_ROLES = Saa n\u00E4hd\u00E4 kaikki roolit
bortalApplication.user.VIEW_ACCOUNTEVENTS = Saa n\u00E4hd\u00E4 muiden k\u00E4ytt\u00E4jien tapahtumat
bortalApplication.user.VIEW_ALL = Saa n\u00E4hd\u00E4 kaikki k\u00E4ytt\u00E4j\u00E4t
bortalApplication.user.VIEW_ALL_GAMEIDS = Saa n\u00E4hd\u00E4 kaikki peli-ID:t
bortalApplication.user.VIEW_OWN_ACCOUNTEVENTS = Tarkastele omia tilitapahtumia
bortalApplication.user.VIEW_SELF = Voi katsella omaa tunnusta
bortalApplication.user.VITUTTAAKO = Saa avautua
bortalApplication.user.WRITE_ORGROLES = Saa muokata organisaation rooleja
bortalApplication.user.WRITE_ROLES = Saa muokata rooleja
card.massprint.title = Tulosta kaikki
......@@ -550,10 +572,13 @@ lanEventPrivateProperty.value = Ominaisuuden arvo
lanEventPrivateProperty.valueIsRawdataWarning = Raaka arvo
lanEventProperty.booleanValue = Totuusarvo
lanEventProperty.confirmDelete = Vahvista poisto
lanEventProperty.createProperty = Luo ominaisuus
lanEventProperty.defaultValue = Oletusarvo
lanEventProperty.deleteProperty = Poista ominaisuus
lanEventProperty.editProperty = Muokkaa arvoa
lanEventProperty.key = Ominaisuuden avain
lanEventProperty.longValue = Koko arvo
lanEventProperty.save = Tallenna
lanEventProperty.textValue = Tekstiarvo
lanEventProperty.value = Ominaisuuden arvo
......@@ -564,6 +589,8 @@ layout.editContent = Muokkaa sis\u00E4lt\u00F6\u00E4
layout.editTop = Muokkaa yl\u00E4sis\u00E4lt\u00F6\u00E4
lecture.availableLectures = Aihealueen kurssit ja luennot
lecture.availableLecturesCalendar = Kalenterina
lecture.availableLecturesList = Listana
lecture.createLecture = Uuden tiedot
lecture.createNew = Luo uusi
lecture.description = Kuvaus
......@@ -578,6 +605,7 @@ lecture.participate = Ilmoittaudu
lecture.participateNotActive.message = Voit ilmoittautua kursseille vasta kun olet ostanut lipun tapahtumaan. Osta lippu valitsemalla vasemmalta Kauppa -> Osta tuotteita.
lecture.participateNotActive.title = Aloita ostamalla lippu tapahtumaan
lecture.participatedLectures = Ilmoittautumisesi
lecture.participating = Osallistumassa
lecture.roles = Roolit
lecture.saveLecture = Muokkaa
lecture.selectgroup = Valitse aihealue
......@@ -661,6 +689,10 @@ menu.toAdmin = Yll\u00E4piton\u00E4kym\u00E4
menu.toUser = K\u00E4ytt\u00E4j\u00E4n\u00E4kym\u00E4
menu.user.edit = Omat tiedot
menuitem.key = Valikkolinkin avain
menulist.header = Valikkolista
nasty.user = Mene pois!
networkassociation.action = Toiminto
......@@ -706,6 +738,7 @@ org.hibernate.validator.constraints.NotEmpty.message = may not be empty
org.hibernate.validator.constraints.Range.message = must be between {min} and {max}
orgrole.create = Luo
orgrole.edit = Muokkaa j\u00E4rjest\u00E4j\u00E4roolia
orgrole.list.title = Lista organisaation rooleista
orgrole.name = Nimi
orgrole.parents = Periytyy
......@@ -878,6 +911,7 @@ product.unitName = Tuoteyksikk\u00F6
product.vat = ALV-% (0.0 - 0.99)
productFlag.CREATE_NEW_PLACE_WHEN_BOUGHT = Luo uusi paikka ostettaessa
productFlag.HIDE_FROM_INFOSHOP = Piilota infon kaupasta
productFlag.PREPAID_CREDIT = Prepaid credit
productFlag.PREPAID_INSTANT_CREATE = Ostettaessa luotava tuote
productFlag.RESERVE_PLACE_WHEN_BOUGHT = Varaa paikka ostettaessa
......@@ -977,6 +1011,8 @@ salespoint.noSalesPoints = M\u00E4\u00E4r\u00E4
save = Tallenna
sendImage = L\u00E4het\u00E4 kuva
sendPicture.header = L\u00E4het\u00E4 kuva
shop.accountBalance = Credits
......@@ -1207,6 +1243,7 @@ tournament.admin.delete = Poista
tournament.admin.delete_cancel = Peruuta
tournament.admin.delete_confirm = Vahvista Poisto
tournament.admin.edit = Muokkaa
tournament.admin.tournament_deleted_successfully = Turnaus onnistuneesti poistettu
tournament.admin.tournament_edited_successfully = Turnauksen asetuksia muutettu
tournament.admin.tournament_rules_edit_failed = S\u00E4\u00E4nt\u00F6jen muutos ep\u00E4onnistui
tournament.admin.tournament_rules_edited_successfully = S\u00E4\u00E4nt\u00F6jen muutos tehty
......
......@@ -15,7 +15,6 @@ import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import fi.codecrew.moya.beans.PlaceGroupBeanLocal;
import fi.codecrew.moya.beans.PlaceMapBeanLocal;
import fi.codecrew.moya.beans.ProductBeanLocal;
import fi.codecrew.moya.model.AccountEvent;
import fi.codecrew.moya.model.Product;
......@@ -29,8 +28,6 @@ import fi.codecrew.moya.rest.highcharts.HcSeriesRoot;
public class AccountEventRestView {
@EJB
private PlaceMapBeanLocal placemapbean;
@EJB
private PlaceGroupBeanLocal pgbean;
@EJB
private ProductBeanLocal productBean;
......
......@@ -24,7 +24,6 @@ import fi.codecrew.moya.beans.EventBeanLocal;
import fi.codecrew.moya.beans.EventMapBeanLocal;
import fi.codecrew.moya.beans.PlaceBeanLocal;
import fi.codecrew.moya.beans.PlaceGroupBeanLocal;
import fi.codecrew.moya.beans.PlaceMapBeanLocal;
import fi.codecrew.moya.beans.ProductBeanLocal;
import fi.codecrew.moya.beans.UserBeanLocal;
import fi.codecrew.moya.exceptions.BortalCatchableException;
......@@ -46,8 +45,6 @@ public class MapAdminView {
@EJB
private EventMapBeanLocal eventmapbean;
@EJB
private PlaceMapBeanLocal placemapbean;
@EJB
private PlaceGroupBeanLocal pgbean;
@EJB
private EventBeanLocal eventbean;
......@@ -64,7 +61,7 @@ public class MapAdminView {
@Path("/background/{mapId}")
public Response getMapBg(@PathParam("mapId") Integer mapid)
{
EventMap map = placemapbean.findMap(mapid);
EventMap map = placebean.findMap(mapid);
ByteArrayInputStream istream = new ByteArrayInputStream(map.getMapData());
return Response.ok().entity(istream).type("image/jpeg").build();
}
......@@ -80,7 +77,7 @@ public class MapAdminView {
@GET
@Path("/places/{mapId}")
public PlaceRoot getPlaces(@PathParam("mapId") Integer mapid) {
EventMap map = placemapbean.findMap(mapid);
EventMap map = placebean.findMap(mapid);
PlaceRoot ret = new PlaceRoot(map);
logger.info("returning map {} entity {}", mapid, ret);
return ret;
......
......@@ -13,8 +13,8 @@ import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import fi.codecrew.moya.beans.PlaceBeanLocal;
import fi.codecrew.moya.beans.PlaceGroupBeanLocal;
import fi.codecrew.moya.beans.PlaceMapBeanLocal;
import fi.codecrew.moya.model.EventMap;
import fi.codecrew.moya.model.Place;
import fi.codecrew.moya.model.PlaceGroup;
......@@ -26,14 +26,14 @@ import fi.codecrew.moya.model.PlaceGroup;
public class MapRestView {
@EJB
private PlaceMapBeanLocal placemapbean;
private PlaceBeanLocal placebean;
@EJB
private PlaceGroupBeanLocal pgbean;
@GET
@Path("/dateJson")
public String getAllCards() {
EventMap map = placemapbean.getActiveMap();
EventMap map = placebean.getActiveMap();
Map<Integer, Map<Integer, Map<Integer, Integer>>> counts = new HashMap<>();
......
......@@ -30,7 +30,7 @@ import org.slf4j.LoggerFactory;
import fi.codecrew.moya.beans.LoggingBeanLocal;
import fi.codecrew.moya.beans.PermissionBeanLocal;
import fi.codecrew.moya.beans.PlaceMapBeanLocal;
import fi.codecrew.moya.beans.PlaceBeanLocal;
import fi.codecrew.moya.beans.SecurityLogType;
import fi.codecrew.moya.enums.apps.MapPermission;
import fi.codecrew.moya.model.EventMap;
......@@ -49,7 +49,7 @@ public class PlaceMap extends HttpServlet {
private static final long serialVersionUID = 8769688627918936258L;
@EJB
private transient PlaceMapBeanLocal placemapBean;
private transient PlaceBeanLocal placeBean;
@EJB
private transient PermissionBeanLocal permbean;
......@@ -87,7 +87,7 @@ public class PlaceMap extends HttpServlet {
// Integer userId = getIntegerParameter(request,
// PARAMETER_CURRENT_USER_ID); Tämä saadaan beaneilta.
EventMap map = placemapBean.findMap(mapId);
EventMap map = placeBean.findMap(mapId);
logger.debug("Mapid: {}", mapId);
ostream = response.getOutputStream();
......
......@@ -13,7 +13,6 @@ import org.slf4j.LoggerFactory;
import fi.codecrew.moya.beans.EventBeanLocal;
import fi.codecrew.moya.beans.PlaceBeanLocal;
import fi.codecrew.moya.beans.PlaceMapBeanLocal;
import fi.codecrew.moya.enums.apps.MapPermission;
import fi.codecrew.moya.model.EventMap;
import fi.codecrew.moya.model.EventUser;
......@@ -25,8 +24,6 @@ import fi.codecrew.moya.web.cdiview.GenericCDIView;
public class MapView extends GenericCDIView {
private static final long serialVersionUID = 2374905512998240551L;
@EJB
private transient PlaceMapBeanLocal placeMapBean;
@Inject
@SelectedUser
......@@ -79,7 +76,7 @@ public class MapView extends GenericCDIView {
}
public Long getPlacesLeftToSelect() {
Long ret = placeMapBean.selectablePlaceCount(getActiveMap());
Long ret = placeBean.selectablePlaceCount(getActiveMap());
logger.debug("Got {} places left for map {}", ret, getActiveMap());
return ret;
......@@ -88,7 +85,7 @@ public class MapView extends GenericCDIView {
public Long getAvailablePlaces()
{
Long ret = placeMapBean.availablePlaceCount(getActiveMap());
Long ret = placeBean.availablePlaceCount(getActiveMap());
logger.debug("Got {} availbale places for map {}", ret, getActiveMap());
return ret;
......@@ -98,7 +95,7 @@ public class MapView extends GenericCDIView {
@Produces
public EventMap getActiveMap() {
if (activeMap == null) {
activeMap = placeMapBean.getActiveMap();
activeMap = placeBean.getActiveMap();
}
return activeMap;
......
......@@ -36,7 +36,7 @@ public class TournamentParticipantsView extends GenericCDIView {
if(gid != null)
eventUserGameID.put(ttm.getEventUser().getId(), gid.getIdentifier());
else
eventUserGameID.put(ttm.getEventUser().getId(), "n/a");
eventUserGameID.put(ttm.getEventUser().getId(), ttm.getEventUser().getUser().getNick());
}
}
}
......
package fi.codecrew.moya.web.lecture;
import java.util.Date;
import java.util.List;
import javax.ejb.EJB;
......@@ -8,12 +9,17 @@ import javax.faces.model.ListDataModel;
import javax.inject.Inject;
import javax.inject.Named;
import org.primefaces.event.SelectEvent;
import org.primefaces.model.DefaultScheduleEvent;
import org.primefaces.model.DefaultScheduleModel;
import org.primefaces.model.ScheduleModel;
import fi.codecrew.moya.beans.EventBeanLocal;
import fi.codecrew.moya.beans.LectureBeanLocal;
import fi.codecrew.moya.beans.UserBeanLocal;
import fi.codecrew.moya.enums.apps.LecturePermission;
import fi.codecrew.moya.model.Lecture;
import fi.codecrew.moya.model.LectureGroup;
import fi.codecrew.moya.utilities.I18n;
import fi.codecrew.moya.web.cdiview.GenericCDIView;
import fi.codecrew.moya.web.cdiview.user.UserView;
......@@ -32,26 +38,28 @@ public class LectureUserView extends GenericCDIView {
@EJB
EventBeanLocal eventBean;
ListDataModel<LectureGroup> lectureGroups = null;
ListDataModel<Lecture> lectures = null;
ListDataModel<Lecture> participatedLectures = null;
LectureGroup currentLectureGroup;
ScheduleModel coursesCalendar = null;
Date curDate = null;
public void initView() {
if (super.requirePermissions(LecturePermission.VIEW)) {
super.beginConversation();
}
}
public boolean isLectureGroupsVisible() {
if(lectureBean.getLectureGroups().size() <= 1)
if (lectureBean.getLectureGroups().size() <= 1)
return false;
return true;
}
public boolean isParticipateActive() {
return lectureBean.isUserCanParticipate(userView.getCurrentUser());
}
......@@ -84,7 +92,7 @@ public class LectureUserView extends GenericCDIView {
if (currentLectureGroup == null)
return new ListDataModel<Lecture>();
if(lectures == null)
if (lectures == null)
lectures = new ListDataModel<Lecture>(lectureBean.findAvailableLectures(getCurrentLectureGroup(), userView.getCurrentUser()));
return lectures;
......@@ -96,21 +104,91 @@ public class LectureUserView extends GenericCDIView {
return participatedLectures;
}
public ScheduleModel getCoursesCalendar() {
if (coursesCalendar == null) {
coursesCalendar = new DefaultScheduleModel();
for (Lecture lecture : lectureBean.findAvailableLectures(getCurrentLectureGroup(), userView.getCurrentUser())) {
String altinfo = "\n" + lecture.getDescription() + "\n";
if (lecture.isFull())
altinfo += "\n" + I18n.get("lecture.full");
if (isCurrentGroupFull())
altinfo += "\n" + I18n.get("lecture.groupFull");
DefaultScheduleEvent event = new DefaultScheduleEvent(lecture.getName() + altinfo, lecture.getStartTime(), lecture.getEndTime(), lecture);
event.setDescription(lecture.getDescription());
if (lecture.isFull() || isCurrentGroupFull()) {
event.setStyleClass("lectureCalendarDisabled");
} else {
event.setStyleClass("lectureCalendar");
}
coursesCalendar.addEvent(event);
}
for (Lecture lecture : lectureBean.getParticipatedLectures(userView.getCurrentUser())) {
String altinfo = "\n" + lecture.getDescription() + "\n\n" + I18n.get("lecture.participating");
DefaultScheduleEvent event = new DefaultScheduleEvent(lecture.getName() + altinfo, lecture.getStartTime(), lecture.getEndTime(), lecture);
event.setDescription(lecture.getDescription());
event.setStyleClass("lectureCalendarParticipating");
coursesCalendar.addEvent(event);
}
}
return coursesCalendar;
}
public void onLecureCalendarEventSelect(SelectEvent selectEvent) {
Lecture lecture = (Lecture) ((DefaultScheduleEvent) selectEvent.getObject()).getData();
lectureBean.participate(userView.getCurrentUser(), lecture);
// super.addFaceMessage("lecture.participated");
curDate = lecture.getStartTime();
this.lectures = null;
this.coursesCalendar = null;
}
public void onLecureCalendarDateSelect(SelectEvent selectEvent) {
}
public Date getScheduleInitDate() {
if (curDate != null)
return curDate;
Lecture lecture = lectureBean.getFirstLecture();
if (lecture == null)
return null;
return lecture.getStartTime();
}
public void participateCurrent() {
if(!isParticipateActive()) {
if (!isParticipateActive()) {
return;
}
if (lectures != null && lectures.isRowAvailable()) {
Lecture lecture = lectures.getRowData();
lectureBean.participate(userView.getCurrentUser(), lecture);
super.addFaceMessage("lecture.participated");
this.lectures = null;
this.coursesCalendar = null;
}
}
......@@ -118,20 +196,20 @@ public class LectureUserView extends GenericCDIView {
if (participatedLectures != null && participatedLectures.isRowAvailable()) {
Lecture lecture = participatedLectures.getRowData();
lectureBean.unparticipate(userView.getCurrentUser(), lecture);
super.addFaceMessage("lecture.unparticipated");
this.lectures = null;
this.coursesCalendar = null;
}
}
public boolean isCurrentGroupFull() {
return (lectureBean.userLectureSelectsLeft(getCurrentLectureGroup(), userView.getCurrentUser()) <= 0);
}
public int getCurrentGroupParticipateCount() {
return lectureBean.userLectureSelects(getCurrentLectureGroup(), userView.getCurrentUser());
}
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!