Skip to content
Open
Show file tree
Hide file tree
Changes from all 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
8 changes: 7 additions & 1 deletion backend/controllers/followups.ts
Original file line number Diff line number Diff line change
Expand Up @@ -91,12 +91,18 @@ export function getFollowupDataForSurvey(req: Request, res: Response) {
usefullnessSurvey?.answers.find((answer) => answer.id === "wasUseful")
?.value ?? true // La simulation est utile par défaut

const depcomAnswer = req.followup.simulation?.answers?.all?.find(
(answer) => answer.entityName === "menage" && answer.fieldName === "depcom",
)
const simulationCommune = depcomAnswer?.value._nomCommune || ""

res.send({
createdAt: req.followup.createdAt,
benefits: req.followup.benefits.filter(
(benefit) => benefit.id in Benefits.benefitsMap,
),
simulationWasUseful,
simulationCommune,
} as FetchSurvey)
}

Expand Down Expand Up @@ -151,7 +157,7 @@ export async function followupByAccessToken(
) {
const followup: Followup | null = await Followups.findOne({
accessToken,
})
}).populate("simulation")
if (!followup) return res.sendStatus(ErrorStatus.NotFound)
req.followup = followup
next()
Expand Down
1 change: 1 addition & 0 deletions lib/types/survey.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,4 +34,5 @@ interface FetchSurvey {
amount: number | boolean
}[]
simulationWasUseful: boolean
simulationCommune?: string
}
14 changes: 8 additions & 6 deletions src/components/trouver-interlocuteur.vue
Original file line number Diff line number Diff line change
@@ -1,21 +1,23 @@
<template>
<div class="fr-container fr-px-0 fr-mb-0 fr-py-2w">
<div class="fr-container fr-px-0 fr-mb-0">
<div class="fr-grid-row fr-grid-row--gutters fr-grid-row--middle">
<div class="fr-col">
<h2 class="fr-text--lead">Trouver de l'aide près de chez moi</h2>
<div class="fr-col-12 fr-col-lg-7">
<h2 class="fr-text--lead">Trouver de l'aide près de chez moi ?</h2>
<p
>Pour vous aider dans vos démarches, n'hésitez pas à consulter la
liste des lieux où vous pourrez être accompagné.</p
>
</div>
<div class="fr-col-12 fr-col-md-3">
<ul class="fr-btns-group fr-btns-group--inline-md">
<div class="fr-col-12 fr-col-lg-5">
<ul
class="fr-btns-group fr-btns-group--inline-md fr-btns-group--center"
>
<li>
<router-link
:to="{
name: 'resultatsLieuxGeneriques',
}"
class="fr-btn"
class="fr-btn fr-icon-map-pin-2-line fr-btn--icon-right fr-btn--icon-center fr-px-3v fr-btn--multiline"
data-testid="nearby-help"
>
Trouver de l'aide
Expand Down
3 changes: 3 additions & 0 deletions src/composables/use-followup-survey-data.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ export function useFollowupSurveyData(token: string) {
const benefitsWithChoice = ref<BenefitWithChoice[]>([])
const simulationWasUseful = ref<boolean>(false)
const loading = ref<boolean>(true)
const simulationCommune = ref<string>("")
const store = useStore()
const router = useRouter()

Expand All @@ -26,6 +27,7 @@ export function useFollowupSurveyData(token: string) {
"DD MMMM YYYY",
)
simulationWasUseful.value = followupSurveyData.simulationWasUseful
simulationCommune.value = followupSurveyData.simulationCommune || ""
const benefits: StandardBenefit[] = followupSurveyData.benefits.map(
(benefit) => ({
...getBenefit(benefit.id),
Expand Down Expand Up @@ -57,5 +59,6 @@ export function useFollowupSurveyData(token: string) {
benefitsWithChoice,
simulationWasUseful,
loading,
simulationCommune,
}
}
57 changes: 55 additions & 2 deletions src/views/suivi.vue
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,26 @@
minutes par une personne de notre équipe.</p
>
</div>
<div v-if="showFailedAnswerBlock">
<hr class="fr-my-4w" />
<TrouverInterlocuteur />
<div v-if="showCityAccompanimentBlock">
<hr class="fr-my-4w" />
<p>
{{ currentAccompanimentLink?.title }} peut aussi vous
accompagner gratuitement dans vos démarches. N'hésitez pas à
prendre rendez-vous :
</p>
<a
class="fr-btn fr-btn--secondary fr-btn--lg"
:href="currentAccompanimentLink?.link"
target="_blank"
rel="noopener noreferrer"
>
Je prends rendez-vous pour me faire aider dans mes démarches
</a>
</div>
</div>
</div>
</div>
</div>
Expand Down Expand Up @@ -196,6 +216,7 @@ import StatisticsMixin from "@/mixins/statistics.js"
import { EventAction, EventCategory } from "@lib/enums/event.js"
import { useFollowupSurveyData } from "@/composables/use-followup-survey-data.js"
import ABTestingService from "@/plugins/ab-testing-service"
import TrouverInterlocuteur from "@/components/trouver-interlocuteur.vue"

const choices = [
{ value: "already", label: "Rien, j'en bénéficiais déjà." },
Expand All @@ -219,8 +240,13 @@ function showReasonQuestion(droit) {

const route = useRoute()
const submitted = ref(false)
const { followupCreatedAt, benefitsWithChoice, simulationWasUseful, loading } =
useFollowupSurveyData(route.query.token as string)
const {
followupCreatedAt,
benefitsWithChoice,
simulationWasUseful,
loading,
simulationCommune,
} = useFollowupSurveyData(route.query.token as string)

const isComplete = computed(() => {
const choiceValues = benefitsWithChoice.value.map(
Expand All @@ -236,6 +262,29 @@ const showPlansToAskQuestion = (choiceValue) =>
choiceValue === "nothing" &&
ABTestingService.getValues().plans_to_ask_question === "show"

const accompanimentLinks: Record<string, { title: string; link: string }> = {
Montpellier: {
title: "Le CCAS de Montpellier",
link: "https://rdv.anct.gouv.fr/org/259/ccas-montpellier",
},
Strasbourg: {
title: "La ville de Strasbourg",
link: "https://demarches.strasbourg.eu/rdv-tel-1jeune1solution/",
},
Aubervilliers: {
title: "Le CCAS d'Aubervilliers",
link: "https://rdv.anct.gouv.fr/org/166/ccas-aubervilliers",
},
}

const showCityAccompanimentBlock = computed(() => {
return simulationCommune.value in accompanimentLinks
})

const currentAccompanimentLink = computed(() => {
return accompanimentLinks[simulationCommune.value]
})

const showAccompanimentBlock = computed(() => {
// To restore when the budget will be back
// return benefitsWithChoice.value.some(
Expand All @@ -244,6 +293,10 @@ const showAccompanimentBlock = computed(() => {
return false
})

const showFailedAnswerBlock = computed(() =>
benefitsWithChoice.value.some((droit) => droit.choiceValue === "failed"),
)

const accompanimentClickEvent = computed(() => {
return {
name: route.path,
Expand Down
Loading