diff --git a/src/actions.js b/src/actions.js index f206b19..e9b35b3 100644 --- a/src/actions.js +++ b/src/actions.js @@ -220,6 +220,7 @@ export function fetchUser(mm, userId, clientMutationId) { lastName otherNames roles { id name isSystem} + programSet { edges{node{id idProgram nameProgram validityDateFrom}}} healthFacility ${mm.getProjection("location.HealthFacilityPicker.projection")} validityFrom validityTo diff --git a/src/components/AdminMainMenu.js b/src/components/AdminMainMenu.js index 4fbdc5d..7835c3c 100644 --- a/src/components/AdminMainMenu.js +++ b/src/components/AdminMainMenu.js @@ -12,6 +12,7 @@ import { People, PinDrop, Tune, + FormatAlignLeft } from "@material-ui/icons"; import { formatMessage, MainMenuContribution, withModulesManager } from "@openimis/fe-core"; import { @@ -34,6 +35,7 @@ class AdminMainMenu extends Component { constructor(props) { super(props); this.isWorker = props.modulesManager.getConf("fe-core", "isWorker", false); + this.isProgramAvailable = props.modulesManager.getConf("fe-core", "isProgramAvailable", false); } render() { @@ -86,6 +88,15 @@ class AdminMainMenu extends Component { id: "admin.healthFacilities", }); } + if (this.isProgramAvailable) { + entries.push({ + text: formatMessage(this.props.intl, "admin", "menu.programs"), + icon: , + route: "/program/programs", + id: "admin.programs", + withDivider: true, + }); + } if (rights.includes(RIGHT_PRICELISTMS)) { entries.push({ text: formatMessage(this.props.intl, "admin", "menu.medicalServicesPrices"), diff --git a/src/components/UserMasterPanel.js b/src/components/UserMasterPanel.js index 1f428f1..24e2244 100644 --- a/src/components/UserMasterPanel.js +++ b/src/components/UserMasterPanel.js @@ -67,6 +67,8 @@ const UserMasterPanel = (props) => { const { formatMessage, formatMessageWithValues } = useTranslations("admin", modulesManager); const dispatch = useDispatch(); + const isProgramAvailable = modulesManager.getConf("fe-core", "isProgramAvailable", true); + useEffect(() => { dispatch(fetchPasswordPolicy()); }, [dispatch]); @@ -266,7 +268,21 @@ const UserMasterPanel = (props) => { onChange={(roles) => onEditedChanged({ ...edited, roles })} /> - + {isProgramAvailable && ( + + onEditedChanged({ ...edited, programs })} + /> + + )} + { u.language = u.iUser.languageId; u.roles = u.iUser.roles; u.districts = u.iUser.districts.map((d) => d.location); + u.programs = u.iUser.programSet.edges.map((p) => p.node); } if (u.claimAdmin) { u.hasLogin = u.hasLogin || u.claimAdmin.hasLogin; @@ -57,6 +58,7 @@ export const mapQueriesUserToStore = (u) => { u.phoneNumber = u.claimAdmin.phone; u.birthDate = u.claimAdmin.dob; u.healthFacility = u.claimAdmin.healthFacility; + u.programs = u.claimAdmin.programs; } if (u.officer) { u.hasLogin = u.hasLogin || u.officer.hasLogin; @@ -95,6 +97,7 @@ export const mapUserValuesToInput = (values) => { substitutionOfficerId: values.substitutionOfficer?.id ? decodeId(values.substitutionOfficer.id) : null, worksTo: values.worksTo, villageIds: values.officerVillages?.map((location) => decodeId(location.id)), + programs: values.programs.map((p) => decodeId(p.id)), }; return input; };