Commit 38dcab89 by Tuomas Riihimäki

Merge branch 'master' of codecrew.fi:bortal

Conflicts:
	code/LanBortalWeb/src/fi/insomnia/bortal/resources/i18n_en.properties
	code/LanBortalWeb/src/fi/insomnia/bortal/resources/i18n_fi.properties
2 parents abb72c29 6fc0abed
......@@ -126,6 +126,14 @@ public class FoodWave extends GenericEntity {
}
public boolean isFull() {
if(getMaximumFoods() <= 0) {
return false;
}
if(getReservedCount() >= getMaximumFoods()) {
return true;
}
return false;
}
......@@ -174,6 +182,12 @@ public class FoodWave extends GenericEntity {
}
public Integer getMaximumFoods() {
if(maximumFoods == null) {
return 0;
}
return maximumFoods;
}
......@@ -216,6 +230,18 @@ public class FoodWave extends GenericEntity {
return ret;
}
public boolean isDelivered() {
if (getAccountEvents() != null && getReservedCount() != 0) {
for(AccountEvent ae : getAccountEvents()) {
if (ae.isEventDelivered()) {
return true;
}
}
return false;
}
return true;
}
}
......
......@@ -13,11 +13,12 @@
</ui:define>
<ui:define name="content">
<h:form>
<p:dataTable styleClass="bordertable" value="#{foodWaveView.foodWaves}" sortBy="#{foodwave.time}" sortOrder="ascending" var="foodwave" editable="true" >
<!-- rowStyleClass="#{foodWave.closed ? 'old' : null} -->
<p:ajax event="rowEdit" listener="#{foodWaveView.onEditFoodWave}"/>
<p:column sortBy="#{foodwave.time}">
<p:dataTable styleClass="bordertable" value="#{foodWaveView.foodWaves}" sortBy="#{foodwave.time}" sortOrder="ascending" var="foodwave" editable="true" rowStyleClass="#{not foodwave.isOrderable() ? foodwave.isDelivered() ? 'hidden' : 'closed' : null}">
<p:ajax event="rowEdit" listener="#{foodWaveView.onEditFoodWave}" />
<f:facet name="header">
<h:outputLabel value="#{i18n['foodWave.activeFoodWaves']}" />
</f:facet>
<p:column sortBy="#{foodwave.time}">
<f:facet name="header">
<h:outputText value="${i18n['foodWave.time']}" />
</f:facet>
......@@ -31,53 +32,137 @@
<p:calendar id="startTime" value="#{foodwave.time}" pattern="#{sessionHandler.datetimeFormat}" />
</f:facet>
</p:cellEditor>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="${i18n['foodWave.template.name']}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="${i18n['foodWave.template.name']}" />
</f:facet>
<h:outputText value="#{foodwave.template.name}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputLabel id="name" value="${i18n['foodWave.name']}" />
</f:facet>
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{foodwave.name}" />
</f:facet>
<f:facet name="input">
<p:inputText value="#{foodwave.name}" style="width:100%" required="true" requiredMessage="Name required" />
</f:facet>
<h:outputText value="#{foodwave.template.name}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputLabel id="name" value="${i18n['foodWave.name']}" />
</p:cellEditor>
</p:column>
<p:column styleClass="text-center">
<f:facet name="header">
<h:outputText value="${i18n['foodWave.paid']}" />
</f:facet>
<h:outputText value="#{foodwave.orderedCount}" />
</p:column>
<p:column styleClass="text-center">
<f:facet name="header">
<h:outputText value="${i18n['foodWave.unconfirmedOrders']}" />
</f:facet>
<h:outputText value="#{foodwave.unpaidCount}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="${i18n['foodWave.totalReserved']}" />
</f:facet>
<h:outputText value="#{foodwave.reservedCount}" /> / <h:outputText value="#{foodwave.maximumFoods}" />
</p:column>
<p:column>
<h:link outcome="/foodmanager/listOrders" value="#{i18n['foodWave.show']}">
<f:param name="foodwaveid" value="#{foodwave.id}" />
</h:link>
</p:column>
<p:column>
<p:rowEditor />
</p:column>
<!--
<p:column>
<h:outputText value="#{foodwave.closed.toString()}" />
<p:commandButton rendered="#{foodwave.closed}"
value="#{i18n['foodWave.openNow']}"
action="#{foodwave.toggleClosed}" />
<p:commandButton rendered="#{not foodwave.closed}"
value="#{i18n['foodWave.closeNow']}"
action="#{foodwave.toggleClosed}" />
</p:column> -->
</p:dataTable>
</h:form>
<br/>
<br/>
<h:form>
<p:dataTable styleClass="bordertable" value="#{foodWaveView.foodWaves}" sortBy="#{foodwave.time}" sortOrder="ascending" var="foodwave" editable="true" rowStyleClass="#{not foodwave.isDelivered() ? 'hidden' : 'closed'}">
<!-- rowStyleClass="#{foodWave.closed ? 'old' : null} -->
<p:ajax event="rowEdit" listener="#{foodWaveView.onEditFoodWave}" />
<f:facet name="header">
<h:outputLabel value="#{i18n['foodWave.deliveredFoodWaves']}" />
</f:facet>
<p:column sortBy="#{foodwave.time}">
<f:facet name="header">
<h:outputText value="${i18n['foodWave.time']}" />
</f:facet>
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{foodwave.time}">
<f:convertDateTime pattern="#{sessionHandler.datetimeFormat}" timeZone="#{sessionHandler.timezone}" />
</h:outputText>
</f:facet>
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{foodwave.name}" />
</f:facet>
<f:facet name="input">
<p:inputText value="#{foodwave.name}" style="width:100%" required="true" requiredMessage="Name required" />
</f:facet>
</p:cellEditor>
</p:column>
<p:column styleClass="text-center">
<f:facet name="header">
<h:outputText value="${i18n['foodWave.paid']}" />
<f:facet name="input">
<p:calendar id="startTime" value="#{foodwave.time}" pattern="#{sessionHandler.datetimeFormat}" />
</f:facet>
<h:outputText value="#{foodwave.orderedCount}" />
</p:column>
<p:column styleClass="text-center">
<f:facet name="header">
<h:outputText value="${i18n['foodWave.unconfirmedOrders']}" />
</p:cellEditor>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="${i18n['foodWave.template.name']}" />
</f:facet>
<h:outputText value="#{foodwave.template.name}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputLabel id="name" value="${i18n['foodWave.name']}" />
</f:facet>
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{foodwave.name}" />
</f:facet>
<h:outputText value="#{foodwave.unpaidCount}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="${i18n['foodWave.totalReserved']}" />
<f:facet name="input">
<p:inputText value="#{foodwave.name}" style="width:100%" required="true" requiredMessage="Name required" />
</f:facet>
<h:outputText value="#{foodwave.reservedCount}" /> / <h:outputText value="#{foodwave.maximumFoods}" />
</p:column>
<p:column>
<h:link outcome="/foodmanager/listOrders" value="#{i18n['foodWave.show']}">
<f:param name="foodwaveid" value="#{foodwave.id}" />
</h:link>
</p:column>
<p:column>
<p:rowEditor />
</p:column>
<!--
</p:cellEditor>
</p:column>
<p:column styleClass="text-center">
<f:facet name="header">
<h:outputText value="${i18n['foodWave.paid']}" />
</f:facet>
<h:outputText value="#{foodwave.orderedCount}" />
</p:column>
<p:column styleClass="text-center">
<f:facet name="header">
<h:outputText value="${i18n['foodWave.unconfirmedOrders']}" />
</f:facet>
<h:outputText value="#{foodwave.unpaidCount}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="${i18n['foodWave.totalReserved']}" />
</f:facet>
<h:outputText value="#{foodwave.reservedCount}" /> / <h:outputText value="#{foodwave.maximumFoods}" />
</p:column>
<p:column>
<h:link outcome="/foodmanager/listOrders" value="#{i18n['foodWave.show']}">
<f:param name="foodwaveid" value="#{foodwave.id}" />
</h:link>
</p:column>
<p:column>
<p:rowEditor />
</p:column>
<!--
<p:column>
<h:outputText value="#{foodwave.closed.toString()}" />
<p:commandButton rendered="#{foodwave.closed}"
......
......@@ -15,18 +15,20 @@
<!-- <h:outputScript target="head" library="script" name="shopscript.js" /> -->
<h:outputScript library="primefaces" name="jquery/jquery.js" />
<p:dataTable columnClasses="nowrap,numalign,numalign,nowrap,numalign" styleClass="bordertable" value="#{foodWaveView.foodWaves}" var="foodwave">
<p:column>
<p:dataTable columnClasses="nowrap,numalign,numalign,nowrap,numalign" styleClass="bordertable" value="#{foodWaveView.foodWaves}" var="foodwave" sortBy="#{foodwave.time.time}" rowStyleClass="#{foodwave.isFull() ? 'closed' : null}">
<p:column sortBy="#{i18n['foodWave.name']}">
<f:facet name="header">
<h:outputLabel id="name" value="${i18n['foodWave.name']}" />
<h:outputLabel id="name" value="#{i18n['foodWave.name']}" />
</f:facet>
<h:link outcome="#{cc.attrs.outcome}" value="#{foodwave.name}">
<h:link rendered="#{not foodwave.isFull()}" outcome="#{cc.attrs.outcome}" value="#{foodwave.name}">
<f:param name="foodwaveid" value="#{foodwave.id}" />
<f:param name="userid" value="#{userView.user.user.id}" />
</h:link>
<h:outputText rendered="#{foodwave.isFull()}" value="#{foodwave.name}" />
</p:column>
<p:column>
<p:column sortBy="#{foodwave.template.name}">
<f:facet name="header">
<h:outputText value="Menu" />
</f:facet>
......@@ -34,13 +36,22 @@
<f:param name="foodwaveid" value="#{foodwave.id}" />
</h:outputText>
</p:column>
<p:column>
<p:column sortBy="#{foodwave.template.description}">
<f:facet name="header">
<h:outputText value="${i18n['foodWave.description']}" />
</f:facet>
<h:outputText id="description" value="#{foodwave.template.description}" />
</p:column>
<p:column>
<p:column sortBy="#{foodwave.reservedCount}">
<f:facet name="header">
<h:outputText value="${i18n['foodWave.totalReserved']}" />
</f:facet>
<h:outputText value="#{foodwave.reservedCount}" /> / <h:outputText value="#{foodwave.maximumFoods}" />
</p:column>
<p:column sortBy="#{foodwave.time.time}">
<f:facet name="header">
<h:outputText value="${i18n['foodWave.time']}" />
</f:facet>
......
......@@ -19,4 +19,12 @@ display: none;
.text-center {
text-align: center;
}
.closed {
background-color: #eee;
}
.hidden {
display: none;
}
\ No newline at end of file
......@@ -200,20 +200,22 @@ feedback.thanks = Thanks
food = Food
foodWave.accountevents = Accountevents
foodWave.billLines = Pending Online Payments
foodWave.description = Description
foodWave.list = Active Foodwaves
foodWave.name = Foodwave
foodWave.orders = Amount of Orders
foodWave.paid = Paid
foodWave.show = Show
foodWave.template.name = Template
foodWave.template.waves = Foodwaves
foodWave.templatename = Choose Products
foodWave.time = Time
foodWave.totalReserved = Total
foodWave.unconfirmedOrders = Unconfirmed
foodWave.accountevents = Accountevents
foodWave.activeFoodWaves = Active Foodwaves
foodWave.billLines = Pending Online Payments
foodWave.deliveredFoodWaves = Delivered Foodwaves
foodWave.description = Description
foodWave.list = Active Foodwaves
foodWave.name = Foodwave
foodWave.orders = Amount of Orders
foodWave.paid = Paid
foodWave.show = Show
foodWave.template.name = Template
foodWave.template.waves = Foodwaves
foodWave.templatename = Choose Products
foodWave.time = Time
foodWave.totalReserved = Total
foodWave.unconfirmedOrders = Unconfirmed
foodadmin.editTemplate = Edit
......
#Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net)
#Bill number
# Validationmessages
actionlog.create.header = Create new actionmessage
actionlog.create.message = Message
actionlog.create.role = Target role
actionlog.create.submitbutton = Send
actionlog.create.taskradio = Task
actionlog.crew = Crew
actionlog.message = Event
actionlog.messagelist.description = You can follow and create new action messages in this view
actionlog.messagelist.header = Messagelist
actionlog.state = State
actionlog.task = Task
actionlog.tasklist.header = Tasklist
actionlog.time = Time
actionlog.user = User
bill.billMarkedPaidMail.message = Your deposit number {0} has been marked as paid.
bill.billMarkedPaidMail.subject = [Streamparty] Your credits have been updated
error.contact = If this happens again, contact Info with the following code:
error.error = You have encountered an error.
eventorg.create = Create
eventorg.edit = Edit
global.cancel = Cancel
global.copyright = Codecrew Ry
global.infomail = info@streamparty.org
global.notAuthorizedExecute = You are not authorized to execute that!!
global.notauthorized = You don't have enough rights to enter this site.
global.save = Save
global.webpage = http://www.streamparty.org
httpsession.creationTime = Created
login.login = Login
login.logout = Logout
login.logoutmessage = You have logged out of the system
login.password = Password
login.submit = Login
login.username = Username
loginerror.header = Login failed
loginerror.message = Username of password incorrect.
loginerror.resetpassword = Reset password
passwordChanged.body = You can now login with the new password.
passwordChanged.header = Password changed successfully.
passwordReset.errorChanging = Unexpected error whilst password reset. Contact your administrator.
passwordReset.hashNotFound = Password change token has expired. Please send the query again.
permissiondenied.alreadyLoggedIn = You don't have enough rights
permissiondenied.header = Access denied
permissiondenied.notLoggedIn = You don't have enough rights to enter this site.
resetMail.body = You can change a forgotten password by inserting your username to the field below. A link where you can change the password will be sent to the email address associated to that.
resetMail.header = Reset lost password
resetMail.send = Send email
resetMail.username = Username
resetmailSent.body = Email has been sent containing a link where you can change the password.
resetmailSent.header = Email sent
#Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net)
#Bill number
# Validationmessages
actionlog.create.header = Create new actionmessage
actionlog.create.message = Message
actionlog.create.role = Target role
actionlog.create.submitbutton = Send
actionlog.create.taskradio = Task
actionlog.crew = Crew
actionlog.message = Event
actionlog.messagelist.description = You can follow and create new action messages in this view
actionlog.messagelist.header = Messagelist
actionlog.state = State
actionlog.task = Task
actionlog.tasklist.header = Tasklist
actionlog.time = Time
actionlog.user = User
bill.billMarkedPaidMail.message = Your deposit number {0} has been marked as paid.
bill.billMarkedPaidMail.subject = [Streamparty] Your credits have been updated
error.contact = If this happens again, contact Info with the following code:
error.error = You have encountered an error.
eventorg.create = Create
eventorg.edit = Edit
global.cancel = Cancel
global.copyright = Codecrew Ry
global.infomail = info@streamparty.org
global.notAuthorizedExecute = You are not authorized to execute that!!
global.notauthorized = You don't have enough rights to enter this site.
global.save = Save
global.webpage = http://www.streamparty.org
httpsession.creationTime = Created
login.login = Login
login.logout = Logout
login.logoutmessage = You have logged out of the system
login.password = Password
login.submit = Login
login.username = Username
loginerror.header = Login failed
loginerror.message = Username of password incorrect.
loginerror.resetpassword = Reset password
passwordChanged.body = You can now login with the new password.
passwordChanged.header = Password changed successfully.
passwordReset.errorChanging = Unexpected error whilst password reset. Contact your administrator.
passwordReset.hashNotFound = Password change token has expired. Please send the query again.
permissiondenied.alreadyLoggedIn = You don't have enough rights
permissiondenied.header = Access denied
permissiondenied.notLoggedIn = You don't have enough rights to enter this site.
resetMail.body = You can change a forgotten password by inserting your username to the field below. A link where you can change the password will be sent to the email address associated to that.
resetMail.header = Reset lost password
resetMail.send = Send email
resetMail.username = Username
resetmailSent.body = Email has been sent containing a link where you can change the password.
resetmailSent.header = Email sent
......@@ -198,20 +198,22 @@ feedback.thanks = Kiiiiitooooos! :)
food = Ruoka
foodWave.accountevents = Maksetut tilaukset
foodWave.billLines = Maksamattomat Verkkomaksut
foodWave.description = Kuvaus
foodWave.list = Aktiviset ruokatilaukset
foodWave.name = Ruokatilaus
foodWave.orders = Tilausten M\u00E4\u00E4r\u00E4
foodWave.paid = Maksettuja
foodWave.show = N\u00E4yt\u00E4
foodWave.template.name = Tilauspohja
foodWave.template.waves = Ruokatilaus
foodWave.templatename = Valitse tuotteet
foodWave.time = Aika
foodWave.totalReserved = Yhteens\u00E4
foodWave.unconfirmedOrders = Vahvistamattomia
foodWave.accountevents = Maksetut tilaukset
foodWave.activeFoodWaves = Aktiiviset Ruokatilaukset
foodWave.billLines = Maksamattomat Verkkomaksut
foodWave.deliveredFoodWaves = Toimitetut Ruokatilaukset
foodWave.description = Kuvaus
foodWave.list = Ruokatilaukset
foodWave.name = Ruokatilaus
foodWave.orders = Tilausten M\u00E4\u00E4r\u00E4
foodWave.paid = Maksettuja
foodWave.show = N\u00E4yt\u00E4
foodWave.template.name = Tilauspohja
foodWave.template.waves = Ruokatilaus
foodWave.templatename = Valitse tuotteet
foodWave.time = Aika
foodWave.totalReserved = Yhteens\u00E4
foodWave.unconfirmedOrders = Vahvistamattomia
foodadmin.editTemplate = Muokkaa
......
......@@ -141,8 +141,12 @@ public class FoodWaveFoodView extends GenericCDIView {
bill.addProduct(shopitem.getProduct(), shopitem.getCount(), getFoodWave());
}
}
billBean.createBill(bill);
// TODO: do this right way
eventBean.flushCache();
return bill;
}
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!