Skip to content

Commit

Permalink
fix: filtres formations spécifique OU et pas ET
Browse files Browse the repository at this point in the history
  • Loading branch information
LucasDetre committed Dec 9, 2024
1 parent eb09ddb commit d6a2429
Show file tree
Hide file tree
Showing 7 changed files with 157 additions and 123 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,12 @@ export const getCorrectionsQuery = async ({
])
)
)
.leftJoin("actionPrioritaire", (join) =>
join
.onRef("actionPrioritaire.cfd", "=", "demande.cfd")
.onRef("actionPrioritaire.codeDispositif", "=", "demande.codeDispositif")
.onRef("actionPrioritaire.codeRegion", "=", "demande.codeRegion")
)
.select((eb) => [
eb.fn.count<number>("correction.id").over().as("count"),
"demande.uai",
Expand Down Expand Up @@ -271,23 +277,22 @@ export const getCorrectionsQuery = async ({
})
.$call((q) => {
if (formationSpecifique?.length) {
if (formationSpecifique.includes(TypeFormationSpecifiqueEnum["Action prioritaire"])) {
return q.innerJoin("actionPrioritaire", (join) =>
join
.onRef("actionPrioritaire.cfd", "=", "demande.cfd")
.onRef("actionPrioritaire.codeDispositif", "=", "demande.codeDispositif")
.onRef("actionPrioritaire.codeRegion", "=", "demande.codeRegion")
);
}
if (formationSpecifique.includes(TypeFormationSpecifiqueEnum["Transition écologique"])) {
q = q.where("formationView.isTransitionEcologique", "=", true);
}
if (formationSpecifique.includes(TypeFormationSpecifiqueEnum["Transition démographique"])) {
q = q.where("formationView.isTransitionDemographique", "=", true);
}
if (formationSpecifique.includes(TypeFormationSpecifiqueEnum["Transition numérique"])) {
q = q.where("formationView.isTransitionNumerique", "=", true);
}
return q.where((w) =>
w.or([
formationSpecifique.includes(TypeFormationSpecifiqueEnum["Action prioritaire"])
? w("actionPrioritaire.cfd", "is not", null)
: sql.val(false),
formationSpecifique.includes(TypeFormationSpecifiqueEnum["Transition écologique"])
? w("formationView.isTransitionEcologique", "=", true)
: sql.val(false),
formationSpecifique.includes(TypeFormationSpecifiqueEnum["Transition démographique"])
? w("formationView.isTransitionDemographique", "=", true)
: sql.val(false),
formationSpecifique.includes(TypeFormationSpecifiqueEnum["Transition numérique"])
? w("formationView.isTransitionNumerique", "=", true)
: sql.val(false),
])
);
}
return q;
})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,12 @@ export const getStatsCorrectionsQuery = async ({
.leftJoin("user", "user.id", "demande.createdBy")
.leftJoin("niveauDiplome", "niveauDiplome.codeNiveauDiplome", "formationView.codeNiveauDiplome")
.leftJoin("nsf", "nsf.codeNsf", "formationView.codeNsf")
.leftJoin("actionPrioritaire", (join) =>
join
.onRef("actionPrioritaire.cfd", "=", "demande.cfd")
.onRef("actionPrioritaire.codeDispositif", "=", "demande.codeDispositif")
.onRef("actionPrioritaire.codeRegion", "=", "demande.codeRegion")
)
.select((eb) => [
eb.fn.count<number>("correction.id").as("nbCorrections"),
eb.fn
Expand Down Expand Up @@ -210,23 +216,22 @@ export const getStatsCorrectionsQuery = async ({
})
.$call((q) => {
if (formationSpecifique?.length) {
if (formationSpecifique.includes(TypeFormationSpecifiqueEnum["Action prioritaire"])) {
return q.innerJoin("actionPrioritaire", (join) =>
join
.onRef("actionPrioritaire.cfd", "=", "demande.cfd")
.onRef("actionPrioritaire.codeDispositif", "=", "demande.codeDispositif")
.onRef("actionPrioritaire.codeRegion", "=", "demande.codeRegion")
);
}
if (formationSpecifique.includes(TypeFormationSpecifiqueEnum["Transition écologique"])) {
q = q.where("formationView.isTransitionEcologique", "=", true);
}
if (formationSpecifique.includes(TypeFormationSpecifiqueEnum["Transition démographique"])) {
q = q.where("formationView.isTransitionDemographique", "=", true);
}
if (formationSpecifique.includes(TypeFormationSpecifiqueEnum["Transition numérique"])) {
q = q.where("formationView.isTransitionNumerique", "=", true);
}
return q.where((w) =>
w.or([
formationSpecifique.includes(TypeFormationSpecifiqueEnum["Action prioritaire"])
? w("actionPrioritaire.cfd", "is not", null)
: sql.val(false),
formationSpecifique.includes(TypeFormationSpecifiqueEnum["Transition écologique"])
? w("formationView.isTransitionEcologique", "=", true)
: sql.val(false),
formationSpecifique.includes(TypeFormationSpecifiqueEnum["Transition démographique"])
? w("formationView.isTransitionDemographique", "=", true)
: sql.val(false),
formationSpecifique.includes(TypeFormationSpecifiqueEnum["Transition numérique"])
? w("formationView.isTransitionNumerique", "=", true)
: sql.val(false),
])
);
}
return q;
})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,12 @@ export const getDemandesRestitutionIntentionsQuery = async ({
])
)
)
.leftJoin("actionPrioritaire", (join) =>
join
.onRef("actionPrioritaire.cfd", "=", "demande.cfd")
.onRef("actionPrioritaire.codeDispositif", "=", "demande.codeDispositif")
.onRef("actionPrioritaire.codeRegion", "=", "demande.codeRegion")
)
.selectAll("demande")
.select((eb) => [
"dataFormation.libelleFormation",
Expand Down Expand Up @@ -242,23 +248,22 @@ export const getDemandesRestitutionIntentionsQuery = async ({
})
.$call((q) => {
if (formationSpecifique?.length) {
if (formationSpecifique.includes(TypeFormationSpecifiqueEnum["Action prioritaire"])) {
q = q.innerJoin("actionPrioritaire", (join) =>
join
.onRef("actionPrioritaire.cfd", "=", "demande.cfd")
.onRef("actionPrioritaire.codeDispositif", "=", "demande.codeDispositif")
.onRef("actionPrioritaire.codeRegion", "=", "demande.codeRegion")
);
}
if (formationSpecifique.includes(TypeFormationSpecifiqueEnum["Transition écologique"])) {
q = q.where("formationView.isTransitionEcologique", "=", true);
}
if (formationSpecifique.includes(TypeFormationSpecifiqueEnum["Transition démographique"])) {
q = q.where("formationView.isTransitionDemographique", "=", true);
}
if (formationSpecifique.includes(TypeFormationSpecifiqueEnum["Transition numérique"])) {
q = q.where("formationView.isTransitionNumerique", "=", true);
}
return q.where((w) =>
w.or([
formationSpecifique.includes(TypeFormationSpecifiqueEnum["Action prioritaire"])
? w("actionPrioritaire.cfd", "is not", null)
: sql.val(false),
formationSpecifique.includes(TypeFormationSpecifiqueEnum["Transition écologique"])
? w("formationView.isTransitionEcologique", "=", true)
: sql.val(false),
formationSpecifique.includes(TypeFormationSpecifiqueEnum["Transition démographique"])
? w("formationView.isTransitionDemographique", "=", true)
: sql.val(false),
formationSpecifique.includes(TypeFormationSpecifiqueEnum["Transition numérique"])
? w("formationView.isTransitionNumerique", "=", true)
: sql.val(false),
])
);
}
return q;
})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,12 @@ export const getFormationEtablissementsQuery = async ({
])
)
)
.leftJoin("actionPrioritaire", (join) =>
join
.onRef("actionPrioritaire.cfd", "=", "formationEtablissement.cfd")
.onRef("actionPrioritaire.codeDispositif", "=", "formationEtablissement.codeDispositif")
.onRef("actionPrioritaire.codeRegion", "=", "etablissement.codeRegion")
)
.select((eb) => [
sql<number>`COUNT(*) OVER()`.as("count"),
"etablissement.libelleEtablissement",
Expand Down Expand Up @@ -324,23 +330,22 @@ export const getFormationEtablissementsQuery = async ({
})
.$call((q) => {
if (formationSpecifique?.length) {
if (formationSpecifique.includes(TypeFormationSpecifiqueEnum["Action prioritaire"])) {
q = q.innerJoin("actionPrioritaire", (join) =>
join
.onRef("actionPrioritaire.cfd", "=", "formationEtablissement.cfd")
.onRef("actionPrioritaire.codeDispositif", "=", "formationEtablissement.codeDispositif")
.onRef("actionPrioritaire.codeRegion", "=", "etablissement.codeRegion")
);
}
if (formationSpecifique.includes(TypeFormationSpecifiqueEnum["Transition écologique"])) {
q = q.where("formationView.isTransitionEcologique", "=", true);
}
if (formationSpecifique.includes(TypeFormationSpecifiqueEnum["Transition démographique"])) {
q = q.where("formationView.isTransitionDemographique", "=", true);
}
if (formationSpecifique.includes(TypeFormationSpecifiqueEnum["Transition numérique"])) {
q = q.where("formationView.isTransitionNumerique", "=", true);
}
return q.where((w) =>
w.or([
formationSpecifique.includes(TypeFormationSpecifiqueEnum["Action prioritaire"])
? w("actionPrioritaire.cfd", "is not", null)
: sql.val(false),
formationSpecifique.includes(TypeFormationSpecifiqueEnum["Transition écologique"])
? w("formationView.isTransitionEcologique", "=", true)
: sql.val(false),
formationSpecifique.includes(TypeFormationSpecifiqueEnum["Transition démographique"])
? w("formationView.isTransitionDemographique", "=", true)
: sql.val(false),
formationSpecifique.includes(TypeFormationSpecifiqueEnum["Transition numérique"])
? w("formationView.isTransitionNumerique", "=", true)
: sql.val(false),
])
);
}
return q;
})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,14 @@ export const getFormationsQuery = async ({
join.onRef("formationHistorique.ancienCFD", "=", "formationView.cfd").on(isScolaireFormationHistorique)
)
.leftJoin("nsf", "nsf.codeNsf", "formationView.codeNsf")
.leftJoin("actionPrioritaire", (join) =>
join
.onRef("actionPrioritaire.cfd", "=", "formationEtablissement.cfd")
.onRef("actionPrioritaire.codeDispositif", "=", "formationEtablissement.codeDispositif")
.$call((join) =>
codeRegion ? join.onRef("actionPrioritaire.codeRegion", "=", "etablissement.codeRegion") : join
)
)
.$call((eb) => {
if (!codeRegion) return eb;
return eb
Expand Down Expand Up @@ -329,25 +337,22 @@ export const getFormationsQuery = async ({
})
.$call((q) => {
if (formationSpecifique?.length) {
if (formationSpecifique.includes(TypeFormationSpecifiqueEnum["Action prioritaire"])) {
q = q.innerJoin("actionPrioritaire", (join) =>
join
.onRef("actionPrioritaire.cfd", "=", "formationEtablissement.cfd")
.onRef("actionPrioritaire.codeDispositif", "=", "formationEtablissement.codeDispositif")
.$call((join) =>
codeRegion ? join.onRef("actionPrioritaire.codeRegion", "=", "etablissement.codeRegion") : join
)
);
}
if (formationSpecifique.includes(TypeFormationSpecifiqueEnum["Transition écologique"])) {
q = q.where("formationView.isTransitionEcologique", "=", true);
}
if (formationSpecifique.includes(TypeFormationSpecifiqueEnum["Transition démographique"])) {
q = q.where("formationView.isTransitionDemographique", "=", true);
}
if (formationSpecifique.includes(TypeFormationSpecifiqueEnum["Transition numérique"])) {
q = q.where("formationView.isTransitionNumerique", "=", true);
}
return q.where((w) =>
w.or([
formationSpecifique.includes(TypeFormationSpecifiqueEnum["Action prioritaire"])
? w("actionPrioritaire.cfd", "is not", null)
: sql.val(false),
formationSpecifique.includes(TypeFormationSpecifiqueEnum["Transition écologique"])
? w("formationView.isTransitionEcologique", "=", true)
: sql.val(false),
formationSpecifique.includes(TypeFormationSpecifiqueEnum["Transition démographique"])
? w("formationView.isTransitionDemographique", "=", true)
: sql.val(false),
formationSpecifique.includes(TypeFormationSpecifiqueEnum["Transition numérique"])
? w("formationView.isTransitionNumerique", "=", true)
: sql.val(false),
])
);
}
return q;
})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,12 @@ const getStatsRestitutionIntentionsQuery = async ({
])
)
)
.leftJoin("actionPrioritaire", (join) =>
join
.onRef("actionPrioritaire.cfd", "=", "demande.cfd")
.onRef("actionPrioritaire.codeDispositif", "=", "demande.codeDispositif")
.onRef("actionPrioritaire.codeRegion", "=", "demande.codeRegion")
)
.select((eb) =>
jsonBuildObject({
total: eb.fn.coalesce(eb.fn.sum<number>(countPlacesNonColoreesTransformees(eb)), eb.val(0)),
Expand Down Expand Up @@ -319,23 +325,22 @@ const getStatsRestitutionIntentionsQuery = async ({
})
.$call((q) => {
if (formationSpecifique?.length) {
if (formationSpecifique.includes(TypeFormationSpecifiqueEnum["Action prioritaire"])) {
q = q.innerJoin("actionPrioritaire", (join) =>
join
.onRef("actionPrioritaire.cfd", "=", "demande.cfd")
.onRef("actionPrioritaire.codeDispositif", "=", "demande.codeDispositif")
.onRef("actionPrioritaire.codeRegion", "=", "demande.codeRegion")
);
}
if (formationSpecifique.includes(TypeFormationSpecifiqueEnum["Transition écologique"])) {
q = q.where("formationView.isTransitionEcologique", "=", true);
}
if (formationSpecifique.includes(TypeFormationSpecifiqueEnum["Transition démographique"])) {
q = q.where("formationView.isTransitionDemographique", "=", true);
}
if (formationSpecifique.includes(TypeFormationSpecifiqueEnum["Transition numérique"])) {
q = q.where("formationView.isTransitionNumerique", "=", true);
}
return q.where((w) =>
w.or([
formationSpecifique.includes(TypeFormationSpecifiqueEnum["Action prioritaire"])
? w("actionPrioritaire.cfd", "is not", null)
: sql.val(false),
formationSpecifique.includes(TypeFormationSpecifiqueEnum["Transition écologique"])
? w("formationView.isTransitionEcologique", "=", true)
: sql.val(false),
formationSpecifique.includes(TypeFormationSpecifiqueEnum["Transition démographique"])
? w("formationView.isTransitionDemographique", "=", true)
: sql.val(false),
formationSpecifique.includes(TypeFormationSpecifiqueEnum["Transition numérique"])
? w("formationView.isTransitionNumerique", "=", true)
: sql.val(false),
])
);
}
return q;
})
Expand Down
42 changes: 23 additions & 19 deletions server/src/modules/data/utils/onDemande.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { expressionBuilder } from "kysely";
import { expressionBuilder, sql } from "kysely";
import { VoieEnum } from "shared";
import type { DemandeStatutType } from "shared/enum/demandeStatutEnum";
import { DemandeTypeEnum } from "shared/enum/demandeTypeEnum";
Expand Down Expand Up @@ -74,7 +74,12 @@ export const genericOnDemandes = ({
.leftJoin("formationView", (join) =>
join.onRef("formationView.cfd", "=", "demande.cfd").on("formationView.voie", "=", VoieEnum.scolaire)
)

.leftJoin("actionPrioritaire", (join) =>
join
.onRef("actionPrioritaire.cfd", "=", "demande.cfd")
.onRef("actionPrioritaire.codeDispositif", "=", "demande.codeDispositif")
.onRef("actionPrioritaire.codeRegion", "=", "demande.codeRegion")
)
.leftJoin("positionFormationRegionaleQuadrant", (join) =>
join.on((eb) =>
eb.and([
Expand Down Expand Up @@ -170,23 +175,22 @@ export const genericOnDemandes = ({
})
.$call((q) => {
if (formationSpecifique?.length) {
if (formationSpecifique.includes(TypeFormationSpecifiqueEnum["Action prioritaire"])) {
q = q.innerJoin("actionPrioritaire", (join) =>
join
.onRef("actionPrioritaire.cfd", "=", "demande.cfd")
.onRef("actionPrioritaire.codeDispositif", "=", "demande.codeDispositif")
.onRef("actionPrioritaire.codeRegion", "=", "demande.codeRegion")
);
}
if (formationSpecifique.includes(TypeFormationSpecifiqueEnum["Transition écologique"])) {
q = q.where("formationView.isTransitionEcologique", "=", true);
}
if (formationSpecifique.includes(TypeFormationSpecifiqueEnum["Transition démographique"])) {
q = q.where("formationView.isTransitionDemographique", "=", true);
}
if (formationSpecifique.includes(TypeFormationSpecifiqueEnum["Transition numérique"])) {
q = q.where("formationView.isTransitionNumerique", "=", true);
}
return q.where((w) =>
w.or([
formationSpecifique.includes(TypeFormationSpecifiqueEnum["Action prioritaire"])
? w("actionPrioritaire.cfd", "is not", null)
: sql.val(false),
formationSpecifique.includes(TypeFormationSpecifiqueEnum["Transition écologique"])
? w("formationView.isTransitionEcologique", "=", true)
: sql.val(false),
formationSpecifique.includes(TypeFormationSpecifiqueEnum["Transition démographique"])
? w("formationView.isTransitionDemographique", "=", true)
: sql.val(false),
formationSpecifique.includes(TypeFormationSpecifiqueEnum["Transition numérique"])
? w("formationView.isTransitionNumerique", "=", true)
: sql.val(false),
])
);
}
return q;
});

0 comments on commit d6a2429

Please sign in to comment.