Skip to content

Commit 52e0a43

Browse files
authored
Merge pull request #118 from openimis/feature/project-beneficiaries
Feature: project beneficiaries & project change log
2 parents c56c1a4 + 3afc34f commit 52e0a43

16 files changed

Lines changed: 1689 additions & 8 deletions

src/actions.js

Lines changed: 90 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,16 +47,21 @@ const UPLOAD_HISTORY_FULL_PROJECTION = () => [
4747
const 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

5557
const 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

6267
const WORKFLOWS_FULL_PROJECTION = () => [
@@ -66,14 +71,18 @@ const WORKFLOWS_FULL_PROJECTION = () => [
6671

6772
const 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

7988
export 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+
89103
export 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+
94121
export 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+
382414
export 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

Comments
 (0)