Skip to content

Commit

Permalink
fix: simplification code + suppression code non utilisé (#1198)
Browse files Browse the repository at this point in the history
  • Loading branch information
remy-auricoste authored Apr 24, 2024
1 parent 68cf35e commit 1659fff
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 116 deletions.
24 changes: 8 additions & 16 deletions server/src/http/controllers/formations.controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -92,20 +92,8 @@ export default (server: Server) => {
async (req, res) => {
const { id } = req.params
const { caller } = req.query
const result = await getFormationQuery({
id,
caller,
})

if ("error" in result) {
if (result.error === "wrong_parameters") {
res.status(400)
} else if (result.error === "not_found") {
res.status(404)
} else {
res.status(500)
}
} else {
try {
const result = await getFormationQuery({ id })
if (caller) {
trackApiCall({
caller,
Expand All @@ -115,9 +103,13 @@ export default (server: Server) => {
response: "OK",
})
}
return res.send(result)
} catch (err) {
if (caller) {
trackApiCall({ caller, api_path: "formationV1/formation", response: "Error" })
}
throw err
}

return res.send(result)
}
)
}
24 changes: 8 additions & 16 deletions server/src/http/controllers/formations.controller.v2.ts
Original file line number Diff line number Diff line change
Expand Up @@ -92,20 +92,8 @@ export default (server: Server) => {
async (req, res) => {
const { id } = req.params
const { caller } = req.query
const result = await getFormationQuery({
id,
caller,
})

if ("error" in result) {
if (result.error === "wrong_parameters") {
res.status(400)
} else if (result.error === "not_found") {
res.status(404)
} else {
res.status(500)
}
} else {
try {
const result = await getFormationQuery({ id })
if (caller) {
trackApiCall({
caller,
Expand All @@ -115,9 +103,13 @@ export default (server: Server) => {
response: "OK",
})
}
return res.send(result)
} catch (err) {
if (caller) {
trackApiCall({ caller, api_path: "formationV1/formation", response: "Error" })
}
throw err
}

return res.send(result)
}
)
server.get(
Expand Down
30 changes: 0 additions & 30 deletions server/src/services/constant.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,29 +8,9 @@ export enum RECRUITER_STATUS {
EN_ATTENTE_VALIDATION = "En attente de validation",
}

export const KEY_GENERATOR_PARAMS = ({ length, symbols, numbers }) => {
return {
length: length ?? 50,
strict: true,
numbers: numbers ?? true,
symbols: symbols ?? true,
lowercase: true,
uppercase: false,
excludeSimilarCharacters: true,
exclude: '!"_%£$€*¨^=+~ß(){}[]§;,./:`@#&|<>?"',
}
}
export const ENTREPRISE_DELEGATION = "ENTREPRISE_DELEGATION"

export const ADMIN = "ADMIN"
export const ENTREPRISE = "ENTREPRISE"
export const CFA = "CFA"
export const OPCO = "OPCO"
export const REGEX = {
SIRET: /^([0-9]{9}|[0-9]{14})$/,
GEO: /^(-?\d+(\.\d+)?),\s*(-?\d+(\.\d+)?)$/,
TELEPHONE: /^[0-9]{10}$/,
}

export const NIVEAUX_POUR_LBA = {
INDIFFERENT: "Indifférent",
Expand All @@ -56,13 +36,3 @@ export enum UNSUBSCRIBE_EMAIL_ERRORS {
ETABLISSEMENTS_MULTIPLES = "ETABLISSEMENTS_MULTIPLES",
WRONG_PARAMETERS = "WRONG_PARAMETERS",
}

export const ROLES = {
candidat: "candidat",
cfa: "cfa",
administrator: "administrator",
}

export type IRoles = typeof ROLES

export type IRole = IRoles[keyof IRoles]
67 changes: 13 additions & 54 deletions server/src/services/formation.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ const minimalDataMongoFields = {
/**
* Récupère les formations matchant les critères en paramètre depuis la mongo
*/
export const getFormations = async ({
const getFormations = async ({
romes,
romeDomain,
coords,
Expand Down Expand Up @@ -88,10 +88,6 @@ export const getFormations = async ({

const now = new Date()

// tags contient les années de démarrage des sessions. règle métier : année en cours, année à venir et année passée OU année + 2 selon qu'on
// est en septembre ou plus tôt dans l'année
const tags = [now.getFullYear(), now.getFullYear() + 1, now.getFullYear() + (now.getMonth() < 8 ? -1 : 2)]

const query: any = {}

if (romes) {
Expand All @@ -104,14 +100,15 @@ export const getFormations = async ({
}
}

// tags contient les années de démarrage des sessions. règle métier : année en cours, année à venir et année passée OU année + 2 selon qu'on
// est en septembre ou plus tôt dans l'année
const tags = [now.getFullYear(), now.getFullYear() + 1, now.getFullYear() + (now.getMonth() < 8 ? -1 : 2)]
query.tags = { $in: tags.map((tag) => tag.toString()) }

if (diploma) {
query.niveau = getDiplomaIndexName(diploma)
}

let formations: any[] = []

const stages: any[] = []

if (isMinimalData) {
Expand All @@ -122,6 +119,7 @@ export const getFormations = async ({
stages.push({ $project: { objectif: 0, contenu: 0 } })
}

let formations: any[] = []
if (coords) {
stages.push({
$limit: limit,
Expand Down Expand Up @@ -151,21 +149,6 @@ export const getFormations = async ({
return formations
}

/**
* Retourne une formation provenant de la collection des formationsCatalogues
* @param {string} id l'identifiant de la formation
* @returns {Promise<IApiError | IFormationCatalogue[]>}
*/
const getFormation = async ({ id }: { id: string }) => FormationCatalogue.findOne({ cle_ministere_educatif: id })

/**
* Retourne une formation du catalogue transformée en LbaItem
*/
const getOneFormationFromId = async ({ id }: { id: string }): Promise<ILbaItemFormation[]> => {
const formation = await getFormation({ id })
return formation ? [transformFormation(formation)] : []
}

/**
* Récupère les formations matchant les critères en paramètre sur une région ou un département donné
* @param {string[]} romes un tableau de codes ROME
Expand Down Expand Up @@ -214,7 +197,7 @@ const getRegionFormations = async ({
$regex: new RegExp(`^${departement}`, "i"),
}
} else if (region) {
query.code_postal = getRegionQueryFragment(region)
query.code_postal = { $in: regionCodeToDepartmentList[region].map((departement) => new RegExp(`^${departement}`)) }
}

const now = new Date()
Expand All @@ -225,8 +208,6 @@ const getRegionFormations = async ({
query.niveau = getDiplomaIndexName(diploma)
}

let formations: any[] = []

const stages: any[] = []

if (options.indexOf("with_description") < 0) {
Expand All @@ -242,8 +223,7 @@ const getRegionFormations = async ({
},
})

formations = await FormationCatalogue.aggregate(stages)

const formations: any[] = await FormationCatalogue.aggregate(stages)
if (formations.length === 0 && !caller) {
await notifyToSlack({ subject: "FORMATION", message: `Aucune formation par région trouvée pour les romes ${romes} ou le domaine ${romeDomain}.` })
}
Expand Down Expand Up @@ -337,8 +317,9 @@ export const deduplicateFormations = (formations: IFormationCatalogue[]): IForma
const transformFormations = (rawFormations: IFormationCatalogue[], isMinimalData: boolean): ILbaItemFormation[] => {
const formations: ILbaItemFormation[] = []
if (rawFormations.length) {
const transformFct = isMinimalData ? transformFormationWithMinimalData : transformFormation
for (let i = 0; i < rawFormations.length; ++i) {
formations.push(isMinimalData ? transformFormationWithMinimalData(rawFormations[i]) : transformFormation(rawFormations[i]))
formations.push(transformFct(rawFormations[i]))
}
}

Expand Down Expand Up @@ -598,21 +579,10 @@ export const getFormationsQuery = async ({
/**
* Retourne une formation identifiée par son id
*/
export const getFormationQuery = async ({ id, caller }: { id: string; caller?: string }): Promise<IApiError | { results: ILbaItemFormation[] }> => {
try {
const formation = await getOneFormationFromId({ id })
return {
results: formation,
}
} catch (err) {
sentryCaptureException(err)

if (caller) {
trackApiCall({ caller, api_path: "formationV1/formation", response: "Error" })
}

return { error: "internal_error" }
}
export const getFormationQuery = async ({ id }: { id: string }): Promise<{ results: ILbaItemFormation[] }> => {
const formation = await FormationCatalogue.findOne({ cle_ministere_educatif: id })
const formations = formation ? [transformFormation(formation)] : []
return { results: formations }
}

/**
Expand Down Expand Up @@ -669,17 +639,6 @@ export const getFormationsParRegionQuery = async ({
}
}

/**
* retourne le morceau de requête mongo correspondant à un filtrage sur une région donné
* @param {string} region le code de la région
* @returns {object}
*/
const getRegionQueryFragment = (region: string): object => {
return {
$in: regionCodeToDepartmentList[region].map((departement) => new RegExp(`^${departement}`)),
}
}

/**
* tri alphabétique de formations sur le title (primaire) ou le company.name (secondaire )
* lorsque les formations ne sont pas déjà triées sur la distance par rapport à un point de recherche
Expand Down

0 comments on commit 1659fff

Please sign in to comment.