Commit 7760d10c by Tuukka Kivilahti

Nopea ilmoittautuminen, Nyt voi katsoa kursseja vaikka ei olisi ostanut lippua -…

…> ei tartte uloskirjautua että voi ilmota
1 parent 4bda07e3
......@@ -2,6 +2,7 @@ package fi.codecrew.moya.beans;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import javax.annotation.security.DeclareRoles;
import javax.annotation.security.RolesAllowed;
......@@ -15,6 +16,7 @@ import fi.codecrew.moya.enums.apps.LecturePermission;
import fi.codecrew.moya.facade.EventUserFacade;
import fi.codecrew.moya.facade.LectureFacade;
import fi.codecrew.moya.facade.LectureGroupFacade;
import fi.codecrew.moya.model.ApplicationPermission;
import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.Lecture;
import fi.codecrew.moya.model.LectureGroup;
......@@ -198,4 +200,18 @@ public class LectureBean implements LectureBeanLocal {
return maxCount - userLectureSelects(group, user);
}
@Override
public boolean isUserCanParticipate(EventUser user) {
List<Role> roles = userBean.findUsersRoles(user);
for (Role role : roles) {
for (ApplicationPermission apperm : role.getPermissions()) {
if(apperm.getPermission().getFullName().equals(LecturePermission.PARTICIPATE.getFullName()))
return true;
}
}
return false;
}
}
......@@ -129,7 +129,7 @@ public class UserBean implements UserBeanLocal {
// changed bean to this bcause of loop
@EJB
private PrintedCardFacade printedcardfacade;
@EJB
private LoggingBeanLocal loggerbean;
......@@ -156,7 +156,6 @@ public class UserBean implements UserBeanLocal {
@EJB
private ProductFacade productFacade;
@Override
@RolesAllowed(UserPermission.S_VIEW_ALL)
public List<EventUser> getUsers() {
......@@ -217,16 +216,19 @@ public class UserBean implements UserBeanLocal {
// add roles from events default role.
addRecursive(checkedRoles, event.getDefaultRole());
}
// add roles from accountEvents of the user
addRecursive(checkedRoles, productbean.getRolesFromAccountEvents(u));
for (GroupMembership member : gmfacade.findMemberships(u)) {
if (member != null && member.getPlaceReservation() != null)
{
addRecursive(checkedRoles, member.getPlaceReservation().getProvidesRole());
if (member.getPlaceReservation().getProduct() != null)
if (!u.isAnonymous()) {
// add roles from accountEvents of the user
addRecursive(checkedRoles, productbean.getRolesFromAccountEvents(u));
for (GroupMembership member : gmfacade.findMemberships(u)) {
if (member != null && member.getPlaceReservation() != null)
{
addRecursive(checkedRoles, member.getPlaceReservation().getProduct().getProvides());
addRecursive(checkedRoles, member.getPlaceReservation().getProvidesRole());
if (member.getPlaceReservation().getProduct() != null)
{
addRecursive(checkedRoles, member.getPlaceReservation().getProduct().getProvides());
}
}
}
}
......
......@@ -32,4 +32,6 @@ public interface LectureBeanLocal {
public int userLectureSelectsLeft(LectureGroup group, EventUser user);
public int userLectureSelects(LectureGroup group, EventUser user);
public boolean isUserCanParticipate(EventUser user);
}
......@@ -4,7 +4,8 @@ import fi.codecrew.moya.enums.BortalApplication;
public enum LecturePermission implements IAppPermission {
VIEW,
VIEW,
PARTICIPATE,
MANAGE,
;
......
......@@ -14,6 +14,11 @@
<ui:define name="content">
<h:form id="viewlecturesform">
<p:outputPanel styleClass="messagebox" rendered="#{!lectureUserView.participateActive}">
<h2><p:outputLabel value="#{i18n['lecture.participateNotActive.title']}" /></h2>
<p:outputLabel value="#{i18n['lecture.participateNotActive.message']}" />
</p:outputPanel>
<p:fieldset rendered="#{lectureUserView.lectureGroupsVisible}" id="lectureGroups" legend="#{i18n['lecture.selectgroup']}">
<p:dataTable value="#{lectureUserView.lectureGroups}" var="lectureGroup">
......@@ -37,7 +42,7 @@
</h1>
<p:fieldset id="participatedLectures" legend="#{i18n['lecture.participatedLectures']} #{lectureUserView.currentGroupParticipateCount} / #{lectureUserView.currentLectureGroup.selectCount}">
<p:fieldset id="participatedLectures" rendered="#{lectureUserView.participateActive}" legend="#{i18n['lecture.participatedLectures']} #{lectureUserView.currentGroupParticipateCount} / #{lectureUserView.currentLectureGroup.selectCount}">
<p:dataTable value="#{lectureUserView.participatedLectures}" var="lecture">
<p:column headerText="#{i18n['lecture.name']}" style="width:125px">
<h:outputText value="#{lecture.name}" />
......@@ -82,7 +87,7 @@
<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}" actionListener="#{lectureUserView.participateCurrent}" update=":viewlecturesform:availableLectures :viewlecturesform:participatedLectures" onerror="location.reload(true)" />
<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:column>
......
......@@ -211,3 +211,10 @@ th, td {
vertical-align: top;
padding-left: 20px;
}
.messagebox {
border: 1px red solid;
padding-left: 20px;
padding-right: 20px;
padding-bottom: 20px;
}
......@@ -201,23 +201,26 @@ lanEventProperty.defaultValue = Default value
lanEventProperty.save = Save
lanEventProperty.textValue = Text value
lecture.availableLectures = Aihealueen kurssit ja luennot
lecture.createLecture = Uuden tiedot
lecture.createNew = Luo uusi
lecture.description = Kuvaus
lecture.groupFull = Kiinti\u00F6 t\u00E4ynn\u00E4
lecture.hours = Kesto, tunteja
lecture.maxParticipantsCount = Max. osallistujia
lecture.multicreate = Luo monta putkeen
lecture.name = Nimi
lecture.participants = Osallistujia
lecture.participate = Ilmoittaudu
lecture.participatedLectures = Kurssi-ilmoittautumisesi
lecture.roles = Roolit
lecture.saveLecture = Muokkaa
lecture.selectgroup = Valitse aihealue
lecture.startTime = Aloitusaika
lecture.unparticipate = Poista ilmoittautuminen
lecture.availableLectures = Aihealueen kurssit ja luennot
lecture.createLecture = Uuden tiedot
lecture.createNew = Luo uusi
lecture.description = Kuvaus
lecture.full = Kurssi t\u00E4ynn\u00E4
lecture.groupFull = Kiinti\u00F6 t\u00E4ynn\u00E4
lecture.hours = Kesto, tunteja
lecture.maxParticipantsCount = Max. osallistujia
lecture.multicreate = Luo monta putkeen
lecture.name = Nimi
lecture.participants = Osallistujia
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.roles = Roolit
lecture.saveLecture = Muokkaa
lecture.selectgroup = Valitse aihealue
lecture.startTime = Aloitusaika
lecture.unparticipate = Poista ilmoittautuminen
lectureGroup.createLectureGroup = Luo kurssikokonaisuus
lectureGroup.createNew = Luo uusi
......
......@@ -553,23 +553,26 @@ layout.editBottom = Edit bottom content
layout.editContent = Edit center
layout.editTop = Edit topcontent
lecture.availableLectures = available lectures
lecture.createLecture = New lecture
lecture.createNew = Create new
lecture.description = Description
lecture.groupFull = Limit reached
lecture.hours = Duration hours
lecture.maxParticipantsCount = Max participants
lecture.multicreate = Create multible in row
lecture.name = Name
lecture.participants = Participants
lecture.participate = Participate
lecture.participatedLectures = Your lectures
lecture.roles = Roles
lecture.saveLecture = Edit
lecture.selectgroup = Select lecturegroup
lecture.startTime = Start time
lecture.unparticipate = Remove participation
lecture.availableLectures = available lectures
lecture.createLecture = New lecture
lecture.createNew = Create new
lecture.description = Description
lecture.full = Lecture full
lecture.groupFull = Limit reached
lecture.hours = Duration hours
lecture.maxParticipantsCount = Max participants
lecture.multicreate = Create multible in row
lecture.name = Name
lecture.participants = Participants
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.roles = Roles
lecture.saveLecture = Edit
lecture.selectgroup = Select lecturegroup
lecture.startTime = Start time
lecture.unparticipate = Remove participation
lectureGroup.createLectureGroup = Create lecturegroup
lectureGroup.createNew = Create new
......
......@@ -563,23 +563,26 @@ layout.editBottom = Muokkaa alasis\u00E4lt\u00F6\u00E4
layout.editContent = Muokkaa sis\u00E4lt\u00F6\u00E4
layout.editTop = Muokkaa yl\u00E4sis\u00E4lt\u00F6\u00E4
lecture.availableLectures = Aihealueen kurssit ja luennot
lecture.createLecture = Uuden tiedot
lecture.createNew = Luo uusi
lecture.description = Kuvaus
lecture.groupFull = Kiinti\u00F6 t\u00E4ynn\u00E4
lecture.hours = Kesto tunteina
lecture.maxParticipantsCount = Osallistujia enint.
lecture.multicreate = Luo monta putkeen
lecture.name = Nimi
lecture.participants = Osallistujia
lecture.participate = Ilmoittaudu
lecture.participatedLectures = Ilmoittautumisesi
lecture.roles = Roolit
lecture.saveLecture = Muokkaa
lecture.selectgroup = Valitse aihealue
lecture.startTime = Aloitusaika
lecture.unparticipate = Poista ilmoittautuminen
lecture.availableLectures = Aihealueen kurssit ja luennot
lecture.createLecture = Uuden tiedot
lecture.createNew = Luo uusi
lecture.description = Kuvaus
lecture.full = Kurssi t\u00E4ynn\u00E4
lecture.groupFull = Kiinti\u00F6 t\u00E4ynn\u00E4
lecture.hours = Kesto tunteina
lecture.maxParticipantsCount = Osallistujia enint.
lecture.multicreate = Luo monta putkeen
lecture.name = Nimi
lecture.participants = Osallistujia
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.roles = Roolit
lecture.saveLecture = Muokkaa
lecture.selectgroup = Valitse aihealue
lecture.startTime = Aloitusaika
lecture.unparticipate = Poista ilmoittautuminen
lectureGroup.createLectureGroup = Luo kurssikokonaisuus
lectureGroup.createNew = Luo uusi
......
......@@ -120,6 +120,7 @@ public class AuthView extends GenericCDIView {
}
HttpServletRequest request = getRequest();
if (request.getUserPrincipal() != null) {
logger.info("Principal not empty. need to logout first");
......
......@@ -55,10 +55,7 @@ public class RoleDataView extends GenericCDIView {
return roles;
}
public ListDataModel<Role> getUserSelectableRoles() {
if (roles == null) {
roles = new ListDataModel<Role>(rolebean.listUserSelectableRoles());
}
return roles;
public List<Role> getUserSelectableRoles() {
return rolebean.listUserSelectableRoles();
}
}
......@@ -94,6 +94,9 @@ public class UserView extends GenericCDIView {
private transient CardTemplateBeanLocal cardBean;
private List<Role> usersRoles;
private List<Role> userSelectableRoles = null;
@EJB
private transient RoleBeanLocal rolebean;
@EJB
......@@ -188,6 +191,17 @@ public class UserView extends GenericCDIView {
return null;
}
public List<Role> getUserSelectableRoles() {
if (userSelectableRoles == null && user != null)
{
userSelectableRoles = rolebean.getRoles(getSelectedUser());
}
return userSelectableRoles;
}
public List<Role> getUsersRoles() {
if (usersRoles == null && user != null)
{
......@@ -327,6 +341,12 @@ public class UserView extends GenericCDIView {
}
public String saveUser() {
if(userSelectableRoles != null) {
saveUserSelectableRoles();
}
logger.info("Saving user");
if (permbean.getCurrentUser().equals(user) || permbean.hasPermission(UserPermission.MODIFY)) {
......@@ -481,6 +501,10 @@ public class UserView extends GenericCDIView {
public void setUsersRoles(List<Role> usersRoles) {
this.usersRoles = usersRoles;
}
public void setUserSelectableRoles(List<Role> usersRoles) {
this.userSelectableRoles = usersRoles;
}
public String getUsername() {
return username;
......@@ -536,10 +560,11 @@ public class UserView extends GenericCDIView {
public String saveUserSelectableRoles()
{
rolebean.saveUserSelectableRoles(user, usersRoles);
usersRoles = null;
rolebean.saveUserSelectableRoles(user, userSelectableRoles);
userSelectableRoles = null;
return null;
}
......
......@@ -10,6 +10,7 @@ import javax.inject.Named;
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;
......@@ -31,6 +32,7 @@ public class LectureUserView extends GenericCDIView {
@EJB
EventBeanLocal eventBean;
ListDataModel<LectureGroup> lectureGroups = null;
ListDataModel<Lecture> lectures = null;
ListDataModel<Lecture> participatedLectures = null;
......@@ -49,6 +51,10 @@ public class LectureUserView extends GenericCDIView {
return false;
return true;
}
public boolean isParticipateActive() {
return lectureBean.isUserCanParticipate(userView.getCurrentUser());
}
public ListDataModel<LectureGroup> getLectureGroups() {
lectureGroups = new ListDataModel<LectureGroup>(lectureBean.getLectureGroups());
......@@ -91,6 +97,9 @@ public class LectureUserView extends GenericCDIView {
}
public void participateCurrent() {
if(!isParticipateActive()) {
return;
}
if (lectures != null && lectures.isRowAvailable()) {
Lecture lecture = lectures.getRowData();
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!