Skip to content

Commit

Permalink
Merge pull request #1377 from SocialGouv/feat/us-2655-aij
Browse files Browse the repository at this point in the history
Feat/us 2655 aij
  • Loading branch information
arthurlbrjc committed Jun 17, 2024
2 parents 4cf8e97 + abd575e commit e773f92
Show file tree
Hide file tree
Showing 51 changed files with 249 additions and 352 deletions.
4 changes: 2 additions & 2 deletions .env.example.local
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ KEYCLOAK_SECRET=
KEYCLOAK_ISSUER=
NEXT_PUBLIC_FAQ_MILO_EXTERNAL_LINK=
NEXT_PUBLIC_FAQ_PE_EXTERNAL_LINK=
NEXT_PUBLIC_FAQ_PE_BRSA_EXTERNAL_LINK=
NEXT_PUBLIC_FAQ_PASS_EMPLOI_EXTERNAL_LINK=
ENABLE_PASS_EMPLOI_SSO=
NEXT_PUBLIC_APM_IS_ACTIVE=
APP=
Expand All @@ -31,7 +31,7 @@ NEXT_PUBLIC_SUPPORT_MAIL=
NEXT_PUBLIC_ENABLE_LEANBE=
NEXT_PUBLIC_LEANBE_MILO_WIDGET_ID=
NEXT_PUBLIC_LEANBE_PE_WIDGET_ID=
NEXT_PUBLIC_LEANBE_PE_BRSA_WIDGET_ID=
NEXT_PUBLIC_LEANBE_PASS_EMPLOI_WIDGET_ID=
NEXT_PUBLIC_ENABLE_PE_BRSA_SSO=
ANALYZE=
NEXT_PUBLIC_ENABLE_CVM=
Expand Down
3 changes: 2 additions & 1 deletion .env.test
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ NEXT_PUBLIC_MATOMO_SOCIALGOUV_SITE_ID=NEXT_PUBLIC_MATOMO_SOCIALGOUV_SITE_ID
NEXT_PUBLIC_APM_URL=APM_URL
NEXT_PUBLIC_API_ENDPOINT=NEXT_PUBLIC_API_ENDPOINT
NEXT_PUBLIC_ENABLE_PE_BRSA_SSO=true
NEXT_PUBLIC_ENABLE_PE_AIJ_SSO=true
ENABLE_PASS_EMPLOI_SSO=true
NEXTAUTH_URL=NEXTAUTH_URL
KEYCLOAK_ISSUER=KEYCLOAK_ISSUER
Expand All @@ -12,4 +13,4 @@ NEXT_PUBLIC_IMILO_COORDONNEES_URL=https://admin.i-milo.fr/moncompte/coordonnees/
NEXT_PUBLIC_IMILO_URL=https://portail.i-milo.fr/
NEXT_PUBLIC_FAQ_MILO_EXTERNAL_LINK=http://perdu.com/
NEXT_PUBLIC_FAQ_PE_EXTERNAL_LINK=http://perdu.com/
NEXT_PUBLIC_FAQ_PE_BRSA_EXTERNAL_LINK=http://perdu.com/
NEXT_PUBLIC_FAQ_PASS_EMPLOI_EXTERNAL_LINK=http://perdu.com/
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,15 @@ import Button from 'components/ui/Button/Button'
import { InputError } from 'components/ui/Form/InputError'
import FailureAlert from 'components/ui/Notifications/FailureAlert'
import { ValueWithError } from 'components/ValueWithError'
import { estPoleEmploiBRSA } from 'interfaces/conseiller'
import { estPassEmploi } from 'interfaces/conseiller'
import { modifierDateSignatureCGU } from 'services/conseiller.service'
import { useConseiller } from 'utils/conseiller/conseillerContext'

const ContenuCGUConseillerCEJ = dynamic(
() => import('components/ContenuCGUConseillerCEJ')
)
const ContenuCGUConseillerBRSA = dynamic(
() => import('components/ContenuCGUConseillerBRSA')
const ContenuCGUConseillerPAssEmploi = dynamic(
() => import('components/ContenuCGUConseillerPassEmploi')
)

type ConsentementCguProps = {
Expand Down Expand Up @@ -61,8 +61,8 @@ function ConsentementCguPage({ returnTo }: ConsentementCguProps) {
<HeaderCGU conseiller={conseiller} />

<main role='main'>
{estPoleEmploiBRSA(conseiller) && <ContenuCGUConseillerBRSA />}
{!estPoleEmploiBRSA(conseiller) && <ContenuCGUConseillerCEJ />}
{estPassEmploi(conseiller) && <ContenuCGUConseillerPAssEmploi />}
{!estPassEmploi(conseiller) && <ContenuCGUConseillerCEJ />}

<form onSubmit={validerLesCGU} className='flex flex-col mt-10'>
<div className='mb-10'>
Expand Down
4 changes: 1 addition & 3 deletions app/(connected)/(with-sidebar)/(with-chat)/(index)/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import {
aEtablissement,
doitSignerLesCGU,
estMilo,
estPassEmploi,
} from 'interfaces/conseiller'
import { getConseillerServerSide } from 'services/conseiller.service'
import { getAgencesServerSide } from 'services/referentiel.service'
Expand Down Expand Up @@ -38,8 +37,7 @@ export default async function Home({

const afficherModaleOnboarding = Boolean(searchParams?.onboarding)
const emailEstManquant = estMilo(conseiller) && !conseiller.email
const agenceEstManquante =
!estPassEmploi(conseiller) && !aEtablissement(conseiller)
const agenceEstManquante = !aEtablissement(conseiller)
if (!afficherModaleOnboarding && !emailEstManquant && !agenceEstManquante)
redirect(`${redirectUrl}`)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,12 @@ import dynamic from 'next/dynamic'
import { useRouter } from 'next/navigation'
import React, { useCallback, useEffect, useState } from 'react'

import { AjouterJeuneButton } from 'components/jeune/AjouterJeuneButton'
import { RechercheJeune } from 'components/jeune/RechercheJeune'
import TableauJeunes from 'components/jeune/TableauJeunes'
import PageActionsPortal from 'components/PageActionsPortal'
import Button from 'components/ui/Button/Button'
import ButtonLink from 'components/ui/Button/ButtonLink'
import IconComponent, { IconName } from 'components/ui/IconComponent'
import IllustrationComponent, {
IllustrationName,
} from 'components/ui/IllustrationComponent'
Expand Down Expand Up @@ -149,7 +150,15 @@ function PortefeuillePage({
return (
<>
<PageActionsPortal>
<AjouterJeuneButton structure={conseiller.structure} />
<ButtonLink href='/mes-jeunes/creation-jeune'>
<IconComponent
name={IconName.Add}
focusable={false}
aria-hidden={true}
className='mr-2 w-4 h-4'
/>
Ajouter un bénéficiaire
</ButtonLink>
</PageActionsPortal>

{conseiller.aDesBeneficiairesARecuperer && (
Expand Down
32 changes: 17 additions & 15 deletions app/(connected)/(with-sidebar)/(with-chat)/profil/ProfilPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -177,21 +177,23 @@ function ProfilPage({ referentielAgences }: ProfilProps) {
)}
</dl>

{process.env.NEXT_PUBLIC_ENABLE_PE_BRSA_SSO && !conseillerEstMilo && (
<Button
className='mt-4'
onClick={openDeleteConseillerModal}
style={ButtonStyle.TERTIARY}
>
<IconComponent
name={IconName.Delete}
focusable={false}
aria-hidden={true}
className='mr-2 w-4 h-4'
/>
Supprimer mon compte
</Button>
)}
{!conseillerEstMilo &&
(process.env.NEXT_PUBLIC_ENABLE_PE_BRSA_SSO === 'true' ||
process.env.NEXT_PUBLIC_ENABLE_PE_AIJ_SSO === 'true') && (
<Button
className='mt-4'
onClick={openDeleteConseillerModal}
style={ButtonStyle.TERTIARY}
>
<IconComponent
name={IconName.Delete}
focusable={false}
aria-hidden={true}
className='mr-2 w-4 h-4'
/>
Supprimer mon compte
</Button>
)}

{showModaleSuppressionCompte && (
<ConfirmationDeleteConseillerModal
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@ import Image from 'next/image'
import React from 'react'

import avecNosRessourcesImage from 'assets/images/avec_nos_ressources.webp'
import avecNosRessourcesImageBRSA from 'assets/images/avec_nos_ressources_brsa.webp'
import avecNosRessourcesImagePassEmploi from 'assets/images/avec_nos_ressources_pass-emploi.webp'
import QrcodeAppStoreCEJ from 'assets/images/qrcode_app_store.svg'
import QrcodeAppStoreBRSA from 'assets/images/qrcode_brsa_app_store.svg'
import QrcodePlayStoreBRSA from 'assets/images/qrcode_brsa_play_store.svg'
import QrcodeAppStorePassEmploi from 'assets/images/qrcode_passemploi_app_store.svg'
import QrcodePlayStorePassEmploi from 'assets/images/qrcode_passemploi_play_store.svg'
import QrcodePlayStoreCEJ from 'assets/images/qrcode_play_store.svg'
import { ButtonStyle } from 'components/ui/Button/Button'
import ButtonLink from 'components/ui/Button/ButtonLink'
Expand All @@ -18,7 +18,7 @@ import IllustrationComponent, {
import ExternalLink from 'components/ui/Navigation/ExternalLink'
import {
estPoleEmploi,
estPoleEmploiBRSA,
estPassEmploi,
StructureConseiller,
} from 'interfaces/conseiller'
import { trackEvent } from 'utils/analytics/matomo'
Expand All @@ -30,60 +30,64 @@ export default function AidePage() {
const [conseiller] = useConseiller()
const [portefeuille] = usePortefeuille()

const conseillerEstBRSA = estPoleEmploiBRSA(conseiller)
const conseillerEstPassEmploi = estPassEmploi(conseiller)
const aDesBeneficiaires = portefeuille.length > 0

const QrcodeAppStore = conseillerEstBRSA
? QrcodeAppStoreBRSA
const QrcodeAppStore = conseillerEstPassEmploi
? QrcodeAppStorePassEmploi
: QrcodeAppStoreCEJ
const QrcodePlayStore = conseillerEstBRSA
? QrcodePlayStoreBRSA
const QrcodePlayStore = conseillerEstPassEmploi
? QrcodePlayStorePassEmploi
: QrcodePlayStoreCEJ

const urlQrcodeAppStore = conseillerEstBRSA
? process.env.NEXT_PUBLIC_APP_STORE_BRSA
const urlQrcodeAppStore = conseillerEstPassEmploi
? process.env.NEXT_PUBLIC_APP_STORE_PASS_EMPLOI
: process.env.NEXT_PUBLIC_APP_STORE_CEJ

const urlQrcodePlayStore = conseillerEstBRSA
? process.env.NEXT_PUBLIC_PLAY_STORE_BRSA
const urlQrcodePlayStore = conseillerEstPassEmploi
? process.env.NEXT_PUBLIC_PLAY_STORE_PASS_EMPLOI
: process.env.NEXT_PUBLIC_PLAY_STORE_CEJ

const urlSiteRessource = (() => {
const urlSiteRessource = ((): string => {
switch (conseiller.structure) {
case StructureConseiller.MILO:
return process.env.NEXT_PUBLIC_FAQ_MILO_EXTERNAL_LINK as string
case StructureConseiller.POLE_EMPLOI:
return process.env.NEXT_PUBLIC_FAQ_PE_EXTERNAL_LINK as string
case StructureConseiller.POLE_EMPLOI_BRSA:
return process.env.NEXT_PUBLIC_FAQ_PE_BRSA_EXTERNAL_LINK as string
case StructureConseiller.POLE_EMPLOI_AIJ:
return process.env.NEXT_PUBLIC_FAQ_PASS_EMPLOI_EXTERNAL_LINK as string
}
})()

const urlNousContacter = (() => {
const urlNousContacter = ((): string => {
switch (conseiller.structure) {
case StructureConseiller.MILO:
case StructureConseiller.POLE_EMPLOI_BRSA:
case StructureConseiller.POLE_EMPLOI_AIJ:
return urlSiteRessource + 'assistance/'
case StructureConseiller.POLE_EMPLOI:
return urlSiteRessource + 'formuler-une-demande/'
}
})()

const urlClubsTestsUtilisateurs = `${urlSiteRessource}${conseillerEstBRSA ? 'club-utilisateur/' : 'club-utilisateur-et-demandes-devolution/'}`
const urlClubsTestsUtilisateurs = `${urlSiteRessource}${conseillerEstPassEmploi ? 'club-utilisateur/' : 'club-utilisateur-et-demandes-devolution/'}`

const urlEmbarquerBeneficiaires = `${urlSiteRessource}${
conseillerEstBRSA ? 'embarquer-vos-beneficiaires/' : 'embarquer-vos-jeunes/'
conseillerEstPassEmploi
? 'embarquer-vos-beneficiaires/'
: 'embarquer-vos-jeunes/'
}`

const urlGuideRessources = `${urlSiteRessource}${
conseillerEstBRSA
conseillerEstPassEmploi
? 'guide-dutilisation/'
: 'ressources-documentaires/guides-dutilisation/'
}`

const urlVideos = urlSiteRessource + 'videos/'

const urlFAQ = `${urlSiteRessource}${conseillerEstBRSA ? 'foire-aux-questions/' : 'faq/'}`
const urlFAQ = `${urlSiteRessource}${conseillerEstPassEmploi ? 'foire-aux-questions/' : 'faq/'}`

async function trackEventAideEtRessources(action: string) {
trackEvent({
Expand All @@ -106,7 +110,7 @@ export default function AidePage() {
<div className='text-primary hover:text-primary_darken'>
<ExternalLink
label='Voir le site ressources'
href={urlSiteRessource!}
href={urlSiteRessource}
onClick={() => trackEventAideEtRessources('Voir le site ressources')}
/>
</div>
Expand Down Expand Up @@ -134,7 +138,7 @@ export default function AidePage() {
)}
</ul>
<ButtonLink
href={urlNousContacter!}
href={urlNousContacter}
style={ButtonStyle.PRIMARY}
externalLink={true}
className='mt-8 w-fit self-center'
Expand Down Expand Up @@ -180,7 +184,7 @@ export default function AidePage() {
<p>
Retrouvez toutes les ressources vidéos, guide, flyers, pour
aider votre bénéficiaire à prendre en main l’application{' '}
{conseillerEstBRSA ? 'pass emploi' : 'du CEJ'}
{conseillerEstPassEmploi ? 'pass emploi' : 'du CEJ'}
</p>
<ButtonLink
href={urlEmbarquerBeneficiaires}
Expand All @@ -197,31 +201,32 @@ export default function AidePage() {
</div>
<Image
src={
conseillerEstBRSA
? avecNosRessourcesImageBRSA
conseillerEstPassEmploi
? avecNosRessourcesImagePassEmploi
: avecNosRessourcesImage
}
alt={`Flyer ”Se lancer sur ${conseillerEstBRSA ? 'pass emploi' : 'le CEJ'}” à retrouver sur le site ressources.`}
alt={`Flyer ”Se lancer sur ${conseillerEstPassEmploi ? 'pass emploi' : 'le CEJ'}” à retrouver sur le site ressources.`}
className='w-1/3 object-contain'
/>
</div>
</li>
<li className='flex flex-col w-full px-16 py-4'>
<h4 className='text-m-bold mb-2'>
Avec le mode démo {conseillerEstBRSA ? 'pass emploi' : 'du CEJ'}
Avec le mode démo{' '}
{conseillerEstPassEmploi ? 'pass emploi' : 'du CEJ'}
</h4>
<div className='flex gap-16'>
<div className='flex flex-col justify-between'>
<p className='mb-2'>
Il vous permet de visualiser l’application{' '}
{conseillerEstBRSA ? 'pass emploi' : 'du CEJ'} utilisée par
vos bénéficiaires.
{conseillerEstPassEmploi ? 'pass emploi' : 'du CEJ'} utilisée
par vos bénéficiaires.
</p>
<p className='mb-2'>
Pour accéder au mode démo, vous devez télécharger
l’application sur le store de votre choix puis{' '}
<strong>appuyer 3 fois sur le logo</strong>
{conseillerEstBRSA
{conseillerEstPassEmploi
? 'pass emploi'
: 'Contrat d’Engagement Jeune'}
” sur l’écran de connexion.
Expand All @@ -236,7 +241,7 @@ export default function AidePage() {
<QrcodeAppStore focusable={false} aria-hidden={true} />
<a
href={urlQrcodeAppStore}
className='text-center text-primary underline inline-flex items-center hover:text-primary hover:text-primary_darken'
className='text-center text-primary underline inline-flex items-center hover:text-primary_darken'
target='_blank'
rel='noreferrer noopener'
>
Expand Down
7 changes: 3 additions & 4 deletions app/(connected)/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import React, { ReactNode } from 'react'

import { MODAL_ROOT_ID } from 'components/ids'
import LienEvitement from 'components/LienEvitement'
import { estPoleEmploiBRSA } from 'interfaces/conseiller'
import { estPassEmploi } from 'interfaces/conseiller'
import { getConseillerServerSide } from 'services/conseiller.service'
import { getJeunesDuConseillerServerSide } from 'services/jeunes.service'
import AppContextProviders from 'utils/AppContextProviders'
Expand All @@ -13,8 +13,7 @@ export async function generateMetadata(): Promise<Metadata> {
const { accessToken, user } = await getMandatorySessionServerSide()
const conseiller = await getConseillerServerSide(user, accessToken)
const siteTitle =
'Espace conseiller ' +
(estPoleEmploiBRSA(conseiller) ? 'pass emploi' : 'CEJ')
'Espace conseiller ' + (estPassEmploi(conseiller) ? 'pass emploi' : 'CEJ')

return { title: { template: '%s - ' + siteTitle, default: siteTitle } }
}
Expand All @@ -30,7 +29,7 @@ export default async function LayoutWhenConnected({
getConseillerServerSide(user, accessToken),
getJeunesDuConseillerServerSide(user.id, accessToken),
])
const theme = estPoleEmploiBRSA(conseiller) ? 'brsa' : 'cej'
const theme = estPassEmploi(conseiller) ? 'pass-emploi' : 'cej'

return (
<>
Expand Down
Loading

0 comments on commit e773f92

Please sign in to comment.