From da44e8aa72da5071f02d27914d469967ca80f471 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maxime=20Dr=C3=A9au?= Date: Wed, 4 Oct 2023 17:24:08 +0200 Subject: [PATCH] =?UTF-8?q?refactor:=20suppression=20des=20anciens=20compo?= =?UTF-8?q?sants=20obsol=C3=A8tes=20:broom:?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ui/components/ErpTutorial/ErpTutorial.tsx | 49 ---- ui/modules/mon-compte/ConfigurationERP.tsx | 169 ------------ ui/modules/mon-compte/NavigationCompte.tsx | 8 - ui/modules/mon-espace/effectifs/ChoixERP.tsx | 128 --------- .../effectifs/ChoixTransmission.tsx | 100 ------- .../mon-espace/effectifs/ConfigurationAPI.tsx | 135 ---------- .../mon-espace/effectifs/EffectifsBanner.tsx | 55 ---- .../EffectifsBannerERPNotConfigured.tsx | 58 ---- .../mon-espace/effectifs/EffectifsPage.tsx | 110 -------- .../effectifs/engine/AjoutApprenantModal.tsx | 51 ---- .../mon-espace/effectifs/engine/Effectifs.tsx | 253 ------------------ .../CheckCfaTransmissionContent.tsx | 34 --- .../FormSections/CfaTransmissionFound.tsx | 32 --- .../FormSections/CfaTransmissionNotFound.tsx | 21 -- .../FormSections/CfaTransmissionSection.tsx | 65 ----- .../FormSections/index.ts | 3 - .../DemandeBranchementErpForm.tsx | 93 ------- .../DemandeBranchementErpFormBlock.tsx | 81 ------ ...andeBranchementErpFormErpComingSection.tsx | 65 ----- ...ndeBranchementErpFormErpOnGoingSection.tsx | 59 ---- ...mandeBranchementErpFormErpReadySection.tsx | 30 --- .../DemandeBranchementErpFormNoErpSection.tsx | 70 ----- ...mandeBranchementErpFormOtherErpSection.tsx | 76 ------ .../FormSections/index.ts | 5 - .../useSubmitDemandeBranchementErp.ts | 36 --- .../OrganismeFormationPagesMenu.tsx | 56 ---- .../organisme-formation/aide/Question.tsx | 31 --- .../organisme-formation/aide/questions.tsx | 244 ----------------- ui/pages/effectifs/aide-configuration-erp.tsx | 33 --- ui/pages/mon-compte/erp.tsx | 43 --- ui/pages/organisme-formation/aide.tsx | 50 ---- ui/pages/organisme-formation/consulter.tsx | 63 ----- ui/pages/organisme-formation/transmettre.tsx | 49 ---- .../effectifs/aide-configuration-erp.tsx | 34 --- 34 files changed, 2389 deletions(-) delete mode 100644 ui/components/ErpTutorial/ErpTutorial.tsx delete mode 100644 ui/modules/mon-compte/ConfigurationERP.tsx delete mode 100644 ui/modules/mon-espace/effectifs/ChoixERP.tsx delete mode 100644 ui/modules/mon-espace/effectifs/ChoixTransmission.tsx delete mode 100644 ui/modules/mon-espace/effectifs/ConfigurationAPI.tsx delete mode 100644 ui/modules/mon-espace/effectifs/EffectifsBanner.tsx delete mode 100644 ui/modules/mon-espace/effectifs/EffectifsBannerERPNotConfigured.tsx delete mode 100644 ui/modules/mon-espace/effectifs/EffectifsPage.tsx delete mode 100644 ui/modules/mon-espace/effectifs/engine/AjoutApprenantModal.tsx delete mode 100644 ui/modules/mon-espace/effectifs/engine/Effectifs.tsx delete mode 100644 ui/modules/organisme-formation/CheckCfaTransmission/CheckCfaTransmissionContent.tsx delete mode 100644 ui/modules/organisme-formation/CheckCfaTransmission/FormSections/CfaTransmissionFound.tsx delete mode 100644 ui/modules/organisme-formation/CheckCfaTransmission/FormSections/CfaTransmissionNotFound.tsx delete mode 100644 ui/modules/organisme-formation/CheckCfaTransmission/FormSections/CfaTransmissionSection.tsx delete mode 100644 ui/modules/organisme-formation/CheckCfaTransmission/FormSections/index.ts delete mode 100644 ui/modules/organisme-formation/DemandeBranchementErp/DemandeBranchementErpForm.tsx delete mode 100644 ui/modules/organisme-formation/DemandeBranchementErp/DemandeBranchementErpFormBlock.tsx delete mode 100644 ui/modules/organisme-formation/DemandeBranchementErp/FormSections/DemandeBranchementErpFormErpComingSection.tsx delete mode 100644 ui/modules/organisme-formation/DemandeBranchementErp/FormSections/DemandeBranchementErpFormErpOnGoingSection.tsx delete mode 100644 ui/modules/organisme-formation/DemandeBranchementErp/FormSections/DemandeBranchementErpFormErpReadySection.tsx delete mode 100644 ui/modules/organisme-formation/DemandeBranchementErp/FormSections/DemandeBranchementErpFormNoErpSection.tsx delete mode 100644 ui/modules/organisme-formation/DemandeBranchementErp/FormSections/DemandeBranchementErpFormOtherErpSection.tsx delete mode 100644 ui/modules/organisme-formation/DemandeBranchementErp/FormSections/index.ts delete mode 100644 ui/modules/organisme-formation/DemandeBranchementErp/useSubmitDemandeBranchementErp.ts delete mode 100644 ui/modules/organisme-formation/OrganismeFormationPagesMenu.tsx delete mode 100644 ui/modules/organisme-formation/aide/Question.tsx delete mode 100644 ui/modules/organisme-formation/aide/questions.tsx delete mode 100644 ui/pages/effectifs/aide-configuration-erp.tsx delete mode 100644 ui/pages/mon-compte/erp.tsx delete mode 100644 ui/pages/organisme-formation/aide.tsx delete mode 100644 ui/pages/organisme-formation/consulter.tsx delete mode 100644 ui/pages/organisme-formation/transmettre.tsx delete mode 100644 ui/pages/organismes/[organismeId]/effectifs/aide-configuration-erp.tsx diff --git a/ui/components/ErpTutorial/ErpTutorial.tsx b/ui/components/ErpTutorial/ErpTutorial.tsx deleted file mode 100644 index 5d2fff1f26..0000000000 --- a/ui/components/ErpTutorial/ErpTutorial.tsx +++ /dev/null @@ -1,49 +0,0 @@ -import { ArrowForwardIcon } from "@chakra-ui/icons"; -import { Box, Button, Heading, Stack, Text } from "@chakra-ui/react"; -import React from "react"; -import { ERPS_BY_ID } from "shared"; - -const ErpTutorial = ({ erp, ...rest }) => { - return ( - - - Tutoriel pour {ERPS_BY_ID[erp]?.name} - - - Une fois votre clé générée et copiée,
- veuillez la coller dans votre compte ERP. -
- Ci-dessous, voyez comment procéder. -
- - {ERPS_BY_ID[erp]?.helpFilePath && ( - - - {ERPS_BY_ID[erp]?.helpFileSize && ( - - PDF – {ERPS_BY_ID[erp]?.helpFileSize} - - )} - - )} -
- ); -}; - -export default ErpTutorial; diff --git a/ui/modules/mon-compte/ConfigurationERP.tsx b/ui/modules/mon-compte/ConfigurationERP.tsx deleted file mode 100644 index 6a8559b3bd..0000000000 --- a/ui/modules/mon-compte/ConfigurationERP.tsx +++ /dev/null @@ -1,169 +0,0 @@ -import { ArrowForwardIcon } from "@chakra-ui/icons"; -import { Heading, Button, Text, List, ListItem, VStack, Input, Box, Flex, ListIcon, HStack } from "@chakra-ui/react"; -import React, { useState } from "react"; -import { CopyToClipboard } from "react-copy-to-clipboard"; - -import { _put } from "@/common/httpClient"; -import { Organisme } from "@/common/internal/Organisme"; -import { formatDateDayMonthYear } from "@/common/utils/dateUtils"; -import ErpTutorial from "@/components/ErpTutorial/ErpTutorial"; -import Ribbons from "@/components/Ribbons/Ribbons"; -import Table from "@/components/Table/Table"; -import useToaster from "@/hooks/useToaster"; -import { Checkbox } from "@/theme/components/icons"; - -type ConfigurationERPProps = { - organisme: Organisme; - erp: string | undefined | string[]; - isGenerating: boolean; - onGenerate: () => Promise; -}; - -const DynamicList = ({ apiKey, copied, verified }) => { - const Item = ({ children, active = false }) => { - return ( - - {active && } - {children} - - ); - }; - return ( - - 1. Générer la clé en cliquant sur le bouton ci-dessous - 2. Copier la clé - 3. Retourner dans votre compte ERP pour la coller - - 4. Finaliser en confirmant l’UAI et SIRET de votre établissement - - - ); -}; - -const ConfigurationERP = ({ erp, onGenerate, isGenerating, organisme }: ConfigurationERPProps) => { - const { toastSuccess, toastError } = useToaster(); - const [copied, setCopied] = useState(false); - const [verified] = useState(!!organisme.api_siret && !!organisme.api_uai); - - return ( - - - Paramétrage de votre ERP - - - Au 15 juin 2023, les données récoltées sur le parcours de l’apprenant ont évolué afin de
- mieux restituer une photographie en temps réel de l’apprentissage en France.
- {!verified && ( - <> - Ainsi, la clé d’échange (API key) actuellement installée sur votre ERP doit être changée.
- - L’opération prend quelques minutes (un tutoriel est disponible ci-dessous) si vous êtes -
habilité à modifier les paramètres de votre ERP. -
- - )} -
- {!verified && ( - - - - Comment mettre à jour votre clé d’échange - - - - - - {organisme.api_key ? ( - <> - - { - setCopied(true); - toastSuccess("Copié!"); - }} - > - - - - ) : ( - <> - Cliquez sur le bouton ci-dessous pour générer votre nouvelle clé d’échange. - - - )} - - {erp && } - - )} - {verified && ( - - - - - Vous avez correctement installé la nouvelle clé d’échange sur votre ERP - - - - - Information récues depuis votre ERP : - - "Siret", - }, - api_uai: { - size: 200, - header: () => "UAI", - }, - api_configuration_date: { - size: 200, - header: () => "Date d'interfaçage", - cell: ({ getValue }) => {formatDateDayMonthYear(getValue())}, - }, - }} - /> - - - - Félicitations ! L’opération est terminée. - - - Votre établissement {organisme.enseigne ?? organisme.raison_sociale} transmet bien les - données au -
- tableau de bord via la nouvelle API installée sur votre ERP. -
- Vous n’avez plus rien à faire. -
-
- - )} - - ); -}; - -export default ConfigurationERP; diff --git a/ui/modules/mon-compte/NavigationCompte.tsx b/ui/modules/mon-compte/NavigationCompte.tsx index d989fe1170..c1dbd3e4a9 100644 --- a/ui/modules/mon-compte/NavigationCompte.tsx +++ b/ui/modules/mon-compte/NavigationCompte.tsx @@ -13,14 +13,6 @@ const NavigationCompte = () => { name: "Mes informations", href: "/mon-compte", }, - ...(["recette", "local"].includes(process.env.NEXT_PUBLIC_ENV as string) - ? [ - { - name: "Paramétrage ERP", - href: "/mon-compte/erp", - }, - ] - : []), ]; return ( diff --git a/ui/modules/mon-espace/effectifs/ChoixERP.tsx b/ui/modules/mon-espace/effectifs/ChoixERP.tsx deleted file mode 100644 index 73b84679d7..0000000000 --- a/ui/modules/mon-espace/effectifs/ChoixERP.tsx +++ /dev/null @@ -1,128 +0,0 @@ -import { Box, Button, RadioGroup, Radio, Text, VStack, HStack } from "@chakra-ui/react"; -import { useFormik } from "formik"; -import { useRouter } from "next/router"; -import React from "react"; -import { ERPS } from "shared"; -import * as Yup from "yup"; - -import { configureOrganismeERP } from "@/common/api/tableauDeBord"; -import Ribbons from "@/components/Ribbons/Ribbons"; -import { InfoCircle } from "@/theme/components/icons/index"; - -const ChoixERP = ({ organisme, isMine }) => { - const router = useRouter(); - - const { values, handleSubmit, handleChange, isSubmitting } = useFormik({ - initialValues: { - erp: organisme?.erps?.[0] || "", - }, - validationSchema: Yup.object().shape({ - erp: Yup.string().required("Requis"), - }), - onSubmit: async (submittedValues) => { - if (submittedValues.erp === "SCFORM") { - await configureOrganismeERP(organisme._id, { - erps: ["SCFORM"], - setup_step_courante: "COMPLETE", - mode_de_transmission: "API", - }); - router.push("/mon-compte/erp"); - } else { - router.push( - isMine - ? `/effectifs/aide-configuration-erp?erp=${submittedValues.erp}` - : `/organismes/${organisme._id}/effectifs/aide-configuration-erp?erp=${submittedValues.erp}` - ); - } - }, - }); - return ( - - - - Importer vos effectifs - - - - - Quel ERP ou outil de gestion utilise votre organisme de formation ? - - - - {ERPS.filter((o) => o.state === "ready").map(({ id, name }) => ( - - - {name} - - - ))} - - - - Un outil différent de ceux-là - - (Excel, Salesforce, Hubspot, Sheets ...) - - - - - - {values.erp === "other" ? ( - <> - - - Transmettez facilement vos données grâce à notre service dédié. - - - - - ) : ( - - )} - - - - - - Un ERP (Enterprise Ressource Planning ou PGI pour Progiciel de Gestion Intégré) est une solution - logicielle qui permet d’unifier le système d’information d’une entreprise autour d’une base de données - unique.Pour un organisme de formation, la plupart des ERP proposent des fonctionnalités telles que la - gestion et le suivi des apprenants, la gestion des plannings de formation, la gestion des formateurs, - parfois la facturation, etc. - - - Vous aurez la possibilité de combiner deux moyens d’importation mais vous devez les programmer un à la - fois. - - - - - - ); -}; - -export default ChoixERP; diff --git a/ui/modules/mon-espace/effectifs/ChoixTransmission.tsx b/ui/modules/mon-espace/effectifs/ChoixTransmission.tsx deleted file mode 100644 index e72f399146..0000000000 --- a/ui/modules/mon-espace/effectifs/ChoixTransmission.tsx +++ /dev/null @@ -1,100 +0,0 @@ -import { Box, Button, Center, Flex, Heading, HStack, Text } from "@chakra-ui/react"; -import { useRouter } from "next/router"; -import React from "react"; - -import { configureOrganismeERP } from "@/common/api/tableauDeBord"; -import { ArrowDropRightLine } from "@/theme/components/icons"; - -type ChoixTransmissionProps = { - organismeId: string; - isMine: boolean; -}; - -const ChoixTransmission = ({ organismeId, isMine = false }: ChoixTransmissionProps) => { - const router = useRouter(); - - return ( - <> - - - Comment aimeriez-vous importer vos effectifs ? - - - - - - - Vous avez un ERP ? - - - Liez votre ou vos ERP au tableau de bord - - - -
- -
-
- - - - - Vous n’avez pas d’ERP ? - - - Importez vos effectifs avec un fichier Excel - - - -
- -
-
-
-
- - ); -}; - -export default ChoixTransmission; diff --git a/ui/modules/mon-espace/effectifs/ConfigurationAPI.tsx b/ui/modules/mon-espace/effectifs/ConfigurationAPI.tsx deleted file mode 100644 index a61d596d00..0000000000 --- a/ui/modules/mon-espace/effectifs/ConfigurationAPI.tsx +++ /dev/null @@ -1,135 +0,0 @@ -import { Box, Button, Flex, RadioGroup, Radio, Text, VStack, Stack, HStack } from "@chakra-ui/react"; -import { useFormik } from "formik"; -import { useRouter } from "next/router"; -import React from "react"; -import { ERPS } from "shared"; - -import { configureOrganismeERP } from "@/common/api/tableauDeBord"; -import { DownloadLine } from "@/theme/components/icons/index"; - -type ConfigurationAPIProps = { - organismeId: string; - isMine: boolean; - erpIdSelected: string | null | undefined; -}; - -const ConfigurationAPI = ({ organismeId, isMine, erpIdSelected }: ConfigurationAPIProps) => { - const router = useRouter(); - - const erpSelected = ERPS.find((e) => e.id === erpIdSelected); - const erpName = erpSelected?.name; - - const { values, handleChange } = useFormik({ - initialValues: { doYouUseAnotherService: "" }, - onSubmit: async () => { - // DO NOTHING - }, - }); - - return ( - - - - Démarrer l’interfaçage avec [{erpName}]. - - - {erpSelected?.helpFilePath && ( - - - {erpSelected.helpFileSize && ( - - PDF – {erpSelected.helpFileSize} - - )} - - )} - - - Temps estimé : 5 minutes - - - Pré-requis : -

- La configuration doit être effectuée par un administrateur sur {erpName}. Votre logiciel {erpName} doit être - à jour. Vous devez avoir renseigné votre UAI dans {erpName}. -

-
- - - Utilisez-vous un autre outil de gestion de vos effectifs au quotidien ? - - - - - - - Oui - - - {values.doYouUseAnotherService === "yes" && ( - - - - Il est possible de transmettre une partie de vos effectifs via votre ERP et d’importer l’autre - partie via l’onglet “Mes effectifs”. Si vous utilisez deux ERP connectés au tableau de bord - (exemple : Yparéo et SC Form), veuillez nous contacter. - - - )} - - - - - Non, {erpName} est mon unique outil de gestion - - - {values.doYouUseAnotherService === "no" && ( - - - Vous pouvez télécharger le pas-à-pas disponible ci-dessus. - - )} - - - - - -
- - ); -}; - -export default ConfigurationAPI; diff --git a/ui/modules/mon-espace/effectifs/EffectifsBanner.tsx b/ui/modules/mon-espace/effectifs/EffectifsBanner.tsx deleted file mode 100644 index 3f5ff2f5f8..0000000000 --- a/ui/modules/mon-espace/effectifs/EffectifsBanner.tsx +++ /dev/null @@ -1,55 +0,0 @@ -import { Image, VStack, Heading, Text, HStack } from "@chakra-ui/react"; -import React from "react"; -import { ERPS } from "shared"; - -import { Organisme } from "@/common/internal/Organisme"; -import { prettyPrintDate } from "@/common/utils/dateUtils"; -import Section from "@/components/Section/Section"; - -type EffectifsBannerProps = { - organisme: Partial; - isMine: boolean; -}; - -const EffectifsBanner = ({ organisme, isMine }: EffectifsBannerProps) => { - const erpId = organisme.erps?.[0]; - const mode_de_transmission = organisme.mode_de_transmission; - const erpName = ERPS.find((erp) => erp.id === erpId?.toUpperCase())?.name; - const prefixOrganismeText = isMine ? "Votre" : "Cet"; - // Legacy: pas de mode de transmission connu ni d'ERP configuré, mais une date de transmission. - const legacy = !mode_de_transmission && !erpName && organisme.last_transmission_date; - - return ( -
- - - - {legacy && `${prefixOrganismeText} organisme transmet ses effectifs`} - {erpName && `${prefixOrganismeText} organisme transmet ses effectifs via ${erpName}`} - {mode_de_transmission === "MANUEL" && - `${prefixOrganismeText} organisme transmet ses effectifs manuellement`} - - - {erpName && - `Dernière transmission de données par ${erpName} ${ - organisme.last_transmission_date - ? `le ${prettyPrintDate(organisme.last_transmission_date)}` - : "[en cours d'importation]" - }.`} - {legacy && `Dernière transmission de données le ${prettyPrintDate(organisme.last_transmission_date)}.`} - - - - -
- ); -}; - -export default EffectifsBanner; diff --git a/ui/modules/mon-espace/effectifs/EffectifsBannerERPNotConfigured.tsx b/ui/modules/mon-espace/effectifs/EffectifsBannerERPNotConfigured.tsx deleted file mode 100644 index 22ee365477..0000000000 --- a/ui/modules/mon-espace/effectifs/EffectifsBannerERPNotConfigured.tsx +++ /dev/null @@ -1,58 +0,0 @@ -import { HStack, Heading, ListItem, Text, UnorderedList, VStack } from "@chakra-ui/react"; - -import Ribbons from "@/components/Ribbons/Ribbons"; -import Section from "@/components/Section/Section"; -import { InfoCircle } from "@/theme/components/icons/InfoCircle"; - -type EffectifsBannerERPNotConfiguredProps = { - isMine: boolean; -}; - -const EffectifsBannerERPNotConfigured = ({ isMine }: EffectifsBannerERPNotConfiguredProps) => { - return ( - -
- - {isMine ? "Aperçu de vos effectifs transmis" : "Aperçu des effectifs transmis"} - - - {isMine - ? "Vous n’avez pas encore transmis vos effectifs" - : "Cet organisme n'a pas encore transmis ses effectifs"} - - {isMine && ( - - - Vous devez effectuer vos mises à jours entre le 1er et le 5 de chaque mois. - - )} -
- -
- - - - Les données exposées en temps réel donnent : - - - Une vision dynamique de l’organisation de l’apprentissage sur les territoires, - Des indications sur les profils de jeunes à accompagner. - - - - Vous n’avez pas encore transmis de données - - -
-
- ); -}; - -export default EffectifsBannerERPNotConfigured; diff --git a/ui/modules/mon-espace/effectifs/EffectifsPage.tsx b/ui/modules/mon-espace/effectifs/EffectifsPage.tsx deleted file mode 100644 index 8c374b8c9e..0000000000 --- a/ui/modules/mon-espace/effectifs/EffectifsPage.tsx +++ /dev/null @@ -1,110 +0,0 @@ -import { Box, Center, Container, Spinner } from "@chakra-ui/react"; -import { useQuery, useQueryClient } from "@tanstack/react-query"; -import React, { useEffect, useRef } from "react"; -import { useSetRecoilState } from "recoil"; - -import { _get } from "@/common/httpClient"; -import { Organisme } from "@/common/internal/Organisme"; - -import ChoixERP from "./ChoixERP"; -import ChoixTransmission from "./ChoixTransmission"; -import EffectifsBanner from "./EffectifsBanner"; -import EffectifsBannerERPNotConfigured from "./EffectifsBannerERPNotConfigured"; -import { effectifsStateAtom } from "./engine/atoms"; -import Effectifs from "./engine/Effectifs"; - -function useOrganismesEffectifs(organismeId: string | null | undefined) { - const setCurrentEffectifsState = useSetRecoilState(effectifsStateAtom); - - const queryClient = useQueryClient(); - const prevOrganismeId = useRef(null); - - useEffect(() => { - if (prevOrganismeId.current !== organismeId) { - prevOrganismeId.current = organismeId; - // queryClient.resetQueries("organismesEffectifs", { exact: true }); - } - }, [queryClient, organismeId]); - - const { data, isLoading, isFetching } = useQuery( - ["organismesEffectifs", organismeId], - async () => { - const organismesEffectifs = await _get(`/api/v1/organismes/${organismeId}/effectifs`); - - // eslint-disable-next-line no-undef - const newEffectifsState = new Map(); - for (const { id, validation_errors } of organismesEffectifs as any) { - newEffectifsState.set(id, { validation_errors, requiredSifa: [] }); - } - setCurrentEffectifsState(newEffectifsState); - - return organismesEffectifs; - }, - { - enabled: !!organismeId, - } - ); - - return { isLoading: isFetching || isLoading, organismesEffectifs: data || [] }; -} - -type EffectifsPageProps = { - isMine: boolean; - organisme: Organisme | null | undefined; -}; - -const EffectifsPage = ({ isMine, organisme }: EffectifsPageProps) => { - const { isLoading, organismesEffectifs } = useOrganismesEffectifs(organisme?._id); - const { data: duplicates } = useQuery( - [`duplicates-effectifs`, organisme?._id], - () => _get(`/api/v1/organismes/${organisme?._id}/duplicates`), - { - enabled: !!organisme?._id, - } - ); - - if (!organisme) { - return null; - } - - if (isLoading) { - return ( -
- -
- ); - } - - let MainComponent; - if (organisme.last_transmission_date) { - MainComponent = ( - - ); - } else if (!organisme.mode_de_transmission) { - MainComponent = ; - } else if (organisme.mode_de_transmission === "API" && !organisme.erps?.length) { - MainComponent = ; - } else { - MainComponent = ( - - ); - } - - return ( - <> - {organisme.last_transmission_date ? ( - - ) : ( - - )} - - - - {MainComponent} - - - - ); -}; - -export default EffectifsPage; diff --git a/ui/modules/mon-espace/effectifs/engine/AjoutApprenantModal.tsx b/ui/modules/mon-espace/effectifs/engine/AjoutApprenantModal.tsx deleted file mode 100644 index dcf1b44a24..0000000000 --- a/ui/modules/mon-espace/effectifs/engine/AjoutApprenantModal.tsx +++ /dev/null @@ -1,51 +0,0 @@ -import { Text } from "@chakra-ui/react"; -import React, { useCallback } from "react"; -import { useRecoilValue } from "recoil"; - -import { _post } from "@/common/httpClient"; -import PromptModal from "@/components/Modals/PromptModal"; -import { organismeAtom } from "@/hooks/organismeAtoms"; - -// TODO https://github.com/mission-apprentissage/flux-retour-cfas/issues/2387 -// ce composant a été partiellement développé, et n'est pas encore utilisé -const AjoutApprenantModal = (modal) => { - const organisme = useRecoilValue(organismeAtom); - const onCreateEffectifClicked = useCallback(async () => { - try { - await _post("/api/v1/effectif", { - organisme_id: organisme._id, - annee_scolaire: "2020-2021", - source: "TDB_MANUEL", - apprenant: { nom: "Hanry", prenom: "Pablo" }, - formation: { cfd: "26033206" }, - }); - window.location.reload(); // TODO tmp - } catch (e) { - console.error(e); - } - }, [organisme?._id]); - - return ( - <> - { - onCreateEffectifClicked(); - modal.onClose(); - }} - onKo={() => { - modal.onClose(); - }} - bgOverlay="rgba(0, 0, 0, 0.28)" - okText={"Ajouter"} - koText={"Annuler"} - > - FORMULAIRE - + formulaire STATUT courant - - - ); -}; -export default AjoutApprenantModal; diff --git a/ui/modules/mon-espace/effectifs/engine/Effectifs.tsx b/ui/modules/mon-espace/effectifs/engine/Effectifs.tsx deleted file mode 100644 index abbfd4deae..0000000000 --- a/ui/modules/mon-espace/effectifs/engine/Effectifs.tsx +++ /dev/null @@ -1,253 +0,0 @@ -import { Box, Flex, Text, HStack, Button, useDisclosure, Heading, VStack, Circle, Switch } from "@chakra-ui/react"; -import groupBy from "lodash.groupby"; -import { useRouter } from "next/router"; -import React, { useState, useMemo } from "react"; -import { useRecoilValue } from "recoil"; - -import { _getBlob } from "@/common/httpClient"; -import Ribbons from "@/components/Ribbons/Ribbons"; -import { organismeAtom } from "@/hooks/organismeAtoms"; -import { DoubleChevrons } from "@/theme/components/icons/DoubleChevrons"; - -import AjoutApprenantModal from "./AjoutApprenantModal"; -import EffectifsTable from "./EffectifsTable"; -import { Input } from "./formEngine/components/Input/Input"; - -const BadgeButton = ({ onClick, active = false, children, ...props }) => { - return ( - - ); -}; - -const EffectifsTableContainer = ({ effectifs, formation, canEdit, searchValue, ...props }) => { - const [count, setCount] = useState(effectifs.length); - return ( - - {count !== 0 && ( - - - - {formation.libelle_long} - - - [Code diplôme {formation.cfd}] - [Code RNCP {formation.rncp}] - - - )} - setCount(count)} - /> - - ); -}; - -const Effectifs = ({ organismesEffectifs, nbDuplicates, isMine }) => { - const router = useRouter(); - const organisme = useRecoilValue(organismeAtom); - const ajoutModal = useDisclosure(); - const [searchValue, setSearchValue] = useState(""); - - const organismesEffectifsGroupedBySco = useMemo( - () => groupBy(organismesEffectifs, "annee_scolaire"), - [organismesEffectifs] - ); - const [anneScolaire, setAnneScolaire] = useState("all"); - const [showOnlyErrors, setShowOnlyErrors] = useState(false); - - if (!organisme) { - return <>; - } - return ( - - - - {isMine ? "Mes effectifs" : "Ses effectifs"} - - - - - {organisme.mode_de_transmission !== "API" && ( - <> - {/* TODO TMP */} - - - )} - - - - - - Service d’import de vos effectifs en version bêta. - - - Nous listons actuellement toutes les informations qui peuvent empêcher l{"'"}import de fichier afin de - permettre par la suite une meilleure prise en charge de tout type de fichier. - - - - {nbDuplicates > 0 && ( - - - - Nous avons détécté {nbDuplicates} duplicat{nbDuplicates > 1 ? "s" : ""} pour l{"'"}année scolaire en - cours. - - - - - - )} - - {organisme.mode_de_transmission === "MANUEL" && organismesEffectifs.length === 0 && ( - - - {isMine - ? `Vous n'avez pas encore ajouté d'effectifs` - : `Aucun effectif n'a été transmis pour cet organisme.`} - - - Vous pouvez ajouter des effectifs à l’aide du bouton "Ajouter" ci-dessus. -
-
-
- )} - {organisme.mode_de_transmission === "API" && organismesEffectifs.length === 0 && ( - - - Aucun effectif n’a été transmis depuis votre ERP. - - - Merci de revenir ultérieurement. Si vous venez de configurer votre ERP, la transmission de vos effectifs - sera active demain matin. -
-
-
- )} - {organismesEffectifs.length > 0 && ( - <> - - { - setSearchValue(value.trim()); - }, - }} - w="35%" - /> - - - - - Filtrer: - - - { - setShowOnlyErrors(e.target.checked); - }} - /> - Afficher uniquement les données en erreur - - - - Par année scolaire - setAnneScolaire("all")} active={anneScolaire === "all"}> - Toutes - - {Object.keys(organismesEffectifsGroupedBySco).map((anneSco) => { - return ( - setAnneScolaire(anneSco)} key={anneSco} active={anneScolaire === anneSco}> - {anneSco} - - ); - })} - - - - )} - - - {Object.entries(organismesEffectifsGroupedBySco).map(([anneSco, orgaE]) => { - if (anneScolaire !== "all" && anneScolaire !== anneSco) return null; - const orgaEffectifs = showOnlyErrors ? orgaE.filter((ef) => ef.validation_errors.length) : orgaE; - const effectifsByCfd: { [cfd: string]: any[] } = groupBy(orgaEffectifs, "formation.cfd"); - const borderStyle = { borderColor: "dgalt", borderWidth: 1 }; //anneScolaire === "all" ? { borderColor: "bluefrance", borderWidth: 1 } : {}; - return ( - - - {anneSco} {!searchValue ? `- ${orgaEffectifs.length} apprenant(es) total` : ""} - - - {Object.entries(effectifsByCfd).map(([cfd, effectifs], i) => { - const { formation } = effectifs[0]; - return ( - - ); - })} - - - ); - })} - -
- ); -}; - -export default Effectifs; diff --git a/ui/modules/organisme-formation/CheckCfaTransmission/CheckCfaTransmissionContent.tsx b/ui/modules/organisme-formation/CheckCfaTransmission/CheckCfaTransmissionContent.tsx deleted file mode 100644 index 9000845e1e..0000000000 --- a/ui/modules/organisme-formation/CheckCfaTransmission/CheckCfaTransmissionContent.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import { Box, Link } from "@chakra-ui/react"; -import React, { useState } from "react"; - -import { CfaTransmissionFound, CfaTransmissionNotFound, CfaTransmissionSection } from "./FormSections"; - -export const ASKURL_FORM_STATE = { - askOrganisme: "askOrganisme", - organismeFound: "organismeFound", - organismeNotFound: "organismeNotFound", -}; - -const CheckCfaTransmissionContent = () => { - const [formState, setFormState] = useState(ASKURL_FORM_STATE.askOrganisme); - return ( - - {formState === ASKURL_FORM_STATE.askOrganisme && ( - setFormState(ASKURL_FORM_STATE.organismeFound)} - setOrganismeNotFound={() => setFormState(ASKURL_FORM_STATE.organismeNotFound)} - /> - )} - {formState !== ASKURL_FORM_STATE.askOrganisme && ( - setFormState(ASKURL_FORM_STATE.askOrganisme)}> - - Retour - - )} - {formState === ASKURL_FORM_STATE.organismeFound && } - {formState === ASKURL_FORM_STATE.organismeNotFound && } - - ); -}; - -export default CheckCfaTransmissionContent; diff --git a/ui/modules/organisme-formation/CheckCfaTransmission/FormSections/CfaTransmissionFound.tsx b/ui/modules/organisme-formation/CheckCfaTransmission/FormSections/CfaTransmissionFound.tsx deleted file mode 100644 index 961a2ae9d0..0000000000 --- a/ui/modules/organisme-formation/CheckCfaTransmission/FormSections/CfaTransmissionFound.tsx +++ /dev/null @@ -1,32 +0,0 @@ -import { Box, Flex, HStack, Text } from "@chakra-ui/react"; - -import Link from "@/components/Links/Link"; - -const CfaTransmissionFound = () => { - return ( - - - - - Votre organisme transmet bien des données
au tableau de bord de l’apprentissage. -
- - Utiliser votre URL unique disponible dans votre ERP pour consulter votre page - - - En savoir plus - - - -
- ); -}; - -export default CfaTransmissionFound; diff --git a/ui/modules/organisme-formation/CheckCfaTransmission/FormSections/CfaTransmissionNotFound.tsx b/ui/modules/organisme-formation/CheckCfaTransmission/FormSections/CfaTransmissionNotFound.tsx deleted file mode 100644 index 7d05c7e090..0000000000 --- a/ui/modules/organisme-formation/CheckCfaTransmission/FormSections/CfaTransmissionNotFound.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import { Box, Button, HStack, Text } from "@chakra-ui/react"; -import NavLink from "next/link"; - -const CfaTransmissionNotFound = () => { - return ( - - - - - Votre organisme ne transmet pas de données
- au tableau de bord de l’apprentissage. -
- -
-
- ); -}; - -export default CfaTransmissionNotFound; diff --git a/ui/modules/organisme-formation/CheckCfaTransmission/FormSections/CfaTransmissionSection.tsx b/ui/modules/organisme-formation/CheckCfaTransmission/FormSections/CfaTransmissionSection.tsx deleted file mode 100644 index d90305f77f..0000000000 --- a/ui/modules/organisme-formation/CheckCfaTransmission/FormSections/CfaTransmissionSection.tsx +++ /dev/null @@ -1,65 +0,0 @@ -import { Box, Button, HStack, Input, Text } from "@chakra-ui/react"; -import { useState } from "react"; - -import { validateSiret } from "@/common/domain/siret"; -import { validateUai } from "@/common/domain/uai"; -import { _post } from "@/common/httpClient"; -import { queryClient } from "@/common/queryClient"; - -const CfaTransmissionSection = ({ - setOrganismeFound, - setOrganismeNotFound, -}: { - setOrganismeFound: () => void; - setOrganismeNotFound: () => void; -}) => { - const [searchTerm, setSearchTerm] = useState(""); - const [isInputValid, setIsInputValid] = useState(); - - const submit = async () => { - // check that input is a valid SIRET or valid UAI - const shouldFetch = validateUai(searchTerm) || validateSiret(searchTerm); - - setIsInputValid(shouldFetch); - if (!shouldFetch) { - return; - } - - const data = await queryClient.fetchQuery("search-cfas" as any, () => - _post("/api/v1/organismes/search", { searchTerm }) - ); - - if (data?.[0]) { - setOrganismeFound(); - } else { - setOrganismeNotFound(); - } - }; - - return ( -
- Rechercher l'organisme par UAI ou par SIRET : - - Format valide d’un UAI : 7 chiffres et 1 lettre, et d’un SIRET : 14 chiffres - - setSearchTerm(e.target.value)} - /> -
- - {isInputValid === false && ( - - - Le format du SIRET ou de l'UAI n'est pas valide - - )} -
- ); -}; - -export default CfaTransmissionSection; diff --git a/ui/modules/organisme-formation/CheckCfaTransmission/FormSections/index.ts b/ui/modules/organisme-formation/CheckCfaTransmission/FormSections/index.ts deleted file mode 100644 index 508395840c..0000000000 --- a/ui/modules/organisme-formation/CheckCfaTransmission/FormSections/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export { default as CfaTransmissionSection } from "./CfaTransmissionSection"; -export { default as CfaTransmissionFound } from "./CfaTransmissionFound"; -export { default as CfaTransmissionNotFound } from "./CfaTransmissionNotFound"; diff --git a/ui/modules/organisme-formation/DemandeBranchementErp/DemandeBranchementErpForm.tsx b/ui/modules/organisme-formation/DemandeBranchementErp/DemandeBranchementErpForm.tsx deleted file mode 100644 index 8b2c720ee8..0000000000 --- a/ui/modules/organisme-formation/DemandeBranchementErp/DemandeBranchementErpForm.tsx +++ /dev/null @@ -1,93 +0,0 @@ -import { FormControl, FormErrorMessage, FormLabel, Select, Stack } from "@chakra-ui/react"; -import { Field, Form, Formik } from "formik"; -import React from "react"; -import { ERP_STATE, ERPS_FORM_CASES } from "shared"; -import * as Yup from "yup"; - -import { UAI_REGEX } from "@/common/domain/uai"; - -import { - DemandeBranchementErpFormErpComingSection, - DemandeBranchementErpFormErpOnGoingSection, - DemandeBranchementErpFormErpReadySection, - DemandeBranchementErpFormNoErpSection, - DemandeBranchementErpFormOtherErpSection, -} from "./FormSections"; - -const formInitialValues = { - erpIndex: 0, - nom_organisme: "", - uai_organisme: "", - nb_apprentis: "", - email_demandeur: "", - is_ready_co_construction: false, - autre_erp_nom: "", -}; - -const ErpSelectionList: any = [{ name: "Sélectionnez une option", state: null }].concat(ERPS_FORM_CASES as any); - -const DemandeBranchementErpForm = ({ onSubmit }: { onSubmit: (values: any) => void }) => { - return ( - - {({ isSubmitting, values }) => ( -
- - - {({ field, meta }) => ( - - ERP ou logiciel de gestion utilisé - - {meta.error} - - )} - - - - {/* Cas ERP Ready */} - {ErpSelectionList[values.erpIndex].state === ERP_STATE.ready && ( - - )} - - {/* Cas ERP OnGoing */} - {ErpSelectionList[values.erpIndex].state === ERP_STATE.ongoing && ( - - )} - - {/* Cas ERP Coming */} - {ErpSelectionList[values.erpIndex].state === ERP_STATE.coming && ( - - )} - - {/* Cas Other ERP */} - {ErpSelectionList[values.erpIndex].state === ERP_STATE.otherErp && ( - - )} - - {/* Cas No ERP */} - {ErpSelectionList[values.erpIndex].state === ERP_STATE.noErp && ( - - )} - - )} -
- ); -}; - -export default DemandeBranchementErpForm; diff --git a/ui/modules/organisme-formation/DemandeBranchementErp/DemandeBranchementErpFormBlock.tsx b/ui/modules/organisme-formation/DemandeBranchementErp/DemandeBranchementErpFormBlock.tsx deleted file mode 100644 index 1de00f31be..0000000000 --- a/ui/modules/organisme-formation/DemandeBranchementErp/DemandeBranchementErpFormBlock.tsx +++ /dev/null @@ -1,81 +0,0 @@ -import { Box, Flex, HStack, Text } from "@chakra-ui/react"; -import NavLink from "next/link"; -import React from "react"; -import { ERP_STATE } from "shared"; - -import DemandeBranchementErpForm from "./DemandeBranchementErpForm"; -import useSubmitDemandeBranchementErp, { SUBMIT_STATE } from "./useSubmitDemandeBranchementErp"; - -const Message = ({ iconClassName, title, message }: { iconClassName: string; title: string; message: string }) => { - return ( - <> - - - {title} - - - {message} - - - - Retourner à la page d'accueil - - - ); -}; - -const DemandeBranchementErpFormBlock = () => { - const { submitState, erpState, submitDemandeBranchementErp } = useSubmitDemandeBranchementErp(); - if (submitState === SUBMIT_STATE.success) { - if (erpState === ERP_STATE.ongoing) { - return ( - - ); - } - if (erpState === ERP_STATE.coming || erpState === ERP_STATE.otherErp) { - return ( - - ); - } - if (erpState === ERP_STATE.noErp) { - return ( - - ); - } - } - - if (submitState === SUBMIT_STATE.fail) { - if (erpState === ERP_STATE.ongoing) { - return ( - - ); - } - return ( - - ); - } - - return ; -}; - -export default DemandeBranchementErpFormBlock; diff --git a/ui/modules/organisme-formation/DemandeBranchementErp/FormSections/DemandeBranchementErpFormErpComingSection.tsx b/ui/modules/organisme-formation/DemandeBranchementErp/FormSections/DemandeBranchementErpFormErpComingSection.tsx deleted file mode 100644 index 74bf910aca..0000000000 --- a/ui/modules/organisme-formation/DemandeBranchementErp/FormSections/DemandeBranchementErpFormErpComingSection.tsx +++ /dev/null @@ -1,65 +0,0 @@ -import { Box, Button, FormControl, FormErrorMessage, FormLabel, Input, Stack, Text } from "@chakra-ui/react"; -import { Field } from "formik"; - -import { PRODUCT_NAME } from "@/common/constants/product"; - -const DemandeBranchementErpFormErpComingSection = ({ isSubmitting }: { isSubmitting: boolean }) => { - return ( - <> - - - - L'interfaçage du {PRODUCT_NAME} avec cet ERP n’a pas encore démarré. -  Nous vous invitons à lui faire part de votre besoin de transmettre vos données au {PRODUCT_NAME}. - - - - - Merci de nous communiquer les informations sur votre organisme : - - - - {({ field, meta }) => ( - - Nom de votre organisme - - {meta.error} - - )} - - - {({ field, meta }) => ( - - UAI formateur de l'organisme - - {meta.error} - - )} - - - {({ field, meta }) => ( - - Nombre d’apprentis sur la dernière année : - - {meta.error} - - )} - - - {({ field, meta }) => ( - - Email de la personne faisant la demande - - {meta.error} - - )} - - - - - ); -}; - -export default DemandeBranchementErpFormErpComingSection; diff --git a/ui/modules/organisme-formation/DemandeBranchementErp/FormSections/DemandeBranchementErpFormErpOnGoingSection.tsx b/ui/modules/organisme-formation/DemandeBranchementErp/FormSections/DemandeBranchementErpFormErpOnGoingSection.tsx deleted file mode 100644 index db89e6420c..0000000000 --- a/ui/modules/organisme-formation/DemandeBranchementErp/FormSections/DemandeBranchementErpFormErpOnGoingSection.tsx +++ /dev/null @@ -1,59 +0,0 @@ -import { Box, Button, FormControl, FormErrorMessage, FormLabel, Input, Stack, Text } from "@chakra-ui/react"; -import { Field } from "formik"; - -import { PRODUCT_NAME } from "@/common/constants/product"; - -const DemandeBranchementErpFormErpOnGoingSection = ({ isSubmitting }: { isSubmitting: boolean }) => { - return ( - <> - - - - - L'interfaçage du {PRODUCT_NAME} avec cet ERP a démarré mais les travaux ne sont pas achevés. - -  Nous vous invitons à lui faire part de votre besoin de transmettre vos données au {PRODUCT_NAME} afin - d'accélérer leur livraison. - - - - - Renseignez vos coordonnées pour être informé des évolutions : - - - - {({ field, meta }) => ( - - Nom de votre organisme - - {meta.error} - - )} - - - {({ field, meta }) => ( - - UAI formateur de l'organisme - - {meta.error} - - )} - - - {({ field, meta }) => ( - - Email de la personne faisant la demande - - {meta.error} - - )} - - - - - ); -}; - -export default DemandeBranchementErpFormErpOnGoingSection; diff --git a/ui/modules/organisme-formation/DemandeBranchementErp/FormSections/DemandeBranchementErpFormErpReadySection.tsx b/ui/modules/organisme-formation/DemandeBranchementErp/FormSections/DemandeBranchementErpFormErpReadySection.tsx deleted file mode 100644 index 4dcb034c9c..0000000000 --- a/ui/modules/organisme-formation/DemandeBranchementErp/FormSections/DemandeBranchementErpFormErpReadySection.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import { Box, Button, HStack, Stack, Text } from "@chakra-ui/react"; -import NavLink from "next/link"; - -import { PRODUCT_NAME } from "@/common/constants/product"; - -const DemandeBranchementErpFormErpReadySection = ({ helpFilePath }: { helpFilePath: string }) => { - return ( - <> - - - - Le {PRODUCT_NAME} est interfacé avec cet ERP. Vous pouvez l'autoriser à transmettre - vos données en 2 clics via une fonctionnalité disponible dans l'interface de votre logiciel de gestion. - - - - - - - - - Retourner à la page d'accueil - - - ); -}; - -export default DemandeBranchementErpFormErpReadySection; diff --git a/ui/modules/organisme-formation/DemandeBranchementErp/FormSections/DemandeBranchementErpFormNoErpSection.tsx b/ui/modules/organisme-formation/DemandeBranchementErp/FormSections/DemandeBranchementErpFormNoErpSection.tsx deleted file mode 100644 index 2b30f7e1d1..0000000000 --- a/ui/modules/organisme-formation/DemandeBranchementErp/FormSections/DemandeBranchementErpFormNoErpSection.tsx +++ /dev/null @@ -1,70 +0,0 @@ -import { Box, Button, FormControl, FormErrorMessage, FormLabel, HStack, Input, Stack, Text } from "@chakra-ui/react"; -import { Field } from "formik"; - -const DemandeBranchementErpFormNoErpSection = ({ isSubmitting }: { isSubmitting: boolean }) => { - return ( - <> - - - - - Nous travaillons actuellement à une solution pour vous permettre de transmettre vos effectifs dès la - rentrée prochaine. - - - - - - Pour être informé de l'ouverture de ce nouveau service, veuillez remplir le formulaire ci-dessous : - - - - {({ field, meta }) => ( - - Nom de votre organisme - - {meta.error} - - )} - - - {({ field, meta }) => ( - - UAI formateur de l'organisme - - {meta.error} - - )} - - - {({ field, meta }) => ( - - Nombre d’apprentis sur la dernière année : - - {meta.error} - - )} - - - {({ field, meta }) => ( - - Email de la personne faisant la demande - - {meta.error} - - )} - - - - - Je souhaite participer à la construction de ce nouveau service ! - - - - - - ); -}; -export default DemandeBranchementErpFormNoErpSection; diff --git a/ui/modules/organisme-formation/DemandeBranchementErp/FormSections/DemandeBranchementErpFormOtherErpSection.tsx b/ui/modules/organisme-formation/DemandeBranchementErp/FormSections/DemandeBranchementErpFormOtherErpSection.tsx deleted file mode 100644 index c59a4e0624..0000000000 --- a/ui/modules/organisme-formation/DemandeBranchementErp/FormSections/DemandeBranchementErpFormOtherErpSection.tsx +++ /dev/null @@ -1,76 +0,0 @@ -import { Box, Button, FormControl, FormErrorMessage, FormLabel, Input, Stack, Text } from "@chakra-ui/react"; -import { Field } from "formik"; - -import { PRODUCT_NAME } from "@/common/constants/product"; - -const DemandeBranchementErpFormOtherErpSection = ({ isSubmitting }: { isSubmitting: boolean }) => { - return ( - <> - - - - L'interfaçage du {PRODUCT_NAME} avec l'ensemble des ERP est en cours. -  Nous sommes en contact avec l'ensemble des ERP afin de permettre à tous les organismes de - formation de transmettre leur données et d'accéder au {PRODUCT_NAME}. Pour encourager la mise en oeuvre - de ces travaux nous vous invitons à faire part de votre besoin à votre éditeur de logiciel ERP. - - - - - Merci de nous communiquer les informations sur votre organisme pour nous aider à prioriser nos travaux : - - - - {({ field, meta }) => ( - - Nom de votre organisme - - {meta.error} - - )} - - - {({ field, meta }) => ( - - Quel est votre ERP ? - - {meta.error} - - )} - - - {({ field, meta }) => ( - - UAI formateur de l'organisme - - {meta.error} - - )} - - - {({ field, meta }) => ( - - Nombre d’apprentis sur la dernière année : - - {meta.error} - - )} - - - {({ field, meta }) => ( - - Email de la personne faisant la demande - - {meta.error} - - )} - - - - - ); -}; - -export default DemandeBranchementErpFormOtherErpSection; diff --git a/ui/modules/organisme-formation/DemandeBranchementErp/FormSections/index.ts b/ui/modules/organisme-formation/DemandeBranchementErp/FormSections/index.ts deleted file mode 100644 index df94f8434a..0000000000 --- a/ui/modules/organisme-formation/DemandeBranchementErp/FormSections/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -export { default as DemandeBranchementErpFormErpComingSection } from "./DemandeBranchementErpFormErpComingSection"; -export { default as DemandeBranchementErpFormErpReadySection } from "./DemandeBranchementErpFormErpReadySection"; -export { default as DemandeBranchementErpFormErpOnGoingSection } from "./DemandeBranchementErpFormErpOnGoingSection"; -export { default as DemandeBranchementErpFormOtherErpSection } from "./DemandeBranchementErpFormOtherErpSection"; -export { default as DemandeBranchementErpFormNoErpSection } from "./DemandeBranchementErpFormNoErpSection"; diff --git a/ui/modules/organisme-formation/DemandeBranchementErp/useSubmitDemandeBranchementErp.ts b/ui/modules/organisme-formation/DemandeBranchementErp/useSubmitDemandeBranchementErp.ts deleted file mode 100644 index f698c07a65..0000000000 --- a/ui/modules/organisme-formation/DemandeBranchementErp/useSubmitDemandeBranchementErp.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { useState } from "react"; -import { ERPS_FORM_CASES } from "shared"; - -import { _post } from "@/common/httpClient"; - -export const SUBMIT_STATE = { - waiting: "waiting", - success: "success", - fail: "fail", -}; - -const useSubmitDemandeBranchementErp = () => { - const [submitState, setSubmitState] = useState(SUBMIT_STATE.waiting); - const [erpState, setErpState] = useState(ERPS_FORM_CASES[0].state); - - const submitDemandeBranchementErp = async (formData) => { - try { - await _post("/api/demande-branchement-erp", { - erp: formData.autre_erp_nom !== "" ? formData.autre_erp_nom : ERPS_FORM_CASES[formData.erpIndex - 1].name, - nom_organisme: formData.nom_organisme, - uai_organisme: formData.uai_organisme, - email_demandeur: formData.email_demandeur, - nb_apprentis: `${formData.nb_apprentis}`, - is_ready_co_construction: formData.is_ready_co_construction ?? false, - }); - setErpState(ERPS_FORM_CASES[formData.erpIndex - 1].state); - setSubmitState(SUBMIT_STATE.success); - } catch (err) { - setSubmitState(SUBMIT_STATE.fail); - } - }; - - return { submitState, erpState, submitDemandeBranchementErp }; -}; - -export default useSubmitDemandeBranchementErp; diff --git a/ui/modules/organisme-formation/OrganismeFormationPagesMenu.tsx b/ui/modules/organisme-formation/OrganismeFormationPagesMenu.tsx deleted file mode 100644 index 0140dc2bb0..0000000000 --- a/ui/modules/organisme-formation/OrganismeFormationPagesMenu.tsx +++ /dev/null @@ -1,56 +0,0 @@ -import { Flex, Link, Text } from "@chakra-ui/react"; -import { useRouter } from "next/router"; -import React, { ReactNode } from "react"; - -const OrganismeFormationPagesMenu = (props) => { - return ( - - - - ); -}; - -const NavItem = ({ children, to = "/", ...rest }: { children: ReactNode; to: string }) => { - const router = useRouter(); - const isActive = router.pathname === to; - - return ( - - - {children} - - - ); -}; - -const NavLinks = () => { - return ( - - Comment transmettre les données de votre organisme ? -
- - Comment consulter et vérifier les données que vous transmettez ? - -
- Une question ? Besoin d’aide ? Consulter la page d’aide -
- ); -}; - -const NavBarContainer = ({ children }: { children: ReactNode }) => { - return ( - - {children} - - ); -}; - -export default OrganismeFormationPagesMenu; diff --git a/ui/modules/organisme-formation/aide/Question.tsx b/ui/modules/organisme-formation/aide/Question.tsx deleted file mode 100644 index aff119011c..0000000000 --- a/ui/modules/organisme-formation/aide/Question.tsx +++ /dev/null @@ -1,31 +0,0 @@ -import { Box, Flex, Text } from "@chakra-ui/react"; -import React, { useState } from "react"; - -const Question = ({ question, answer }: { question: string; answer: any }) => { - const [showAnswer, setShowAnswer] = useState(false); - - return ( -
- setShowAnswer(!showAnswer)}> - - - {question} - - - {showAnswer && ( - - {answer} - - )} -
- ); -}; - -export default Question; diff --git a/ui/modules/organisme-formation/aide/questions.tsx b/ui/modules/organisme-formation/aide/questions.tsx deleted file mode 100644 index 64a41b4d78..0000000000 --- a/ui/modules/organisme-formation/aide/questions.tsx +++ /dev/null @@ -1,244 +0,0 @@ -import { Box, Img, Stack, Text } from "@chakra-ui/react"; - -import Link from "@/components/Links/Link"; - -export const questions = [ - { - question: "Est-ce que les données de votre organisme s'affichent sur le tableau de bord ?", - answer: ( - - Les données de votre organisme s'affichent si vous avez autorisé votre ERP (ou logiciel de gestion) à - transmettre vos données au tableau de bord de l'apprentissage. Ceci concerne les clients de SC Form, Ymag, - Gestibase ou FCA Manager. - - ), - }, - { - question: "Comment accéder votre page organisme de formation sur le tableau de bord ?", - answer: ( - - - Si vous transmettez des données au tableau de bord de l'apprentissage, vous pouvez les consulter et les - vérifier directement sur le tableau de bord de l'apprentissage. Le lien vous permettant d'accéder à - votre page organisme de formation, est disponible directement dans votre ERP. - - - Ce lien ne doit pas être partagé en dehors des personnes habilitées de votre organisme de formation, car vous - pourrez y consulter des données personnelles. - - Si vous utilisez Ymag : - - Si vous utilisez Gesti : - - En attente des visuels pour FCA Manager et SC Form. - - ), - }, - { - question: "Qui peut consulter les données de votre organisme ?", - answer: ( - - - Les personnes autorisées à consulter les données de votre organisme dépendent du service public de - l'emploi (Conseil régional, Académie et DREETS), les organisations professionnelles (OPCO) et le Carif - Oref de votre région. Si vous êtes membre d'un réseau, la tête de votre réseau peut également consulter - votre page. - - L'analyse de l'impact de la protection des données (AIPD) est disponible à la demande. - - ), - }, - { - question: "Pourquoi transmettre les données de votre organisme au tableau de bord ?", - answer: ( - - - Différentes institutions (Conseil régional, DREETS, Opco, Carif Oref, Académie, DGEFP) consultent le tableau - de bord de l'apprentissage quotidiennement pour suivre l'évolution des effectifs.  - - - Ces données les éclairent notamment pour attribuer des subventions, pour mettre en place des plans - d'actions d'accompagnement des jeunes sans contrat ou pour définir les politiques publiques - d'aide à l'apprentissage. - - - ), - }, - { - question: "Comment consulter ces données sur le tableau de bord ?", - answer: ( - - - Vous pouvez y accéder via une URL unique pour votre organisme de formation.  - - Cette URL est privée, ne la partagez qu'avec les personnes gestionnaires de votre organisme de - formation. - - - - - Vous la trouverez directement dans votre ERP (ou logiciel de gestion). - - Si toutefois, l'URL n'est pas encore intégrée dans votre interface de gestion, vous pouvez en faire - la demande en  - - contactant l'équipe du tableau de bord - - . - - - ), - }, - { - question: "Comment transmettre les données de mon organisme au tableau de bord de l'apprentissage ?", - answer: ( - - - Pour transmettre les données de votre ERP vers le tableau de bod, vous devez en effectuer le paramétrage. Ce - paramétrage à faire une seule fois est estimé à 10 minutes. - - - Pour ce faire,  - - sélectionnez l'ERP que vous utilisez - - , téléchargez le pas à pas correspondant et suivez les étapes une à une. - - - ), - }, - { - question: - "Qu'est-ce qu'un UAI ? Comment retrouver l'UAI de votre organisme ? Vous avez plusieurs UAI, lequel devez-vous renseigner ?", - answer: ( - - - L'UAI (unité administrative immatriculée) est le code d'immatriculation qu'utilise - l'Éducation Nationale pour enregistrer votre organisme dans le répertoire national des établissement - (RNE). Elle est composée de sept chiffres et une lettre. - - - Si vous êtes une Unité de Formation en Apprentissage (UFA) ou un organisme formateur, il se peut que vous ayez - deux UAI, celle de votre organisme gestionnaire (ou responsable) et la votre. Pour que les effectifs soient - affichés au niveau formateur, renseignez votre UAI plutôt que celle de votre organisme gestionnaire (ou - responsable). - - - ), - }, - { - question: "Qu'est-ce qu'un ERP (ou logiciel de gestion) ?", - answer: ( - - - ERP signifie Enterprise Ressource Planning, en français on utilise le terme Progiciel de Gestion Intégré. Il - s'agit d'un logiciel de gestion permettant de suivre au quotidien les aspects administratifs et les - informations d'une entreprise. - - - La plupart des organismes de formation utilisent un ERP pour suivre leur apprenants et les contrats des - apprentis. - - - ), - }, - { - question: "Je n'ai pas d'ERP (ou logiciel de gestion), comment puis-je transmettre ?", - answer: ( - - - A ce jour, si vous utilisez Ypaéro, Gesti, SC Form ou FCA Manager, vous pouvez transmettre vos données au - tableau de bord (cf pas à pas) Si vous utilisez un autre ERP, n'hésitez pas à les contacter pour les - inviter à faire les développements nécessaires. - - - Si vous n'utilisez pas d'ERP, vous ne pouvez pas transmettre vos données au tableau de bord. - Cependant, l'équipe projet travaille à une évolution qui vous permettra de communiquer vos données via - des feuilles de calcul. Si vous souhaitez être informé lorsque cette fonctionnalité sera possible,  - - - transmettez-nous vos coordonnées - - - . - - - ), - }, - { - question: "Quelles sont les données affichées ?", - answer: ( - - - Les données affichées sont celles transmises par votre établissement via votre ERP. Ces données ne sont pas - transformées, elles sont juste agrégées afin d'identifier le nombre d'apprentis par niveau et code - diplôme, les inscrits sans contrats, les rupturants et les abandons. - - Pour connaître la définition des différents statuts affichés, dépliez la question ci-dessous. - - ), - }, - { - question: "Comment le tableau de bord définit un “inscrit sans contrat” ? et un apprenant en situation d'abandon ?", - answer: ( - - Les apprentis sont les apprenants avec un contrat d'apprentissage, les inscrits sans contrat sont les - apprenants qui n'ont pas encore de contrat d'apprentissage, les rupturants sont les apprentis qui - n'ont plus de contrat d'apprentissage, les abandons correspondent à tous les apprenants ayant mis fin - à leur formation avant la date de fin prévue. - - ), - }, - { - question: "Certaines données affichées ne sont pas bonnes. Comment puis-je les corriger ?", - answer: ( - - - Cela provient d'un mauvais paramétrage dans votre ERP, vous pouvez  - - consulter les pas à pas - -  pour le modifier. - - Avez vous bien paramétré votre ERP ? Avez-vous renseigné toutes les informations dans votre ERP ? - Si cela ne résoud pas le problème d'affichage, contactez-nous. - - ), - }, - { - question: "La transmission des données au tableau de bord est-elle obligatoire ?", - answer: ( - - - En tant qu'opérateur d'une mission de service public, c'est une obligation légale au sens du - premier article de la loi pour une République numérique. - - - Le tableau de bord de l'apprentissage va devenir l'outil de référence des pouvoirs publics. À ce - titre, certaines régions utilisent déjà cet outil pour attribuer les aides aux centres de formation. Il est - porté par la DGEFP comme le futur outil de pilotage des politiques publiques de l'apprentissage. En ne - transmettant pas vos données, vous ne donnerez donc aucune visibilité sur votre réalité et sur vos besoins en - tant qu'organisme de formation. - - - ), - }, - { - question: "La transmission des données au tableau de bord remplace-t'elle l'enquête SIFA ?", - answer: ( - - - À ce jour, transmettre vos données au tableau de bord ne vous dispense pas de remplir l'enquête SIFA. - - - Une fois les objectifs d'acquisition et de qualité des données seront atteints, de nouveaux usages des - données collectées pourront être étudiés et si rien n'est engagé, la DEPP qui administre SIFA, - s'intéresse à nos travaux. - - - ), - }, -]; diff --git a/ui/pages/effectifs/aide-configuration-erp.tsx b/ui/pages/effectifs/aide-configuration-erp.tsx deleted file mode 100644 index 95060f5b7d..0000000000 --- a/ui/pages/effectifs/aide-configuration-erp.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import { Box, Container } from "@chakra-ui/react"; -import Head from "next/head"; -import { useRouter } from "next/router"; -import React from "react"; - -import { getAuthServerSideProps } from "@/common/SSR/getAuthServerSideProps"; -import Page from "@/components/Page/Page"; -import withAuth from "@/components/withAuth"; -import ConfigurationAPI from "@/modules/mon-espace/effectifs/ConfigurationAPI"; -import { useEffectifsOrganismeOrganisation } from "@/modules/mon-espace/effectifs/useEffectifsOrganisme"; - -export const getServerSideProps = async (context) => ({ props: { ...(await getAuthServerSideProps(context)) } }); - -const PageAideConfigurationErpMonOrganisme = () => { - const router = useRouter(); - const erpIdSelected = router.query.erp as string; - - const { organisme } = useEffectifsOrganismeOrganisation(); - return ( - - - Configuration ERP - - - - {organisme && } - - - - ); -}; - -export default withAuth(PageAideConfigurationErpMonOrganisme); diff --git a/ui/pages/mon-compte/erp.tsx b/ui/pages/mon-compte/erp.tsx deleted file mode 100644 index abccce93df..0000000000 --- a/ui/pages/mon-compte/erp.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import { Box, Flex } from "@chakra-ui/react"; -import Head from "next/head"; -import { useRouter } from "next/router"; -import React from "react"; - -import { getAuthServerSideProps } from "@/common/SSR/getAuthServerSideProps"; -import Page from "@/components/Page/Page"; -import withAuth from "@/components/withAuth"; -import { useOrganisme } from "@/hooks/organismes"; -import ConfigurationERP from "@/modules/mon-compte/ConfigurationERP"; -import NavigationCompte from "@/modules/mon-compte/NavigationCompte"; -import { useEffectifsOrganismeOrganisation } from "@/modules/mon-espace/effectifs/useEffectifsOrganisme"; - -export const getServerSideProps = async (context) => ({ props: { ...(await getAuthServerSideProps(context)) } }); - -const ConfigurationErpPage = () => { - const router = useRouter(); - const { organisme } = useEffectifsOrganismeOrganisation(); - const { organisme: currentOrganisme, generateApiKey, isGeneratingApiKey } = useOrganisme(organisme?._id); - - return ( - - - Paramétrage ERP - - - - - {currentOrganisme && ( - generateApiKey()} - /> - )} - - - - ); -}; - -export default withAuth(ConfigurationErpPage); diff --git a/ui/pages/organisme-formation/aide.tsx b/ui/pages/organisme-formation/aide.tsx deleted file mode 100644 index dee39d3a09..0000000000 --- a/ui/pages/organisme-formation/aide.tsx +++ /dev/null @@ -1,50 +0,0 @@ -import { Box, Button, Container, Divider, Heading, HStack, Stack, Text } from "@chakra-ui/react"; -import Head from "next/head"; -import React from "react"; - -import { CONTACT_ADDRESS } from "@/common/constants/product"; -import Page from "@/components/Page/Page"; -import Section from "@/components/Section/Section"; -import Question from "@/modules/organisme-formation/aide/Question"; -import { questions } from "@/modules/organisme-formation/aide/questions"; -import OrganismeFormationPagesMenu from "@/modules/organisme-formation/OrganismeFormationPagesMenu"; - -export default function Aide() { - const title = "Page d'aide"; - return ( - - - {title} - -
- - {title} - - - - - - - - - - Page d'aide - - - {questions.map(({ question, answer }, index) => { - return ; - })} - - - Vous ne trouvez pas la réponse à votre question ou vous avez besoin de contacter notre équipe ? - - - - - - - -
-
- ); -} diff --git a/ui/pages/organisme-formation/consulter.tsx b/ui/pages/organisme-formation/consulter.tsx deleted file mode 100644 index 161200f223..0000000000 --- a/ui/pages/organisme-formation/consulter.tsx +++ /dev/null @@ -1,63 +0,0 @@ -import { Box, Divider, Heading, HStack, Text } from "@chakra-ui/react"; -import Head from "next/head"; -import React from "react"; - -import Link from "@/components/Links/Link"; -import Page from "@/components/Page/Page"; -import Section from "@/components/Section/Section"; -import CheckCfaTransmissionContent from "@/modules/organisme-formation/CheckCfaTransmission/CheckCfaTransmissionContent"; -import OrganismeFormationPagesMenu from "@/modules/organisme-formation/OrganismeFormationPagesMenu"; - -export default function CommentConsulterEtVerifierLesDonnees() { - const title = "Comment vérifier les données que vous transmettez ?"; - return ( - - - {title} - -
- - - - - - - - - - Comment consulter et vérifier les données que vous transmettez ? - - - Vous pouvez accéder sur le tableau de bord de l’apprentissage, à - - {" "} - une page dédiée à votre organisme de formation via une URL unique disponible dans votre ERP (ou - logiciel de gestion) - - . Cette URL est privée, ne la partagez qu’avec les personnes gestionnaires de votre organisme de - formation. - - {" "} - Pour plus d’informations, consultez la rubrique d’aide. - - - - Comment consulter et vérifier les données que vous transmettez ? - - Renseigner les informations suivantes pour vérifier la transmission : - - - - - - - -
-
- ); -} diff --git a/ui/pages/organisme-formation/transmettre.tsx b/ui/pages/organisme-formation/transmettre.tsx deleted file mode 100644 index 37d3ac0f57..0000000000 --- a/ui/pages/organisme-formation/transmettre.tsx +++ /dev/null @@ -1,49 +0,0 @@ -import { Box, Divider, Heading, HStack, Text } from "@chakra-ui/react"; -import Head from "next/head"; -import React from "react"; - -import Page from "@/components/Page/Page"; -import Section from "@/components/Section/Section"; -import DemandeBranchementErpFormBlock from "@/modules/organisme-formation/DemandeBranchementErp/DemandeBranchementErpFormBlock"; -import OrganismeFormationPagesMenu from "@/modules/organisme-formation/OrganismeFormationPagesMenu"; - -const CommentTransmettreVosDonneesPage = () => { - const title = "Comment transmettre les données de votre organisme ?"; - return ( - - - {title} - -
- - - - - - - - - - Comment transmettre les données de votre organisme ? - - - Afin de mieux vous guider, merci de renseigner le formulaire ci dessous : - - - - - - - - -
-
- ); -}; - -export default CommentTransmettreVosDonneesPage; diff --git a/ui/pages/organismes/[organismeId]/effectifs/aide-configuration-erp.tsx b/ui/pages/organismes/[organismeId]/effectifs/aide-configuration-erp.tsx deleted file mode 100644 index 12b4f9f75e..0000000000 --- a/ui/pages/organismes/[organismeId]/effectifs/aide-configuration-erp.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import { Box, Container } from "@chakra-ui/react"; -import Head from "next/head"; -import { useRouter } from "next/router"; -import React from "react"; - -import { getAuthServerSideProps } from "@/common/SSR/getAuthServerSideProps"; -import Page from "@/components/Page/Page"; -import withAuth from "@/components/withAuth"; -import ConfigurationAPI from "@/modules/mon-espace/effectifs/ConfigurationAPI"; -import { useEffectifsOrganisme } from "@/modules/mon-espace/effectifs/useEffectifsOrganisme"; - -export const getServerSideProps = async (context) => ({ props: { ...(await getAuthServerSideProps(context)) } }); - -const PageAideConfigurationErpSonOrganisme = () => { - const router = useRouter(); - const { organisme } = useEffectifsOrganisme(router.query.organismeId as string); - - const erpIdSelected = router.query.erp as string; - - return ( - - - Configuration ERP - - - - {organisme && } - - - - ); -}; - -export default withAuth(PageAideConfigurationErpSonOrganisme);