@@ -34,62 +34,19 @@ exports.counter = functions.database.ref('/v2/results/{projectId}/{groupId}/{use
3434 const groupRequiredCountRef = admin . database ( ) . ref ( '/v2/groups/' + context . params . projectId + '/' + context . params . groupId + '/requiredCount' )
3535 const numberOfTasksRef = admin . database ( ) . ref ( '/v2/groups/' + context . params . projectId + '/' + context . params . groupId + '/numberOfTasks' )
3636
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' )
37+ const taskContributionCountRef = admin . database ( ) . ref ( '/v2/users/' + context . params . userId + '/taskContributionCount' )
38+ const groupContributionCountRef = admin . database ( ) . ref ( '/v2/users/' + context . params . userId + '/groupContributionCount' )
39+ const projectContributionsRef = admin . database ( ) . ref ( '/v2/users/' + context . params . userId + '/contributions/' + context . params . projectId )
40+ const groupContributionsRef = admin . database ( ) . ref ( '/v2/users/' + context . params . userId + '/contributions/' + context . params . projectId + '/' + context . params . groupId )
41+ const projectTaskContributionCountRef = admin . database ( ) . ref ( '/v2/users/' + context . params . userId + '/contributions/' + context . params . projectId + '/taskContributionCount' )
42+ const projectGroupContributionCountRef = admin . database ( ) . ref ( '/v2/users/' + context . params . userId + '/contributions/' + context . params . projectId + '/groupContributionCount' )
43+ const totalTimeSpentMappingRef = admin . database ( ) . ref ( '/v2/users/' + context . params . userId + '/timeSpentMapping' )
4544
4645 const startTimeRef = admin . database ( ) . ref ( '/v2/results/' + context . params . projectId + '/' + context . params . groupId + '/' + context . params . userId + '/startTime' )
4746 const endTimeRef = admin . database ( ) . ref ( '/v2/results/' + context . params . projectId + '/' + context . params . groupId + '/' + context . params . userId + '/endTime' )
4847 const timeSpentMappingRef = admin . database ( ) . ref ( '/v2/results/' + context . params . projectId + '/' + context . params . groupId + '/' + context . params . userId + '/timeSpentMappingRef' )
4948
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-
7949 // 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-
9350 const groupContributionCount = groupContributionCountRef . transaction ( ( currentCount ) => {
9451 return currentCount + 1
9552 } ) ;
@@ -107,22 +64,12 @@ exports.counter = functions.database.ref('/v2/results/{projectId}/{groupId}/{use
10764 } )
10865 promises . push ( taskContributionCount )
10966
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 )
67+ // Counters for tasks and groups per user and per project
68+ const projectGroupContributionCount = projectGroupContributionCountRef . transaction ( ( currentCount ) => {
69+ return currentCount + 1
70+ } ) ;
71+ promises . push ( projectGroupContributionCount )
12472
125- // counters for tasks and groups per user and per project
12673 const projectTaskContributionCount = numberOfTasksRef . once ( 'value' )
12774 . then ( ( dataSnapshot ) => {
12875 const numberOfTasks = dataSnapshot . val ( )
@@ -135,11 +82,31 @@ exports.counter = functions.database.ref('/v2/results/{projectId}/{groupId}/{use
13582 } )
13683 promises . push ( projectTaskContributionCount )
13784
85+ const contributions = groupContributionsRef . once ( 'value' )
86+ . then ( ( dataSnapshot ) => {
87+ if ( dataSnapshot . exists ( ) ) {
88+ return null
89+ }
90+ else {
91+ const data = {
92+ 'startTime' : result [ 'startTime' ] ,
93+ 'endTime' : result [ 'endTime' ]
94+ }
95+ return groupContributionsRef . set ( data )
96+ }
97+ } )
98+ promises . push ( contributions )
99+
138100 // Counter for groups
139- const projectGroupContributionCount = projectGroupContributionCountRef . transaction ( ( currentCount ) => {
101+ const groupFinishedCount = groupFinishedCountRef . transaction ( ( currentCount ) => {
140102 return currentCount + 1
141- } ) ;
142- promises . push ( projectGroupContributionCount )
103+ } )
104+ promises . push ( groupFinishedCount )
105+
106+ const groupRequiredCount = groupRequiredCountRef . transaction ( ( currentCount ) => {
107+ return currentCount - 1
108+ } )
109+ promises . push ( groupRequiredCount )
143110
144111 // // TODO: Does not work
145112 // const timeSpentMapping = timeSpentMappingRef.set((timeSpentMapping) => {
@@ -163,6 +130,21 @@ exports.counter = functions.database.ref('/v2/results/{projectId}/{groupId}/{use
163130} )
164131
165132
133+ exports . counter_2 = functions . database . ref ( '/v2/users/{userId}/contributions/{projectId}/' ) . onCreate ( ( snapshot , context ) => {
134+ // Firebase Realtime Database references
135+ const contributorCountRef = admin . database ( ) . ref ( '/v2/projects/' + context . params . projectId + '/contributorCount' )
136+ const projectContributionCountRef = admin . database ( ) . ref ( '/v2/users/' + context . params . userId + '/projectContributionCount' )
137+
138+ projectContributionCountRef . transaction ( ( currentCount ) => {
139+ return currentCount + 1
140+ } )
141+ contributorCountRef . transaction ( ( currentCount ) => {
142+ return currentCount + 1
143+ } )
144+ } )
145+
146+
147+
166148// Increment project.resultCount by group.numberOfTasks.
167149// Or (Depending of increase or decrease of group.RequiredCount)
168150// Increment project.resultCount by group.numberOfTasks
@@ -291,4 +273,4 @@ exports.decProjectProgress = functions.database.ref('/v2/projects/{projectId}/re
291273 } )
292274 } )
293275 return projectProgress
294- } )
276+ } )
0 commit comments