Skip to content
Open
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/actions.js
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
11 changes: 11 additions & 0 deletions src/components/AdminMainMenu.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import {
People,
PinDrop,
Tune,
FormatAlignLeft
} from "@material-ui/icons";
import { formatMessage, MainMenuContribution, withModulesManager } from "@openimis/fe-core";
import {
Expand All @@ -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() {
Expand Down Expand Up @@ -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: <FormatAlignLeft />,
route: "/program/programs",
id: "admin.programs",
withDivider: true,
});
}
if (rights.includes(RIGHT_PRICELISTMS)) {
entries.push({
text: formatMessage(this.props.intl, "admin", "menu.medicalServicesPrices"),
Expand Down
18 changes: 17 additions & 1 deletion src/components/UserMasterPanel.js
Original file line number Diff line number Diff line change
Expand Up @@ -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]);
Expand Down Expand Up @@ -266,7 +268,21 @@ const UserMasterPanel = (props) => {
onChange={(roles) => onEditedChanged({ ...edited, roles })}
/>
</Grid>
<Grid item xs={2} className={classes.item}>
{isProgramAvailable && (
<Grid item xs={4} className={classes.item}>
<PublishedComponent
pubRef="program.ProgramPicker"
name="program"
label={formatMessage("user.programPicker.label")}
placeholder={formatMessage("user.programPicker.placeholder")}
value={edited?.programs ?? []}
multiple={true}
readOnly={readOnly}
onChange={(programs) => onEditedChanged({ ...edited, programs })}
/>
</Grid>
)}
<Grid item xs={6} className={classes.item}>
<PublishedComponent
pubRef="location.LocationPicker"
locationLevel={0}
Expand Down
2 changes: 2 additions & 0 deletions src/translations/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,8 @@
"admin.user.newPassword": "New Password",
"admin.user.confirmNewPassword": "Confirm Password",
"admin.user.generatePassword": "Generate Password",
"program.ProgramPicker.placeholder": "Select Program",
"admin.menu.programs": "Programs",
"admin.user.phone": "Phone",
"admin.user.updateUser.mutationLabel": "Update user",
"admin.user.userRoles.placeholder": "Select User Role(s)",
Expand Down
3 changes: 3 additions & 0 deletions src/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ export const mapQueriesUserToStore = (u) => {
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;
Expand All @@ -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;
Expand Down Expand Up @@ -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;
};
Expand Down
Loading