Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
Riina Antikainen
/
Moya
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Wiki
Settings
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit 6ebe8612
authored
Oct 24, 2014
by
Tuukka Kivilahti
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
lots of stuff
1 parent
c5bbd5e2
Hide whitespace changes
Inline
Side-by-side
Showing
22 changed files
with
581 additions
and
20 deletions
code/moya-beans-client/ejbModule/fi/codecrew/moya/beans/StatisticsBeanLocal.java
code/moya-beans-client/ejbModule/fi/codecrew/moya/util/CheckoutBank.java
code/moya-beans/ejbModule/fi/codecrew/moya/beans/CardTemplateBean.java
code/moya-beans/ejbModule/fi/codecrew/moya/beans/MenuBean.java
code/moya-beans/ejbModule/fi/codecrew/moya/beans/StatisticsBean.java
code/moya-beans/ejbModule/fi/codecrew/moya/facade/GroupMembershipFacade.java
code/moya-beans/ejbModule/fi/codecrew/moya/facade/PrintedCardFacade.java
code/moya-database/src/main/java/fi/codecrew/moya/model/Bill.java
code/moya-utils/src/main/java/fi/codecrew/moya/enums/apps/EventPermission.java
code/moya-web/WebContent/info/foodwave/foodwaveProducts.xhtml
code/moya-web/WebContent/info/foodwave/foodwaveshop.xhtml
code/moya-web/WebContent/reports/basicStatistics.xhtml
code/moya-web/WebContent/resources/templates/blipview/css/style.css
code/moya-web/WebContent/resources/templates/custom_components.css
code/moya-web/WebContent/resources/templates/infoview/css/style.css
code/moya-web/pom.xml
code/moya-web/src/main/java/fi/codecrew/moya/resources/i18n.properties
code/moya-web/src/main/java/fi/codecrew/moya/resources/i18n_en.properties
code/moya-web/src/main/java/fi/codecrew/moya/resources/i18n_fi.properties
code/moya-web/src/main/java/fi/codecrew/moya/web/cdiview/user/UserView.java
code/moya-web/src/main/java/fi/codecrew/moya/web/flow/FlowFoodwaveView.java
code/moya-web/src/main/java/fi/codecrew/moya/web/reports/BasicStatisticsView.java
code/moya-beans-client/ejbModule/fi/codecrew/moya/beans/StatisticsBeanLocal.java
0 → 100644
View file @
6ebe861
/*
* Copyright Codecrew Ry
*
* All rights reserved.
*
* This license applies to any software containing a notice placed by the
* copyright holder. Such software is herein referred to as the Software.
* This license covers modification, distribution and use of the Software.
*
* Any distribution and use in source and binary forms, with or without
* modification is not permitted without explicit written permission from the
* copyright owner.
*
* A non-exclusive royalty-free right is granted to the copyright owner of the
* Software to use, modify and distribute all modifications to the Software in
* future versions of the Software.
*
*/
package
fi
.
codecrew
.
moya
.
beans
;
import
java.util.Map
;
import
javax.ejb.Local
;
@Local
public
interface
StatisticsBeanLocal
{
public
Long
getGroupMembershipsEnteredEvent
();
public
Long
getCardDeliveredCount
();
public
Long
getGroupMembershipsTotalCount
();
public
Map
<
Long
,
Long
>
getHourlyIncomingStatistics
(
long
startingFromMillis
,
int
hourCount
);
}
code/moya-beans-client/ejbModule/fi/codecrew/moya/util/CheckoutBank.java
View file @
6ebe861
...
...
@@ -74,7 +74,7 @@ public class CheckoutBank {
logger
.
info
(
"Added param for {} name {} value {}"
,
new
Object
[]
{
key
,
paramName
,
paramValue
});
}
}
System
.
out
.
println
();
//
System.out.println();
}
...
...
code/moya-beans/ejbModule/fi/codecrew/moya/beans/CardTemplateBean.java
View file @
6ebe861
...
...
@@ -399,7 +399,7 @@ public class CardTemplateBean implements CardTemplateBeanLocal {
card
.
setCardState
(
CardState
.
DELIVERED
);
}
else
{
logger
.
info
(
"Not marking card to delivered: "
+
card
.
getCardState
()
+
" : "
+
card
.
getId
());
}
}
if
(
markUserPlacesDelivered
)
{
for
(
GroupMembership
membership
:
gmFacade
.
findMemberships
(
user
))
{
...
...
code/moya-beans/ejbModule/fi/codecrew/moya/beans/MenuBean.java
View file @
6ebe861
...
...
@@ -302,6 +302,10 @@ public class MenuBean implements MenuBeanLocal {
adminevent
.
addPage
(
menuitemfacade
.
findOrCreate
(
"/eventorg/editEvent"
),
EventPermission
.
MANAGE_PROPERTIES
);
adminevent
.
addPage
(
menuitemfacade
.
findOrCreate
(
"/eventorg/edit"
),
EventPermission
.
MANAGE_PROPERTIES
).
setVisible
(
false
);
adminevent
.
addPage
(
menuitemfacade
.
findOrCreate
(
"/reports/basicStatistics"
),
EventPermission
.
VIEW_STATISTICS
);
MenuNavigation
tournamentsadm
=
adminmenu
.
addPage
(
null
,
null
);
tournamentsadm
.
setKey
(
"tournaments.menutitle"
);
...
...
@@ -332,6 +336,8 @@ public class MenuBean implements MenuBeanLocal {
infonavi
.
addPage
(
menuitemfacade
.
findOrCreate
(
"/info/index"
),
TerminalPermission
.
INFO
);
infonavi
.
addPage
(
menuitemfacade
.
findOrCreate
(
"/info/incoming"
),
TerminalPermission
.
INFO
);
infonavi
.
addPage
(
menuitemfacade
.
findOrCreate
(
"/info/shop"
),
TerminalPermission
.
INFO
);
infonavi
.
addPage
(
menuitemfacade
.
findOrCreate
(
"/info/foodwave/foodwaveshop"
),
TerminalPermission
.
INFO
);
infonavi
.
addPage
(
menuitemfacade
.
findOrCreate
(
"/info/foodwave/foodwaveProducts"
),
TerminalPermission
.
INFO
).
setVisible
(
false
);
navifacade
.
create
(
adminmenu
);
...
...
code/moya-beans/ejbModule/fi/codecrew/moya/beans/StatisticsBean.java
0 → 100644
View file @
6ebe861
/*
* Copyright Codecrew Ry
*
* All rights reserved.
*
* This license applies to any software containing a notice placed by the
* copyright holder. Such software is herein referred to as the Software.
* This license covers modification, distribution and use of the Software.
*
* Any distribution and use in source and binary forms, with or without
* modification is not permitted without explicit written permission from the
* copyright owner.
*
* A non-exclusive royalty-free right is granted to the copyright owner of the
* Software to use, modify and distribute all modifications to the Software in
* future versions of the Software.
*
*/
package
fi
.
codecrew
.
moya
.
beans
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
javax.annotation.security.DeclareRoles
;
import
javax.annotation.security.RolesAllowed
;
import
javax.ejb.EJB
;
import
javax.ejb.Stateless
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
fi.codecrew.moya.enums.apps.EventPermission
;
import
fi.codecrew.moya.facade.GroupMembershipFacade
;
import
fi.codecrew.moya.facade.PrintedCardFacade
;
import
fi.codecrew.moya.model.GroupMembership
;
/**
* Session Bean implementation class FoodWaveBean
*/
@Stateless
@DeclareRoles
({
EventPermission
.
S_VIEW_STATISTICS
})
public
class
StatisticsBean
implements
StatisticsBeanLocal
{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
StatisticsBean
.
class
);
@EJB
GroupMembershipFacade
groupMembershipFacade
;
@EJB
PrintedCardFacade
printedCardFacade
;
@Override
@RolesAllowed
(
EventPermission
.
S_VIEW_STATISTICS
)
public
Long
getGroupMembershipsEnteredEvent
()
{
return
groupMembershipFacade
.
findGroupMembershipsEnteredCount
();
}
@Override
@RolesAllowed
(
EventPermission
.
S_VIEW_STATISTICS
)
public
Long
getCardDeliveredCount
()
{
return
printedCardFacade
.
findDeliveredCardCount
();
}
@Override
@RolesAllowed
(
EventPermission
.
S_VIEW_STATISTICS
)
public
Long
getGroupMembershipsTotalCount
()
{
return
groupMembershipFacade
.
findGroupMembershipsCount
();
}
@Override
public
Map
<
Long
,
Long
>
getHourlyIncomingStatistics
(
long
startingFromMillis
,
int
hourCount
)
{
List
<
GroupMembership
>
groupMemberships
=
groupMembershipFacade
.
findAllEnteredBetween
(
startingFromMillis
,
(
startingFromMillis
+
((
long
)
hourCount
)*
60
l
*
60
l
*
1000
l
));
HashMap
<
Long
,
Long
>
retMap
=
new
HashMap
<
Long
,
Long
>();
long
currentTimestamp
=
startingFromMillis
;
long
hour
=
(
60
l
*
60
l
*
1000
l
);
long
hourEntered
=
0
;
for
(
GroupMembership
gm
:
groupMemberships
)
{
// find the hour this one belongs to (sometime we need to skip empty hours)
while
(
gm
.
getEnteredEvent
().
getTimeInMillis
()
>
currentTimestamp
+
hour
)
{
retMap
.
put
(
currentTimestamp
,
hourEntered
);
hourEntered
=
0
;
currentTimestamp
+=
hour
;
}
hourEntered
++;
}
return
retMap
;
}
}
code/moya-beans/ejbModule/fi/codecrew/moya/facade/GroupMembershipFacade.java
View file @
6ebe861
...
...
@@ -18,6 +18,8 @@
*/
package
fi
.
codecrew
.
moya
.
facade
;
import
java.util.ArrayList
;
import
java.util.Calendar
;
import
java.util.List
;
import
javax.ejb.EJB
;
...
...
@@ -167,5 +169,72 @@ public class GroupMembershipFacade extends IntegerPkGenericFacade<GroupMembershi
return
super
.
getSingleNullableResult
(
getEm
().
createQuery
(
cq
));
}
public
Long
findGroupMembershipsCount
()
{
CriteriaBuilder
cb
=
getEm
().
getCriteriaBuilder
();
CriteriaQuery
<
Long
>
cq
=
cb
.
createQuery
(
Long
.
class
);
Root
<
GroupMembership
>
root
=
cq
.
from
(
GroupMembership
.
class
);
Path
<
PlaceGroup
>
pg
=
root
.
get
(
GroupMembership_
.
placeGroup
);
cq
.
select
(
cb
.
count
(
root
));
cq
.
where
(
cb
.
equal
(
pg
.
get
(
PlaceGroup_
.
event
),
eventbean
.
getCurrentEvent
()));
return
super
.
getSingleNullableResult
(
getEm
().
createQuery
(
cq
));
}
public
Long
findGroupMembershipsEnteredCount
()
{
CriteriaBuilder
cb
=
getEm
().
getCriteriaBuilder
();
CriteriaQuery
<
Long
>
cq
=
cb
.
createQuery
(
Long
.
class
);
Root
<
GroupMembership
>
root
=
cq
.
from
(
GroupMembership
.
class
);
Path
<
PlaceGroup
>
pg
=
root
.
get
(
GroupMembership_
.
placeGroup
);
cq
.
select
(
cb
.
count
(
root
));
cq
.
where
(
cb
.
not
(
cb
.
isNull
(
root
.
get
(
GroupMembership_
.
enteredEvent
))),
cb
.
equal
(
pg
.
get
(
PlaceGroup_
.
event
),
eventbean
.
getCurrentEvent
())
);
return
super
.
getSingleNullableResult
(
getEm
().
createQuery
(
cq
));
}
public
List
<
GroupMembership
>
findAllEnteredBetween
(
long
startTimestamp
,
long
endTimestamp
)
{
CriteriaBuilder
cb
=
getEm
().
getCriteriaBuilder
();
CriteriaQuery
<
GroupMembership
>
cq
=
cb
.
createQuery
(
GroupMembership
.
class
);
Root
<
GroupMembership
>
root
=
cq
.
from
(
GroupMembership
.
class
);
Path
<
PlaceGroup
>
pg
=
root
.
get
(
GroupMembership_
.
placeGroup
);
Calendar
c1
=
Calendar
.
getInstance
();
Calendar
c2
=
Calendar
.
getInstance
();
c1
.
setTimeInMillis
(
startTimestamp
);
c2
.
setTimeInMillis
(
endTimestamp
);
cq
.
where
(
cb
.
between
(
root
.
get
(
GroupMembership_
.
enteredEvent
),
c1
,
c2
),
cb
.
equal
(
pg
.
get
(
PlaceGroup_
.
event
),
eventbean
.
getCurrentEvent
()));
return
getEm
().
createQuery
(
cq
).
getResultList
();
}
}
code/moya-beans/ejbModule/fi/codecrew/moya/facade/PrintedCardFacade.java
View file @
6ebe861
...
...
@@ -38,6 +38,8 @@ import fi.codecrew.moya.model.CardCode;
import
fi.codecrew.moya.model.CardCode_
;
import
fi.codecrew.moya.model.CardTemplate_
;
import
fi.codecrew.moya.model.EventUser
;
import
fi.codecrew.moya.model.GroupMembership
;
import
fi.codecrew.moya.model.GroupMembership_
;
import
fi.codecrew.moya.model.LanEvent
;
import
fi.codecrew.moya.model.PrintedCard
;
import
fi.codecrew.moya.model.PrintedCard_
;
...
...
@@ -137,4 +139,26 @@ public class PrintedCardFacade extends IntegerPkGenericFacade<PrintedCard> {
return
new
ArrayList
<
PrintedCard
>(
pch
.
values
());
}
public
Long
findDeliveredCardCount
()
{
CriteriaBuilder
cb
=
getEm
().
getCriteriaBuilder
();
CriteriaQuery
<
Long
>
cq
=
cb
.
createQuery
(
Long
.
class
);
Root
<
PrintedCard
>
root
=
cq
.
from
(
PrintedCard
.
class
);
cq
.
select
(
cb
.
count
(
root
));
cq
.
where
(
cb
.
equal
(
root
.
get
(
PrintedCard_
.
cardState
),
CardState
.
DELIVERED
),
cb
.
equal
(
root
.
get
(
PrintedCard_
.
event
),
eventbean
.
getCurrentEvent
()));
return
super
.
getSingleNullableResult
(
getEm
().
createQuery
(
cq
));
}
}
code/moya-database/src/main/java/fi/codecrew/moya/model/Bill.java
View file @
6ebe861
...
...
@@ -130,7 +130,7 @@ public class Bill extends GenericEntity {
@OrderBy
(
"id"
)
// @PrivateOwned
@OneToMany
(
mappedBy
=
"bill"
,
cascade
=
CascadeType
.
ALL
)
private
List
<
BillLine
>
billLines
;
private
List
<
BillLine
>
billLines
=
new
ArrayList
<
BillLine
>()
;
public
boolean
isPaid
()
{
...
...
code/moya-utils/src/main/java/fi/codecrew/moya/enums/apps/EventPermission.java
View file @
6ebe861
...
...
@@ -24,13 +24,15 @@ public enum EventPermission implements IAppPermission {
MANAGE_PROPERTIES
,
MANAGE_PRIVATE_PROPERTIES
,
MANAGE_EVENT
MANAGE_EVENT
,
VIEW_STATISTICS
;
public
static
final
String
S_MANAGE_PROPERTIES
=
"EVENT/MANAGE_PROPERTIES"
;
public
static
final
String
S_MANAGE_PRIVATE_PROPERTIES
=
"EVENT/MANAGE_PRIVATE_PROPERTIES"
;
public
static
final
String
S_MANAGE_EVENT
=
"EVENT/MANAGE_EVENT"
;
public
static
final
String
S_VIEW_STATISTICS
=
"EVENT/VIEW_STATISTICS"
;
private
final
String
fullName
;
private
final
String
key
;
...
...
code/moya-web/WebContent/info/foodwave/foodwaveProducts.xhtml
0 → 100644
View file @
6ebe861
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html
xmlns=
"http://www.w3.org/1999/xhtml"
xmlns:ui=
"http://java.sun.com/jsf/facelets"
xmlns:h=
"http://java.sun.com/jsf/html"
xmlns:f=
"http://java.sun.com/jsf/core"
xmlns:foodwave=
"http://java.sun.com/jsf/composite/cditools/foodwave"
xmlns:products=
"http://java.sun.com/jsf/composite/cditools/products"
xmlns:users=
"http://java.sun.com/jsf/composite/cditools/user"
xmlns:reader=
"http://java.sun.com/jsf/composite/cditools/reader"
xmlns:c=
"http://java.sun.com/jsp/jstl/core"
xmlns:p=
"http://primefaces.org/ui"
>
>
<h:body>
<ui:composition
template=
"/resources/templates/#{sessionHandler.infoscreen}/template.xhtml"
>
<f:metadata>
<f:viewParam
name=
"foodwaveid"
value=
"#{foodWaveFoodView.foodwaveid}"
/>
<f:viewParam
name=
"userid"
value=
"#{flowFoodwaveView.userId}"
/>
<f:event
type=
"preRenderView"
listener=
"#{flowFoodwaveView.initFoodsView}"
/>
</f:metadata>
<ui:define
name=
"content"
>
<reader:backendReader
selectvalue=
"#{i18n['barcodeReader.readBarcode']}"
selectaction=
"#{flowFoodwaveView.polledRead}"
/>
<h:form>
<p:autoComplete
id=
"acsb"
value=
"#{infoView.multiSearchUser}"
completeMethod=
"#{infoView.matchMulti}"
converter=
"#{eventUserConverter}"
var=
"usrx"
itemLabel=
"#{usrx.shortUserDescriptor}"
itemValue=
"#{usrx}"
>
<p:ajax
event=
"itemSelect"
listener=
"#{flowFoodwaveView.changeUser}"
/>
</p:autoComplete>
</h:form>
<br
/><br
/>
<h1>
Shop to user: #{userView.selectedUser.user.nick}
</h1>
<br
/><br
/>
<foodwave:listFoods
selectaction=
"#{foodWaveFoodView.buyAndPay}"
items=
"#{foodWaveFoodView.shoppingcart}"
commitValue=
"foodshop.buyAndPay"
/>
</ui:define>
</ui:composition>
</h:body>
</html>
\ No newline at end of file
code/moya-web/WebContent/info/foodwave/foodwaveshop.xhtml
0 → 100644
View file @
6ebe861
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html
xmlns=
"http://www.w3.org/1999/xhtml"
xmlns:ui=
"http://java.sun.com/jsf/facelets"
xmlns:h=
"http://java.sun.com/jsf/html"
xmlns:f=
"http://java.sun.com/jsf/core"
xmlns:foodwave=
"http://java.sun.com/jsf/composite/cditools/foodwave"
xmlns:users=
"http://java.sun.com/jsf/composite/cditools/user"
xmlns:c=
"http://java.sun.com/jsp/jstl/core"
xmlns:reader=
"http://java.sun.com/jsf/composite/cditools/reader"
xmlns:p=
"http://primefaces.org/ui"
>
<h:body>
<ui:composition
template=
"/resources/templates/#{sessionHandler.infoscreen}/template.xhtml"
>
<f:metadata>
<f:viewParam
name=
"userid"
value=
"#{flowFoodwaveView.userId}"
/>
<f:viewParam
name=
"templateid"
value=
"#{foodWaveView.templateId}"
/>
<f:event
type=
"preRenderView"
listener=
"#{flowFoodwaveView.initView}"
/>
</f:metadata>
<ui:define
name=
"content"
>
<reader:backendReader
selectvalue=
"#{i18n['barcodeReader.readBarcode']}"
selectaction=
"#{flowFoodwaveView.polledRead}"
/>
<h:form>
<p:autoComplete
id=
"acsb"
value=
"#{infoView.multiSearchUser}"
completeMethod=
"#{infoView.matchMulti}"
converter=
"#{eventUserConverter}"
var=
"usrx"
itemLabel=
"#{usrx.shortUserDescriptor}"
itemValue=
"#{usrx}"
>
<p:ajax
event=
"itemSelect"
listener=
"#{flowFoodwaveView.changeUser}"
/>
</p:autoComplete>
</h:form>
<br
/><br
/>
<h1>
Shop to user: #{userView.selectedUser.user.nick}
</h1>
<br
/><br
/>
<foodwave:list
outcome=
"/info/foodwave/foodwaveProducts"
/>
</ui:define>
</ui:composition>
</h:body>
</html>
\ No newline at end of file
code/moya-web/WebContent/reports/basicStatistics.xhtml
0 → 100644
View file @
6ebe861
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html
xmlns=
"http://www.w3.org/1999/xhtml"
xmlns:ui=
"http://java.sun.com/jsf/facelets"
xmlns:h=
"http://java.sun.com/jsf/html"
xmlns:f=
"http://java.sun.com/jsf/core"
xmlns:c=
"http://java.sun.com/jsp/jstl/core"
xmlns:products=
"http://java.sun.com/jsf/composite/tools/products"
xmlns:foodwave=
"http://java.sun.com/jsf/composite/tools"
xmlns:p=
"http://primefaces.org/ui"
>
<h:body>
<ui:composition
template=
"#{sessionHandler.template}"
>
<ui:define
name=
"content"
>
Sisällä:
<p:outputLabel
value=
"#{basicStatisticsView.groupMembershipsEnteredCount} / #{basicStatisticsView.groupMembershipsTotalCount}"
/><br
/>
Korttei:
<p:outputLabel
value=
"#{basicStatisticsView.cardDeliveredCount}"
/>
</ui:define>
</ui:composition>
</h:body>
</html>
\ No newline at end of file
code/moya-web/WebContent/resources/templates/blipview/css/style.css
View file @
6ebe861
...
...
@@ -64,6 +64,8 @@ body {
list-style
:
none
;
}
#top-menu
li
a
{
display
:
block
;
line-height
:
1.7em
;
...
...
@@ -270,18 +272,14 @@ label {
.bgColor1
{
background-color
:
#68A3C2
;
}
/*
#header {
clear: both;
float: left;
width: 100%;
border-bottom: 4px solid #333;
}
}
*/
#header
a
{
color
:
white
;
text-decoration
:
none
;
}
#header_left
{
float
:
left
;
...
...
code/moya-web/WebContent/resources/templates/custom_components.css
View file @
6ebe861
...
...
@@ -174,7 +174,7 @@ a.shopItem:active {
color
:
#666600
;
}
.expired
{
.expired
,
.closed
{
color
:
#c0c0c0
;
}
...
...
@@ -223,4 +223,7 @@ a.shopItem:active {
padding-left
:
40px
!important
;
}
.hidden
{
display
:
none
!important
;
visibility
:
hidden
;
}
code/moya-web/WebContent/resources/templates/infoview/css/style.css
View file @
6ebe861
...
...
@@ -278,10 +278,7 @@ label {
border-bottom
:
4px
solid
#333
;
}
#header
a
{
color
:
white
;
text-decoration
:
none
;
}
#header_left
{
float
:
left
;
...
...
code/moya-web/pom.xml
View file @
6ebe861
...
...
@@ -29,10 +29,10 @@
<artifactId>
javamelody-core
</artifactId>
<version>
1.52.0
</version>
</dependency>
<dependency>
<dependency>
<groupId>
org.primefaces
</groupId>
<artifactId>
primefaces
</artifactId>
<version>
5.
0
</version>
<version>
5.
1
</version>
</dependency>
</dependencies>
...
...
code/moya-web/src/main/java/fi/codecrew/moya/resources/i18n.properties
View file @
6ebe861
...
...
@@ -347,12 +347,14 @@ submenu.NotImplementedYet = Not implemented
submenu.admin.adduser
=
K
\u
00E4ytt
\u
00E4j
\u
00E4nlis
\u
00E4ys
submenu.admin.adduser.index
=
K
\u
00E4ytt
\u
00E4j
\u
00E4nlis
\u
00E4ys
submenu.frontpage
=
Frontpage
submenu.info.foodwave.foodwaveshop
=
Ruokakauppa
submenu.info.incoming
=
Sis
\u
00E4
\u
00E4ntulo
submenu.info.index
=
Infon
\u
00E4kym
\u
00E4
submenu.info.shop
=
Kauppa
submenu.lectureadmin.lectureParticipants
=
Tarkastele osallistujia
submenu.lectureadmin.manageLectureGroups
=
Hallinnoi
submenu.lectures.viewLectures
=
Ilmoittaudu
submenu.reports.basicStatistics
=
Tilastoja
subnavi.cards
=
\u0009\u0009
subnavi.info
=
Info
...
...
code/moya-web/src/main/java/fi/codecrew/moya/resources/i18n_en.properties
View file @
6ebe861
...
...
@@ -1170,6 +1170,7 @@ submenu.foodmanager.listFoodwaves = List active foodwaves
submenu.foodwave.list
=
Foodwaves
submenu.foodwave.listTemplates
=
Food provides
submenu.index
=
Frontpage
submenu.info.foodwave.foodwaveshop
=
Foodshop
submenu.info.incoming
=
Incomingview
submenu.info.index
=
Infoview
submenu.info.shop
=
Shop
...
...
@@ -1194,6 +1195,7 @@ submenu.place.placemap = Placemap
submenu.poll.index
=
Polls
submenu.product.create
=
Create product
submenu.product.list
=
List products
submenu.reports.basicStatistics
=
Statistics
submenu.role.create
=
Create role
submenu.role.list
=
Show Roles
submenu.shop.createBill
=
Purchase
...
...
code/moya-web/src/main/java/fi/codecrew/moya/resources/i18n_fi.properties
View file @
6ebe861
...
...
@@ -1150,6 +1150,7 @@ submenu.foodmanager.listFoodwaves = Aktiiviset ruokatilaukset
submenu.foodwave.list
=
Ruokatilaukset
submenu.frontpage
=
Etusivu
submenu.index
=
Etusivu
submenu.info.foodwave.foodwaveshop
=
Ruokakauppa
submenu.info.incoming
=
Sis
\u
00E4
\u
00E4ntulo
submenu.info.index
=
Infon
\u
00E4kym
\u
00E4
submenu.info.shop
=
Kauppa
...
...
@@ -1174,6 +1175,7 @@ submenu.place.placemap = Paikkakartta
submenu.poll.index
=
Kyselyt
submenu.product.create
=
Uusi tuote
submenu.product.list
=
Listaa tuotteet
submenu.reports.basicStatistics
=
Tilastoja
submenu.role.create
=
Luo rooli
submenu.role.list
=
N
\u
00E4yt
\u
00E4 roolit
submenu.shop.createBill
=
Osta tuotteita
...
...
code/moya-web/src/main/java/fi/codecrew/moya/web/cdiview/user/UserView.java
View file @
6ebe861
...
...
@@ -198,6 +198,9 @@ public class UserView extends GenericCDIView {
return
user
;
}
public
String
saveRoles
()
{
rolebean
.
saveRoles
(
user
,
usersRoles
);
...
...
@@ -418,8 +421,9 @@ public class UserView extends GenericCDIView {
// still there, we can get real card and update it's barcodes
card
=
cardBean
.
checkPrintedCard
(
user
);
readerbean
.
assocCodeToCard
(
event
,
card
);
event
=
readerbean
.
assocCodeToCard
(
event
,
card
);
user
=
event
.
getUser
();
return
null
;
}
...
...
code/moya-web/src/main/java/fi/codecrew/moya/web/flow/FlowFoodwaveView.java
0 → 100644
View file @
6ebe861
/*
* Copyright Codecrew Ry
*
* All rights reserved.
*
* This license applies to any software containing a notice placed by the
* copyright holder. Such software is herein referred to as the Software.
* This license covers modification, distribution and use of the Software.
*
* Any distribution and use in source and binary forms, with or without
* modification is not permitted without explicit written permission from the
* copyright owner.
*
* A non-exclusive royalty-free right is granted to the copyright owner of the
* Software to use, modify and distribute all modifications to the Software in
* future versions of the Software.
*
*/
package
fi
.
codecrew
.
moya
.
web
.
flow
;
import
javax.ejb.EJB
;
import
javax.enterprise.context.ConversationScoped
;
import
javax.inject.Inject
;
import
javax.inject.Named
;
import
org.primefaces.event.SelectEvent
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
fi.codecrew.moya.beans.PermissionBeanLocal
;
import
fi.codecrew.moya.model.EventUser
;
import
fi.codecrew.moya.model.ReaderEvent
;
import
fi.codecrew.moya.web.cdiview.GenericCDIView
;
import
fi.codecrew.moya.web.cdiview.reader.ReaderView
;
import
fi.codecrew.moya.web.cdiview.shop.FoodWaveFoodView
;
import
fi.codecrew.moya.web.cdiview.shop.FoodWaveView
;
import
fi.codecrew.moya.web.cdiview.shop.ProductShopView
;
import
fi.codecrew.moya.web.cdiview.user.UserView
;
@Named
@ConversationScoped
public
class
FlowFoodwaveView
extends
GenericCDIView
{
private
static
final
long
serialVersionUID
=
802344850073689859L
;
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
IncomingView
.
class
);
// shop userid, we need this so we can tell when to show anonymous and when real user.
private
Integer
userId
;
@EJB
PermissionBeanLocal
permBean
;
@Inject
private
FoodWaveView
foodwaveView
;
@Inject
private
FoodWaveFoodView
foodWaveFoodView
;
@Inject
private
UserView
userView
;
@Inject
private
InfoView
infoView
;
@Inject
private
ReaderView
readerView
;
@Inject
private
FlowUserContainer
flowUserContainer
;
public
void
initView
()
{
if
(
userId
==
null
||
userId
==
0
)
{
userView
.
setUserid
(
null
);
}
else
{
userView
.
setUserid
(
userId
);
}
foodwaveView
.
initListFoodwaves
();
}
public
void
initFoodsView
()
{
if
(
userId
==
null
||
userId
==
0
)
{
userView
.
setUserid
(
null
);
}
else
{
userView
.
setUserid
(
userId
);
}
foodWaveFoodView
.
initFoodWaveFoods
();
}
public
Integer
getUserId
()
{
return
userId
;
}
public
void
setUserId
(
Integer
userId
)
{
this
.
userId
=
userId
;
}
public
void
changeUser
(
SelectEvent
event
)
{
if
(
infoView
.
getMultiSearchUser
()
!=
null
)
{
flowUserContainer
.
setUserId
(
infoView
.
getMultiSearchUser
().
getUser
().
getId
());
// TODO: kauneista nää
super
.
navihandler
.
redirectNavigation
(
"/MoyaWeb/info/foodwave/foodwaveshop.jsf?userid="
+
infoView
.
getMultiSearchUser
().
getUser
().
getId
());
}
}
public
void
polledRead
()
{
ReaderEvent
event
=
readerView
.
getReaderEvent
();
if
(
event
==
null
)
{
return
;
}
EventUser
user
=
event
.
getUser
();
if
(
user
!=
null
)
{
if
(!
user
.
equals
(
userView
.
getUser
()))
{
logger
.
info
(
"found user {}, redirecting"
,
user
.
getNick
());
userView
.
setUser
(
user
);
flowUserContainer
.
setUserId
(
user
.
getUser
().
getId
());
super
.
navihandler
.
redirectNavigation
(
"/MoyaWeb/info/foodwave/foodwaveshop.jsf?userid="
+
user
.
getUser
().
getId
());
}
}
}
}
code/moya-web/src/main/java/fi/codecrew/moya/web/reports/BasicStatisticsView.java
0 → 100644
View file @
6ebe861
/*
* Copyright Codecrew Ry
*
* All rights reserved.
*
* This license applies to any software containing a notice placed by the
* copyright holder. Such software is herein referred to as the Software.
* This license covers modification, distribution and use of the Software.
*
* Any distribution and use in source and binary forms, with or without
* modification is not permitted without explicit written permission from the
* copyright owner.
*
* A non-exclusive royalty-free right is granted to the copyright owner of the
* Software to use, modify and distribute all modifications to the Software in
* future versions of the Software.
*
*/
package
fi
.
codecrew
.
moya
.
web
.
reports
;
import
javax.ejb.EJB
;
import
javax.enterprise.context.ConversationScoped
;
import
javax.enterprise.context.RequestScoped
;
import
javax.faces.application.FacesMessage
;
import
javax.faces.context.FacesContext
;
import
javax.faces.model.ListDataModel
;
import
javax.inject.Named
;
import
fi.codecrew.moya.beans.EventBeanLocal
;
import
fi.codecrew.moya.beans.LectureBeanLocal
;
import
fi.codecrew.moya.beans.StatisticsBeanLocal
;
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
;
@Named
@RequestScoped
public
class
BasicStatisticsView
extends
GenericCDIView
{
private
static
final
long
serialVersionUID
=
1L
;
@EJB
private
StatisticsBeanLocal
statisticsBean
;
public
Long
getGroupMembershipsEnteredCount
()
{
return
statisticsBean
.
getGroupMembershipsEnteredEvent
();
}
public
Long
getCardDeliveredCount
()
{
return
statisticsBean
.
getCardDeliveredCount
();
}
public
Long
getGroupMembershipsTotalCount
()
{
return
statisticsBean
.
getGroupMembershipsTotalCount
();
}
}
Write
Preview
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment