1- const { PublicFormAccess, User, UserFormAccess } = require ( '../common/models' ) ;
1+ const { Form , FormSubmissionUserPermissions , PublicFormAccess, SubmissionMetadata , User, UserFormAccess } = require ( '../common/models' ) ;
22const { queryUtils } = require ( '../common/utils' ) ;
33
44const FORM_SUBMITTER = require ( '../common/constants' ) . Permissions . FORM_SUBMITTER ;
55
6- const { transaction} = require ( 'objection' ) ;
7- const { v4 : uuidv4 } = require ( 'uuid' ) ;
6+ const { transaction } = require ( 'objection' ) ;
7+ const { v4 : uuidv4 } = require ( 'uuid' ) ;
88
99const service = {
1010
@@ -13,14 +13,15 @@ const service = {
1313 try {
1414 trx = await transaction . start ( User . knex ( ) ) ;
1515
16- const obj = Object . assign ( { } , {
16+ const obj = Object . assign ( { } , {
1717 id : uuidv4 ( ) ,
1818 keycloakId : data . keycloakId ,
1919 username : data . username ,
2020 fullName : data . fullName ,
2121 email : data . email ,
2222 firstName : data . firstName ,
23- lastName : data . lastName } ) ;
23+ lastName : data . lastName
24+ } ) ;
2425
2526 await User . query ( trx ) . insert ( obj ) ;
2627 await trx . commit ( ) ;
@@ -50,7 +51,8 @@ const service = {
5051 fullName : data . fullName ,
5152 email : data . email ,
5253 firstName : data . firstName ,
53- lastName : data . lastName } ;
54+ lastName : data . lastName
55+ } ;
5456
5557 await User . query ( trx ) . patchAndFetchById ( obj . id , update ) ;
5658 await trx . commit ( ) ;
@@ -102,7 +104,7 @@ const service = {
102104
103105 getUserId : async ( userInfo ) => {
104106 if ( userInfo . public ) {
105- return Object . assign ( { } , { ...userInfo , id : 'public' } ) ;
107+ return Object . assign ( { } , { ...userInfo , id : 'public' } ) ;
106108 }
107109
108110 const obj = Object . assign ( { } , userInfo ) ;
@@ -120,7 +122,7 @@ const service = {
120122 user = await service . updateUser ( user . id , obj ) ;
121123 }
122124 // return with the db id...
123- return Object . assign ( { } , { ...userInfo , id : user . id } ) ;
125+ return Object . assign ( { } , { ...userInfo , id : user . id } ) ;
124126 } ,
125127
126128 getUserForms : async ( userInfo , params = { } ) => {
@@ -212,8 +214,41 @@ const service = {
212214 const forms = await service . getUserForms ( user , params ) ; // get forms for user (filtered by params)...
213215 params . active = false ;
214216 const deletedForms = await service . getUserForms ( user , params ) ; // get forms for user (filtered by params)...
215- return Object . assign ( { } , { ...user , forms : forms , deletedForms : deletedForms } ) ;
217+ return Object . assign ( { } , { ...user , forms : forms , deletedForms : deletedForms } ) ;
218+ } ,
219+
220+ // -------------------------------------------------------------------------------------------------------------
221+ // Submission Data
222+ // -------------------------------------------------------------------------------------------------------------
223+ checkSubmissionPermission : async ( currentUser , submissionId , permissions ) => {
224+ if ( currentUser . public ) return false ;
225+ return FormSubmissionUserPermissions . query ( )
226+ . modify ( 'filterSubmissionId' , submissionId )
227+ . modify ( 'filterUserId' , currentUser . id )
228+ . modify ( 'filterByPermissions' , permissions )
229+ . first ( ) ;
230+ } ,
231+
232+ getSubmissionForm : async ( submissionId ) => {
233+ // Get this submission data for the form Id
234+ const meta = await SubmissionMetadata . query ( )
235+ . where ( 'submissionId' , submissionId )
236+ . first ( )
237+ . throwIfNotFound ( ) ;
238+
239+ // Get the form with IDP info
240+ const form = await Form . query ( )
241+ . findById ( meta . formId )
242+ . allowGraph ( 'identityProviders' )
243+ . withGraphFetched ( 'identityProviders(orderDefault)' )
244+ . throwIfNotFound ( ) ;
245+
246+ return {
247+ submission : meta ,
248+ form : form
249+ } ;
216250 }
251+ // ---------------------------------------------------------------------------------------------/Submission Data
217252
218253} ;
219254
0 commit comments