Commit 539b52d8 by Tuukka Kivilahti

event management for event responsible stuff

1 parent cfc74206
......@@ -186,4 +186,10 @@ public interface UserBeanLocal {
* @return true if matches, false if does not, null if user not found.
*/
Boolean checkPassword(EventUser eventUser, String password);
/**
*
* @return List of moya -surperusers
*/
List<User> findSuperusers();
}
......@@ -295,7 +295,14 @@ public class BootstrapBean implements BootstrapBeanLocal {
"ALTER TABLE org_role_requests ADD CONSTRAINT FK_org_role_requests_handler_id FOREIGN KEY (handler_id) REFERENCES users (id)",
"ALTER TABLE org_role_requests ADD CONSTRAINT FK_org_role_requests_requested_role FOREIGN KEY (requested_role) REFERENCES org_roles (id)",
"ALTER TABLE org_role_requests ADD CONSTRAINT FK_org_role_requests_user_id FOREIGN KEY (user_id) REFERENCES users (id)",
});
dbUpdates.add(new String[] {
"ALTER TABLE events ADD codecrew_responsible_user_id INTEGER",
"ALTER TABLE events ADD CONSTRAINT FK_events_codecrew_responsible_users FOREIGN KEY (codecrew_responsible_user_id) REFERENCES users (id)",
"ALTER TABLE events ADD organiser_responsible_user_id INTEGER",
"ALTER TABLE events ADD CONSTRAINT FK_events_organiser_responsible_users FOREIGN KEY (organiser_responsible_user_id) REFERENCES users (id)",
"ALTER TABLE events ADD codecrew_notes TEXT",
});
}
......
......@@ -1128,6 +1128,15 @@ public class UserBean implements UserBeanLocal {
return null;
}
@Override
public List<User> findSuperusers() {
if(!permbean.getCurrentUser().isSuperadmin())
throw new EJBException("Only superadmin can see other superadmins, sorry!");
return userFacade.findSuperusers();
}
@PermitAll
public EventUser findEventuserByLoginUnsecure(String username) {
return eventUserFacade.findByLogin(username);
......
......@@ -218,7 +218,14 @@ public class UserFacade extends IntegerPkGenericFacade<User> {
return sort;
}
public List<User> findSuperusers() {
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<User> cq = cb.createQuery(User.class);
Root<User> root = cq.from(User.class);
cq.where(cb.isTrue(root.get(User_.superadmin)));
return getEm().createQuery(cq).getResultList();
}
// public SearchResult<User> searchEventUsers(SearchQuery query)
......
......@@ -129,6 +129,20 @@ public class LanEvent extends GenericEntity {
@OneToMany(mappedBy = "event", cascade = CascadeType.ALL)
private List<LanEventProperty> properties = new ArrayList<LanEventProperty>();
@ManyToOne
@JoinColumn(name = "codecrew_responsible_user_id", referencedColumnName = "id", nullable = true)
private User codecrewResponsible;
@ManyToOne
@JoinColumn(name = "organiser_responsible_user_id", referencedColumnName = "id", nullable = true)
private User organiserResponsible;
/**
* Internal notes for this event, like update status etc.
*/
@Column(name="codecrew_notes")
private String codecrewNotes;
// @OneToMany(mappedBy = "event")
// private List<Vip> vips;
......@@ -337,6 +351,30 @@ public class LanEvent extends GenericEntity {
this.theme = theme;
}
public User getCodecrewResponsible() {
return codecrewResponsible;
}
public void setCodecrewResponsible(User codecrewResponsible) {
this.codecrewResponsible = codecrewResponsible;
}
public User getOrganiserResponsible() {
return organiserResponsible;
}
public void setOrganiserResponsible(User organiserResponsible) {
this.organiserResponsible = organiserResponsible;
}
public String getCodecrewNotes() {
return codecrewNotes;
}
public void setCodecrewNotes(String codecrewNotes) {
this.codecrewNotes = codecrewNotes;
}
// public List<Vip> getVips() {
// return vips;
// }
......
......@@ -76,6 +76,55 @@
</p:fieldset>
</h:form>
<br /><br />
<h:form>
<p:fieldset id="codecrewDetails" legend="#{i18n['eventorg.codecrewDetails']}" toggleable="true" collapsed="true">
<p:panelGrid columns="2">
<p:outputLabel for="codecrewResponsible" value="#{i18n['eventorg.codecrewResponsible']}" />
<h:panelGroup>
<p:selectOneMenu rendered="#{eventorgView.canChangeCodecrewResponsible}" id="codecrewResponsible" value="#{eventorgView.event.codecrewResponsible}" converter="#{userConverter}" >
<f:selectItem itemLabel=" " itemValue="#{null}" />
<f:selectItems value="#{eventorgView.superUsers}" var="user" itemLabel="#{user.shortUserDescriptor}" />
</p:selectOneMenu>
<p:panelGrid columns="1" rendered="#{eventorgView.event.codecrewResponsible != null}">
<h:outputText value="#{eventorgView.event.codecrewResponsible.nick}" />
<h:outputText value="#{eventorgView.event.codecrewResponsible.wholeName}" />
<h:outputText value="#{eventorgView.event.codecrewResponsible.phone}" />
<h:outputText value="#{eventorgView.event.codecrewResponsible.email}" />
</p:panelGrid>
<br />
</h:panelGroup>
<p:outputLabel for="organiserResponsible" value="#{i18n['eventorg.organiserResponsible']}" />
<h:panelGroup>
<p:selectOneMenu id="organiserResponsible" value="#{eventorgView.event.organiserResponsible}" converter="#{userConverter}">
<f:selectItem itemLabel=" " itemValue="#{null}" />
<f:selectItems value="#{eventorgView.eventUsers}" var="eventUser" itemLabel="#{eventUser.user.shortUserDescriptor}" itemValue="#{eventUser.user}"/>
</p:selectOneMenu>
<p:panelGrid columns="1" rendered="#{eventorgView.event.organiserResponsible != null}">
<h:outputText value="#{eventorgView.event.organiserResponsible.nick}" />
<h:outputText value="#{eventorgView.event.organiserResponsible.wholeName}" />
<h:outputText value="#{eventorgView.event.organiserResponsible.phone}" />
<h:outputText value="#{eventorgView.event.organiserResponsible.email}" />
</p:panelGrid>
<br />
</h:panelGroup>
<p:outputLabel for="codecrewNotes" value="#{i18n['eventorg.codecrewNotes']}" />
<p:inputTextarea id="codecrewNotes" value="#{eventorgView.event.codecrewNotes}" cols="80" rows="5" />
</p:panelGrid>
<br /><br />
<p:commandButton actionListener="#{eventorgView.saveEvent()}" value="#{i18n['event.save']}" update="codecrewDetails" />
</p:fieldset>
</h:form>
<br /><br />
<p:fieldset legend="Tools" toggleable="true" collapsed="true">
<h:form>
......
......@@ -27,6 +27,8 @@ import javax.faces.model.ListDataModel;
import javax.inject.Inject;
import javax.inject.Named;
import fi.codecrew.moya.beans.UserBeanLocal;
import fi.codecrew.moya.model.*;
import org.primefaces.model.DefaultScheduleEvent;
import org.primefaces.model.DefaultScheduleModel;
import org.primefaces.model.ScheduleModel;
......@@ -37,10 +39,6 @@ import fi.codecrew.moya.beans.EventBeanLocal;
import fi.codecrew.moya.beans.EventOrganiserBeanLocal;
import fi.codecrew.moya.beans.SitePageBeanLocal;
import fi.codecrew.moya.enums.apps.EventPermission;
import fi.codecrew.moya.model.EventOrganiser;
import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.LanEvent;
import fi.codecrew.moya.model.LanEventDomain;
import fi.codecrew.moya.utilities.I18n;
import fi.codecrew.moya.web.annotations.LoggedIn;
import fi.codecrew.moya.web.cdiview.GenericCDIView;
......@@ -80,6 +78,9 @@ public class EventOrgView extends GenericCDIView {
private LanEvent copyParty;
@EJB
private UserBeanLocal userBean;
private transient ListDataModel<LanEventDomain> eventdomains;
ScheduleModel eventsCalendar = null;
......@@ -306,4 +307,17 @@ public class EventOrgView extends GenericCDIView {
this.copyParty = copyParty;
}
public List<User> getSuperUsers() {
return userBean.findSuperusers();
}
public List<EventUser> getEventUsers() {
return userBean.getUsers();
}
public boolean isCanChangeCodecrewResponsible() {
return permbean.getCurrentUser().isSuperadmin();
}
}
......@@ -529,3 +529,7 @@ vipProduct.quantity = Lukum\u00E4\u00E4r\u00E4
yes = Kyll\u00E4
placegroupview.reserveForSelf=Valitse paikka itsellesi
eventorg.codecrewDetails=Tapahtuman j\u00E4rjest\u00E4j\u00E4tiedot
eventorg.codecrewResponsible=Codecrewin tukihenkil\u00F6
eventorg.organiserResponsible=J\u00E4rjest\u00E4j\u00E4n vastaava
eventorg.codecrewNotes=Codecrew -muistiinpanot
......@@ -1750,3 +1750,7 @@ voting.create.voteStart = Voting start
yes = Yes
placegroupview.reserveForSelf=Select place for yourself
eventorg.codecrewDetails=Event organizer information
eventorg.codecrewResponsible=Codecrew support
eventorg.organiserResponsible=Organizer responsible
eventorg.codecrewNotes=Codecrew notes
......@@ -1734,3 +1734,7 @@ voting.create.voteStart = \u00C4\u00E4nestys auki
yes = Kyll\u00E4
placegroupview.reserveForSelf=Valitse paikka itsellesi
eventorg.codecrewDetails=Tapahtuman j\u00E4rjest\u00E4j\u00E4tiedot
eventorg.codecrewResponsible=Codecrewin tukihenkil\u00F6
eventorg.organiserResponsible=J\u00E4rjest\u00E4j\u00E4n vastaava
eventorg.codecrewNotes=Codecrew -muistiinpanot
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!