Skip to content
This repository has been archived by the owner on Mar 6, 2023. It is now read-only.

Commit

Permalink
feat(enquete): import individuel activite cause sortie #1801
Browse files Browse the repository at this point in the history
  • Loading branch information
Toub committed Jun 2, 2020
1 parent e24d80d commit 2e85f7a
Show file tree
Hide file tree
Showing 9 changed files with 375 additions and 43 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ export const EnqueteActiviteAccompagnementJudiciaire = props => {
}
]
});

const { data, loading } = useQuery(ENQUETE_ACCOMPAGNEMENT_JUDICIAIRE, {
variables: {
id: enquete_reponses_activite_id
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
import React from "react";
import { useMutation, useQuery } from "react-apollo";
import { Box } from "rebass";

import { EnqueteActiviteCausesSortiesDispositifForm } from "./EnqueteActiviteCausesSortiesDispositifForm";
import { UPDATE_ENQUETE_ACTIVITE_CAUSES_SORTIE_DISPOSITIF } from "./mutations";
import { ENQUETE_CAUSES_SORTIE_DISPOSITIF } from "./queries";

export const EnqueteActiviteCausesSortiesDispositif = props => {
const { goToPrevPage, goToNextPage, enqueteReponse } = props;
const { enquete_reponses_activite_id } = enqueteReponse;

const [updateEnquete] = useMutation(UPDATE_ENQUETE_ACTIVITE_CAUSES_SORTIE_DISPOSITIF, {
refetchQueries: [
{
query: ENQUETE_CAUSES_SORTIE_DISPOSITIF,
variables: {
id: enquete_reponses_activite_id
}
}
]
});
const { data, loading } = useQuery(ENQUETE_CAUSES_SORTIE_DISPOSITIF, {
variables: {
id: enquete_reponses_activite_id
}
});

const { sorties_main_levee, sorties_deces, sorties_masp } = data
? data.enquete_reponses_activite_by_pk || {}
: {};

return (
<Box>
<EnqueteActiviteCausesSortiesDispositifForm
loading={loading}
data={{
sortiesMainLevee: sorties_main_levee,
sortiesDeces: sorties_deces,
sortiesMasp: sorties_masp
}}
handleSubmit={async values => {
await updateEnquete({
variables: {
id: enquete_reponses_activite_id,
...values
}
});
await goToNextPage();
}}
goToPrevPage={goToPrevPage}
/>
</Box>
);
};

export default EnqueteActiviteCausesSortiesDispositif;
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
import { Heading1, Heading3 } from "@emjpm/ui";
import { Input, Label } from "@rebass/forms";
import { useFormik } from "formik";
import React, { useEffect } from "react";
import { Box, Flex } from "rebass";

import { EnqueteStepperButtons } from "../EnqueteStepperButtons";

function mapDataPropsToFormValues(data) {
return {
sortiesMainLevee: data.sortiesMainLevee || "",
sortiesDeces: data.sortiesDeces || "",
sortiesMasp: data.sortiesMasp || ""
};
}

function mapFormValuesToSubmit(data) {
return {
sortiesMainLevee: parseIntToSubmit(data.sortiesMainLevee),
sortiesDeces: parseIntToSubmit(data.sortiesDeces),
sortiesMasp: parseIntToSubmit(data.sortiesMasp)
};

function parseIntToSubmit(value) {
return value ? parseInt(value) : undefined;
}
}

export const EnqueteActiviteCausesSortiesDispositifForm = props => {
const { goToPrevPage, data, loading = false } = props;
const { handleSubmit, handleChange, values, errors, setValues } = useFormik({
onSubmit: async (values, { setSubmitting }) => {
await props.handleSubmit(mapFormValuesToSubmit(values));
setSubmitting(false);
},
initialValues: mapDataPropsToFormValues(data)
});

useEffect(() => {
setValues(mapDataPropsToFormValues(data));
}, [data, setValues]);

return (
<Box>
<form onSubmit={handleSubmit}>
<Heading1 textAlign="center" mb={"80px"}>
{"Votre activité"}
</Heading1>

<Heading3>Causes de sorties du dispositif</Heading3>

<Flex mt={4}>
<Flex alignItems="center" flex={1 / 2}>
<Label width={"120px"}>{`Main levée :`}</Label>
<Input
mx={1}
width={"60px"}
min={0}
placeholder=""
name="sortiesMainLevee"
value={values.sortiesMainLevee}
hasError={!!errors.sortiesMainLevee}
onChange={handleChange}
type="number"
/>
</Flex>

<Flex alignItems="center" flex={1 / 2}>
<Label width={"120px"}>Décès :</Label>
<Input
mx={1}
width={"60px"}
min={0}
placeholder=""
name="sortiesDeces"
value={values.sortiesDeces}
hasError={!!errors.sortiesDeces}
onChange={handleChange}
type="number"
/>
</Flex>
</Flex>
<Flex mt={4}>
<Flex alignItems="center" flex={1 / 2}>
<Label width={"120px"}>MASP :</Label>
<Input
mx={1}
width={"60px"}
min={0}
placeholder=""
name="sortiesMasp"
value={values.sortiesMasp}
hasError={!!errors.sortiesMasp}
onChange={handleChange}
type="number"
/>
</Flex>

<Flex flex={1 / 2} />
</Flex>

<EnqueteStepperButtons disabled={loading} goToPrevPage={goToPrevPage} />
</form>
</Box>
);
};

export default EnqueteActiviteCausesSortiesDispositifForm;
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
import React, { useMemo } from "react";
import { useMutation, useQuery } from "react-apollo";
import { Box } from "rebass";

import { EnqueteActiviteMesuresForm } from "./common";
import { UPDATE_ENQUETE_MANDAT_ADHOC_MAJEUR } from "./mutations";
import { ENQUETE_MANDAT_ADHOC_MAJEUR } from "./queries";

const PREFIX = "mandat_adhoc_majeur";

export const EnqueteActiviteMandatHadocMajeur = props => {
const { goToPrevPage, goToNextPage, enqueteReponse } = props;
const { enquete_reponses_activite_id } = enqueteReponse;
const [updateEnquete] = useMutation(UPDATE_ENQUETE_MANDAT_ADHOC_MAJEUR, {
refetchQueries: [
{
query: ENQUETE_MANDAT_ADHOC_MAJEUR,
variables: {
id: enquete_reponses_activite_id
}
}
]
});
const { data, loading } = useQuery(ENQUETE_MANDAT_ADHOC_MAJEUR, {
variables: {
id: enquete_reponses_activite_id
}
});

const normalizedData = useMemo(() => {
const r = data ? data.enquete_reponses_activite_by_pk || {} : {};

return {
debutAnnee: r[`${PREFIX}_debut_annee`],
finAnnee: r[`${PREFIX}_fin_annee`],
mesuresNouvelles: r[`${PREFIX}_mesures_nouvelles`],
sortieMesures: r[`${PREFIX}_sortie_mesures`]
};
}, [data]);

return (
<Box>
<EnqueteActiviteMesuresForm
loading={loading}
data={normalizedData}
handleSubmit={async values => {
await updateEnquete({
variables: {
id: enquete_reponses_activite_id,
...values
}
});
await goToNextPage();
}}
goToPrevPage={goToPrevPage}
title="Mandat ad hoc majeur"
/>
</Box>
);
};

export default EnqueteActiviteMandatHadocMajeur;
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
import React, { useMemo } from "react";
import { useMutation, useQuery } from "react-apollo";
import { Box } from "rebass";

import { EnqueteActiviteMesuresForm } from "./common";
import { UPDATE_ENQUETE_SAUVEGARDE_JUSTICE } from "./mutations";
import { ENQUETE_SAUVEGARDE_JUSTICE } from "./queries";

const PREFIX = "sauvegarde_justice";

export const EnqueteActiviteSauvegardeJustice = props => {
const { goToPrevPage, goToNextPage, enqueteReponse } = props;
const { enquete_reponses_activite_id } = enqueteReponse;
const [updateEnquete] = useMutation(UPDATE_ENQUETE_SAUVEGARDE_JUSTICE, {
refetchQueries: [
{
query: ENQUETE_SAUVEGARDE_JUSTICE,
variables: {
id: enquete_reponses_activite_id
}
}
]
});
const { data, loading } = useQuery(ENQUETE_SAUVEGARDE_JUSTICE, {
variables: {
id: enquete_reponses_activite_id
}
});

const normalizedData = useMemo(() => {
const r = data ? data.enquete_reponses_activite_by_pk || {} : {};

return {
debutAnnee: r[`${PREFIX}_debut_annee`],
finAnnee: r[`${PREFIX}_fin_annee`],
mesuresNouvelles: r[`${PREFIX}_mesures_nouvelles`],
sortieMesures: r[`${PREFIX}_sortie_mesures`]
};
}, [data]);

return (
<Box>
<EnqueteActiviteMesuresForm
loading={loading}
data={normalizedData}
handleSubmit={async values => {
await updateEnquete({
variables: {
id: enquete_reponses_activite_id,
...values
}
});
await goToNextPage();
}}
goToPrevPage={goToPrevPage}
title="Sauvegarde de justice"
/>
</Box>
);
};

export default EnqueteActiviteSauvegardeJustice;
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
export { EnqueteActiviteCuratelleSimple } from "./EnqueteActiviteCuratelleSimple";
export { EnqueteActiviteCuratelleRenforcee } from "./EnqueteActiviteCuratelleRenforcee";
export { EnqueteActiviteCausesSortiesDispositif } from "./EnqueteActiviteCausesSortiesDispositif";
export { EnqueteActiviteSubrogeTuteurCreateur } from "./EnqueteActiviteSubrogeTuteurCreateur";
export { EnqueteActiviteTutelle } from "./EnqueteActiviteTutelle";
export { EnqueteActiviteCuratelleBiens } from "./EnqueteActiviteCuratelleBiens";
Expand Down
81 changes: 52 additions & 29 deletions packages/app/src/components/Enquete/EnqueteActivite/mutations.js
Original file line number Diff line number Diff line change
Expand Up @@ -65,35 +65,6 @@ export const UPDATE_ENQUETE_ACTIVITE_TUTELLE = buildEnqueteEtablissementDomicile
"tutelle"
);

export const UPDATE_ENQUETE_ACTIVITE_REVISION_MESURES = gql`
mutation update_enquete_activite_curatelle_biens(
$id: Int!
$revisionsMainLevee: Int
$revisionsMasp: Int
$revisionsReconduction: Int
$revisionsChangement: Int
$revisionsAutre: Int
) {
update_enquete_activite_reponses_activite_by_pk(
pk_columns: { id: $id }
_set: {
revisions_main_levee: $revisionsMainLevee
revisions_masp: $revisionsMasp
revisions_reconduction: $revisionsReconduction
revisions_changement: $revisionsChangement
revisions_autre: $revisionsAutre
}
) {
id
revisions_main_levee
revisions_masp
revisions_reconduction
revisions_changement
revisions_autre
}
}
`;

// prefix: 'subroge_tuteur_createur' | 'sauvegarde_justice' | 'mandat_adhoc_majeur'
function buildEnqueteMesuresUpdateMutation(prefix) {
return gql`
Expand Down Expand Up @@ -131,3 +102,55 @@ export const UPDATE_ENQUETE_MANDAT_ADHOC_MAJEUR = buildEnqueteMesuresUpdateMutat
export const UPDATE_ENQUETE_SAUVEGARDE_JUSTICE = buildEnqueteMesuresUpdateMutation(
"sauvegarde_justice"
);

export const UPDATE_ENQUETE_ACTIVITE_REVISION_MESURES = gql`
mutation update_enquete_activite_revision_mesures(
$id: Int!
$revisionsMainLevee: Int
$revisionsMasp: Int
$revisionsReconduction: Int
$revisionsChangement: Int
$revisionsAutre: Int
) {
update_enquete_reponses_activite_by_pk(
pk_columns: { id: $id }
_set: {
revisions_main_levee: $revisionsMainLevee
revisions_masp: $revisionsMasp
revisions_reconduction: $revisionsReconduction
revisions_changement: $revisionsChangement
revisions_autre: $revisionsAutre
}
) {
id
revisions_main_levee
revisions_masp
revisions_reconduction
revisions_changement
revisions_autre
}
}
`;

export const UPDATE_ENQUETE_ACTIVITE_CAUSES_SORTIE_DISPOSITIF = gql`
mutation update_enquete_causes_sortie_dispositif(
$id: Int!
$sortiesMainLevee: Int
$sortiesDeces: Int
$sortiesMasp: Int
) {
update_enquete_reponses_activite_by_pk(
pk_columns: { id: $id }
_set: {
sorties_main_levee: $sortiesMainLevee
sorties_deces: $sortiesDeces
sorties_masp: $sortiesMasp
}
) {
id
sorties_main_levee
sorties_deces
sorties_masp
}
}
`;
Loading

0 comments on commit 2e85f7a

Please sign in to comment.