@@ -47,16 +47,21 @@ const UPLOAD_HISTORY_FULL_PROJECTION = () => [
4747const BENEFICIARY_FULL_PROJECTION = ( modulesManager ) => [
4848 'id' ,
4949 'benefitPlan {id}' ,
50+ 'project {id}' ,
5051 'individual {firstName, lastName, dob, location' + modulesManager . getProjection ( 'location.Location.FlatProjection' ) + '}' ,
5152 'status' ,
5253 'isEligible' ,
54+ 'jsonExt' ,
5355] ;
5456
5557const GROUP_BENEFICIARY_FULL_PROJECTION = ( modulesManager ) => [
5658 'id' ,
57- 'group {id, code, head {uuid}, location' + modulesManager . getProjection ( 'location.Location.FlatProjection' ) + '}' ,
59+ 'benefitPlan {id}' ,
60+ 'project {id}' ,
61+ 'group {id, code, head {uuid, firstName, lastName, dob}, location' + modulesManager . getProjection ( 'location.Location.FlatProjection' ) + '}' ,
5862 'status' ,
5963 'isEligible' ,
64+ 'jsonExt' ,
6065] ;
6166
6267const WORKFLOWS_FULL_PROJECTION = ( ) => [
@@ -66,14 +71,18 @@ const WORKFLOWS_FULL_PROJECTION = () => [
6671
6772const PROJECT_FULL_PROJECTION = ( modulesManager ) => [
6873 'id' ,
69- 'benefitPlan {id, name}' ,
74+ 'benefitPlan {id, name, type }' ,
7075 'name' ,
7176 'status' ,
7277 'targetBeneficiaries' ,
7378 'workingDays' ,
7479 'activity {id, name}' ,
7580 'location' + modulesManager . getProjection ( 'location.Location.FlatProjection' ) ,
7681 'isDeleted' ,
82+ 'userUpdated {username}' ,
83+ 'version' ,
84+ 'dateCreated' ,
85+ 'dateUpdated' ,
7786] ;
7887
7988export function fetchBenefitPlans ( params ) {
@@ -86,11 +95,29 @@ export function fetchBeneficiaries(modulesManager, params) {
8695 return graphql ( payload , ACTION_TYPE . SEARCH_BENEFICIARIES ) ;
8796}
8897
98+ export function fetchProjectBeneficiaries ( modulesManager , params , meta = { } ) {
99+ const payload = formatPageQueryWithCount ( 'beneficiary' , params , BENEFICIARY_FULL_PROJECTION ( modulesManager ) ) ;
100+ return graphql ( payload , ACTION_TYPE . SEARCH_PROJECT_BENEFICIARIES , meta ) ;
101+ }
102+
89103export function fetchGroupBeneficiaries ( modulesManager , params ) {
90- const payload = formatPageQueryWithCount ( 'groupBeneficiary' , params , GROUP_BENEFICIARY_FULL_PROJECTION ( modulesManager ) ) ;
104+ const payload = formatPageQueryWithCount (
105+ 'groupBeneficiary' ,
106+ params ,
107+ GROUP_BENEFICIARY_FULL_PROJECTION ( modulesManager ) ,
108+ ) ;
91109 return graphql ( payload , ACTION_TYPE . SEARCH_GROUP_BENEFICIARIES ) ;
92110}
93111
112+ export function fetchProjectGroupBeneficiaries ( modulesManager , params , meta = { } ) {
113+ const payload = formatPageQueryWithCount (
114+ 'groupBeneficiary' ,
115+ params ,
116+ GROUP_BENEFICIARY_FULL_PROJECTION ( modulesManager ) ,
117+ ) ;
118+ return graphql ( payload , ACTION_TYPE . SEARCH_PROJECT_GROUP_BENEFICIARIES , meta ) ;
119+ }
120+
94121export function fetchBenefitPlanSchemaFields ( params ) {
95122 const payload = formatQuery ( 'benefitPlanSchemaField' , params , [ 'schemaFields' ] ) ;
96123 return graphql ( payload , ACTION_TYPE . GET_FIELDS_FROM_BF_SCHEMA ) ;
@@ -379,6 +406,11 @@ export function fetchProject(modulesManager, params) {
379406 return graphql ( payload , ACTION_TYPE . GET_PROJECT ) ;
380407}
381408
409+ export function fetchProjectHistory ( modulesManager , params ) {
410+ const payload = formatPageQueryWithCount ( 'projectHistory' , params , PROJECT_FULL_PROJECTION ( modulesManager ) ) ;
411+ return graphql ( payload , ACTION_TYPE . SEARCH_PROJECTS_HISTORY ) ;
412+ }
413+
382414export function createProject ( project , clientMutationLabel ) {
383415 const mutation = formatMutation ( 'createProject' , formatProjectGQL ( project ) , clientMutationLabel ) ;
384416 const requestedDateTime = new Date ( ) ;
@@ -673,3 +705,58 @@ export const projectNameValidationClear = () => (dispatch) => {
673705 type : CLEAR ( ACTION_TYPE . PROJECT_NAME_FIELDS_VALIDATION ) ,
674706 } ) ;
675707} ;
708+
709+ function formatProjectEnrollmentGQL ( params ) {
710+ // double quotes are important!
711+ const ids = params . ids ?. length ? `"${ params . ids . join ( '","' ) } "` : '' ;
712+ return `ids: [${ ids } ]
713+ projectId: "${ params . projectId } "` ;
714+ }
715+
716+ export function enrollProject ( params , clientMutationLabel ) {
717+ const mutation = formatMutation (
718+ 'enrollProject' ,
719+ formatProjectEnrollmentGQL ( params ) ,
720+ clientMutationLabel ,
721+ ) ;
722+
723+ const requestedDateTime = new Date ( ) ;
724+
725+ return graphql (
726+ mutation . payload ,
727+ [
728+ REQUEST ( ACTION_TYPE . MUTATION ) ,
729+ SUCCESS ( ACTION_TYPE . PROJECT_ENROLL ) ,
730+ ERROR ( ACTION_TYPE . MUTATION ) ,
731+ ] ,
732+ {
733+ clientMutationId : mutation . clientMutationId ,
734+ clientMutationLabel,
735+ requestedDateTime,
736+ } ,
737+ ) ;
738+ }
739+
740+ export function enrollGroupProject ( params , clientMutationLabel ) {
741+ const mutation = formatMutation (
742+ 'enrollGroupProject' ,
743+ formatProjectEnrollmentGQL ( params ) ,
744+ clientMutationLabel ,
745+ ) ;
746+
747+ const requestedDateTime = new Date ( ) ;
748+
749+ return graphql (
750+ mutation . payload ,
751+ [
752+ REQUEST ( ACTION_TYPE . MUTATION ) ,
753+ SUCCESS ( ACTION_TYPE . PROJECT_ENROLL_GROUP ) ,
754+ ERROR ( ACTION_TYPE . MUTATION ) ,
755+ ] ,
756+ {
757+ clientMutationId : mutation . clientMutationId ,
758+ clientMutationLabel,
759+ requestedDateTime,
760+ } ,
761+ ) ;
762+ }
0 commit comments