@@ -30,66 +30,26 @@ exports.counter = functions.database.ref('/v2/results/{projectId}/{groupId}/{use
3030
3131
3232 // Firebase Realtime Database references
33+ const contributorCountRef = admin . database ( ) . ref ( '/v2/projects/' + context . params . projectId + '/contributorCount' )
34+
3335 const groupFinishedCountRef = admin . database ( ) . ref ( '/v2/groups/' + context . params . projectId + '/' + context . params . groupId + '/finishedCount' )
3436 const groupRequiredCountRef = admin . database ( ) . ref ( '/v2/groups/' + context . params . projectId + '/' + context . params . groupId + '/requiredCount' )
3537 const numberOfTasksRef = admin . database ( ) . ref ( '/v2/groups/' + context . params . projectId + '/' + context . params . groupId + '/numberOfTasks' )
3638
37- const contributorsCountRef = admin . database ( ) . ref ( '/v2/projects /' + context . params . projectId + '/contributorCount ' )
38-
39- const taskContributionCountRef = admin . database ( ) . ref ( '/v2/users/' + context . params . userId + '/taskContributionCount ' )
40- const groupContributionCountRef = admin . database ( ) . ref ( '/v2/users/' + context . params . userId + '/groupContributionCount' )
41- const projectContributionCountRef = admin . database ( ) . ref ( '/v2/users/' + context . params . userId + '/projectContributionCount' )
42- const contributionsRef = admin . database ( ) . ref ( '/v2/users/' + context . params . userId + '/contributions/' + context . params . projectId )
43- const groupContributionsRef = admin . database ( ) . ref ( '/v2/users/' + context . params . userId + '/contributions/' + context . params . projectId + '/' + context . params . groupId )
44- const totalTimeSpentMappingRef = admin . database ( ) . ref ( '/v2/users/' + context . params . userId + '/timeSpentMapping' )
39+ const taskContributionCountRef = admin . database ( ) . ref ( '/v2/users /' + context . params . userId + '/taskContributionCount ' )
40+ const groupContributionCountRef = admin . database ( ) . ref ( '/v2/users/' + context . params . userId + '/groupContributionCount' )
41+ const projectContributionCountRef = admin . database ( ) . ref ( '/v2/users/' + context . params . userId + '/projectContributionCount ' )
42+ const projectContributionsRef = admin . database ( ) . ref ( '/v2/users/' + context . params . userId + '/contributions/' + context . params . projectId )
43+ const groupContributionsRef = admin . database ( ) . ref ( '/v2/users/' + context . params . userId + '/contributions/' + context . params . projectId + '/' + context . params . groupId )
44+ const projectTaskContributionCountRef = admin . database ( ) . ref ( '/v2/users/' + context . params . userId + '/contributions/' + context . params . projectId + '/taskContributionCount' )
45+ const projectGroupContributionCountRef = admin . database ( ) . ref ( '/v2/users/' + context . params . userId + '/contributions/' + context . params . projectId + '/groupContributionCount' )
46+ const totalTimeSpentMappingRef = admin . database ( ) . ref ( '/v2/users/' + context . params . userId + '/timeSpentMapping' )
4547
4648 const startTimeRef = admin . database ( ) . ref ( '/v2/results/' + context . params . projectId + '/' + context . params . groupId + '/' + context . params . userId + '/startTime' )
4749 const endTimeRef = admin . database ( ) . ref ( '/v2/results/' + context . params . projectId + '/' + context . params . groupId + '/' + context . params . userId + '/endTime' )
4850 const timeSpentMappingRef = admin . database ( ) . ref ( '/v2/results/' + context . params . projectId + '/' + context . params . groupId + '/' + context . params . userId + '/timeSpentMappingRef' )
4951
50- // references for project based counters for tasks and groups
51- const projectTaskContributionCountRef = admin . database ( ) . ref ( '/v2/users/' + context . params . userId + '/contributions/' + context . params . projectId + '/taskContributionCount' )
52- const projectGroupContributionCountRef = admin . database ( ) . ref ( '/v2/users/' + context . params . userId + '/contributions/' + context . params . projectId + '/groupContributionCount' )
53-
54- // Counter for groups
55- const groupFinishedCount = groupFinishedCountRef . transaction ( ( currentCount ) => {
56- return currentCount + 1
57- } )
58- promises . push ( groupFinishedCount )
59-
60- const groupRequiredCount = groupRequiredCountRef . transaction ( ( currentCount ) => {
61- return currentCount - 1
62- } )
63- promises . push ( groupRequiredCount )
64-
65- // Counter for projects
66- const contributorsCount = contributionsRef . once ( 'value' )
67- . then ( ( dataSnapshot ) => {
68- if ( dataSnapshot . exists ( ) ) {
69- return null
70- }
71- else {
72- return contributorsCountRef . transaction ( ( currentCount ) => {
73- return currentCount + 1
74- } )
75- }
76- } )
77- promises . push ( contributorsCount )
78-
7952 // Counter for users
80- const projectContributionCount = contributionsRef . once ( 'value' )
81- . then ( ( dataSnapshot ) => {
82- if ( dataSnapshot . exists ( ) ) {
83- return null
84- }
85- else {
86- return projectContributionCountRef . transaction ( ( currentCount ) => {
87- return currentCount + 1
88- } )
89- }
90- } )
91- promises . push ( projectContributionCount )
92-
9353 const groupContributionCount = groupContributionCountRef . transaction ( ( currentCount ) => {
9454 return currentCount + 1
9555 } ) ;
@@ -107,22 +67,12 @@ exports.counter = functions.database.ref('/v2/results/{projectId}/{groupId}/{use
10767 } )
10868 promises . push ( taskContributionCount )
10969
110- const contributions = groupContributionsRef . once ( 'value' )
111- . then ( ( dataSnapshot ) => {
112- if ( dataSnapshot . exists ( ) ) {
113- return null
114- }
115- else {
116- const data = {
117- 'startTime' : result [ 'startTime' ] ,
118- 'endTime' : result [ 'endTime' ]
119- }
120- return groupContributionsRef . set ( data )
121- }
122- } )
123- promises . push ( contributions )
70+ // Counters for tasks and groups per user and per project
71+ const projectGroupContributionCount = projectGroupContributionCountRef . transaction ( ( currentCount ) => {
72+ return currentCount + 1
73+ } ) ;
74+ promises . push ( projectGroupContributionCount )
12475
125- // counters for tasks and groups per user and per project
12676 const projectTaskContributionCount = numberOfTasksRef . once ( 'value' )
12777 . then ( ( dataSnapshot ) => {
12878 const numberOfTasks = dataSnapshot . val ( )
@@ -135,11 +85,31 @@ exports.counter = functions.database.ref('/v2/results/{projectId}/{groupId}/{use
13585 } )
13686 promises . push ( projectTaskContributionCount )
13787
88+ const contributions = groupContributionsRef . once ( 'value' )
89+ . then ( ( dataSnapshot ) => {
90+ if ( dataSnapshot . exists ( ) ) {
91+ return null
92+ }
93+ else {
94+ const data = {
95+ 'startTime' : result [ 'startTime' ] ,
96+ 'endTime' : result [ 'endTime' ]
97+ }
98+ return groupContributionsRef . set ( data )
99+ }
100+ } )
101+ promises . push ( contributions )
102+
138103 // Counter for groups
139- const projectGroupContributionCount = projectGroupContributionCountRef . transaction ( ( currentCount ) => {
104+ const groupFinishedCount = groupFinishedCountRef . transaction ( ( currentCount ) => {
140105 return currentCount + 1
141- } ) ;
142- promises . push ( projectGroupContributionCount )
106+ } )
107+ promises . push ( groupFinishedCount )
108+
109+ const groupRequiredCount = groupRequiredCountRef . transaction ( ( currentCount ) => {
110+ return currentCount - 1
111+ } )
112+ promises . push ( groupRequiredCount )
143113
144114 // // TODO: Does not work
145115 // const timeSpentMapping = timeSpentMappingRef.set((timeSpentMapping) => {
@@ -163,6 +133,21 @@ exports.counter = functions.database.ref('/v2/results/{projectId}/{groupId}/{use
163133} )
164134
165135
136+ exports . counter_2 = functions . database . ref ( '/v2/users/{userId}/contributions/{projectId}/' ) . onCreate ( ( snapshot , context ) => {
137+ // Firebase Realtime Database references
138+ const contributorCountRef = admin . database ( ) . ref ( '/v2/projects/' + context . params . projectId + '/contributorCount' )
139+ const projectContributionCountRef = admin . database ( ) . ref ( '/v2/users/' + context . params . userId + '/projectContributionCount' )
140+
141+ projectContributionCountRef . transaction ( ( currentCount ) => {
142+ return currentCount + 1
143+ } )
144+ contributorCountRef . transaction ( ( currentCount ) => {
145+ return currentCount + 1
146+ } )
147+ } )
148+
149+
150+
166151// Increment project.resultCount by group.numberOfTasks.
167152// Or (Depending of increase or decrease of group.RequiredCount)
168153// Increment project.resultCount by group.numberOfTasks
@@ -291,4 +276,4 @@ exports.decProjectProgress = functions.database.ref('/v2/projects/{projectId}/re
291276 } )
292277 } )
293278 return projectProgress
294- } )
279+ } )
0 commit comments