Skip to content
This repository has been archived by the owner on May 20, 2019. It is now read-only.

Commit

Permalink
fix: code review
Browse files Browse the repository at this point in the history
  • Loading branch information
gonzalezad1 committed Sep 24, 2018
1 parent a713cad commit c3f25fa
Show file tree
Hide file tree
Showing 18 changed files with 309 additions and 383 deletions.
14 changes: 9 additions & 5 deletions db/migrations/20180913171101_triggerOnlandataireUpdate.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,17 @@
const { onUpdateTrigger } = require('../../knexfile')


exports.up = function(knex, Promise) {
return knex.schema
.alterTable("mandataires", function(table) {
})
.alterTable("mandataires", function(table) {})
.then(() => knex.raw(onUpdateTrigger("mandataires")));
};

exports.down = function(knex, Promise) {
return Promise.resolve();
};

const onUpdateTrigger = table => `
CREATE TRIGGER ${table}_updated_at
BEFORE UPDATE ON ${table}
FOR EACH ROW
WHEN (OLD. mesures_en_cours IS DISTINCT FROM NEW.mesures_en_cours)
EXECUTE PROCEDURE on_update_timestamp();
`;
19 changes: 13 additions & 6 deletions db/queries/email.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,17 @@
const knex = require("../knex.js");

function Mandataires() {
return knex("mandataires");
}

const getAll = () => Mandataires().select();
const mandataireProfilNotUpdateEmail = () =>
knex
.table("mandataires")
.select()
.where(
knex.raw(
"(date_mesure_update < current_date - interval '1 months' or date_mesure_update is null) and (email_send < current_date - interval '15 days' or email_send is null)"
)
);
// knex.raw(
// "select * from mandataires where (date_mesure_update < current_date - interval '1 months' or date_mesure_update is null) and (email_send < current_date - interval '15 days' or email_send is null);", [1]
// );

const updateMandataireMailSent = id =>
knex
Expand All @@ -13,6 +20,6 @@ const updateMandataireMailSent = id =>
.update({ email_send: new Date() });

module.exports = {
getAll,
mandataireProfilNotUpdateEmail,
updateMandataireMailSent
};
4 changes: 2 additions & 2 deletions db/queries/mandataires.js
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ const update = (mandataireID, updates) =>
.where("id", parseInt(mandataireID))
.update(updates);

const getCoordonneByPosteCode = userId =>
const getCoordonneesByPostCode = userId =>
knex
.from("geolocalisation_code_postal")
.where("code_postal", userId)
Expand All @@ -188,5 +188,5 @@ module.exports = {
getAllMandataires,
getAllByMandatairesFilter,
update,
getCoordonneByPosteCode
getCoordonneesByPostCode
};
4 changes: 2 additions & 2 deletions db/queries/mandatairesEtablissement.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ const getAllEtablissementsByMandataire = mandataireId =>
mandataire_id: parseInt(mandataireId)
});

const addMandataireToEtablissement = mandataireId =>
knex("mandataire_etablissements").insert(mandataireId);
const addMandataireToEtablissement = data =>
knex("mandataire_etablissements").insert(data);

const deleteMandataireEtablissement = showID =>
knex("mandataire_etablissements")
Expand Down
18 changes: 5 additions & 13 deletions db/queries/mesures.js
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ const getAllMesuresByMandatairesFilter = (
// });
// return allMesures;
// }
const getAllMesuresByPopUp = (ti_id, type) => {
const getMesuresByGeolocalisation = (ti_id, type) => {
const where = {
"mandataire_tis.ti_id": parseInt(ti_id),
status: "Mesure en cours"
Expand Down Expand Up @@ -237,7 +237,7 @@ const updateMesure = (where, updates) =>

const addMesure = data => knex("mesures").insert(data);

const getAllMesures = mandataireID =>
const getMesuresEnCoursMandataire = mandataireID =>
knex("mesures").where({
mandataire_id: parseInt(mandataireID),
status: "Mesure en cours"
Expand All @@ -258,23 +258,15 @@ const getAllMesuresEteinte = mandataireID =>
status: "Eteindre mesure"
});

const getPostecode = (codePostal, lat, lng) =>
knex("geolocalisation_code_postal").insert({
code_postal: codePostal,
latitude: lat,
longitude: lng
});

module.exports = {
getAllMesuresByMandataires,
getAllMesuresByMandatairesFilter,
getAllMesuresByPopUp,
getMesuresByGeolocalisation,
getAllMesuresByTis,
getAllMesuresByPopUpForMandataire,
updateMesure,
getAllMesuresEteinte,
getAllMesuresAttente,
getAllMesures,
addMesure,
getPostecode
getMesuresEnCoursMandataire,
addMesure
};
7 changes: 3 additions & 4 deletions db/queries/serviceAntennes.js
Original file line number Diff line number Diff line change
@@ -1,20 +1,19 @@
const knex = require("../knex.js");

const getAllAntennes = mandataireId =>
const getAllAntennesByMandataireId = mandataireId =>
knex("service_antennes").where({
mandataire_id: parseInt(mandataireId)
});

const addAntenne = mandataireId =>
knex("service_antennes").insert(mandataireId);
const addAntenne = data => knex("service_antennes").insert(data);

const deleteAntenne = where =>
knex("service_antennes")
.where(where)
.del();

module.exports = {
getAllAntennes,
getAllAntennesByMandataireId,
addAntenne,
deleteAntenne
};
9 changes: 1 addition & 8 deletions knexfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -47,12 +47,5 @@ module.exports = {
seeds: {
directory: __dirname + "/db/seeds/production"
}
},

onUpdateTrigger: table => `
CREATE TRIGGER ${table}_updated_at
BEFORE UPDATE ON ${table}
FOR EACH ROW
EXECUTE PROCEDURE on_update_timestamp();
`
}
};
6 changes: 4 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,10 @@
"eslint": "eslint *.js **/*.js --fix",
"migrate-and-start": "knex migrate:latest && npm start",
"seeds": "knex seed:run",
"migrate-seeds-and-start": "knex migrate:latest && npm run seeds && npm start",
"wait-migrate-and-start": "sleep 10 && knex migrate:latest && npm start"
"migrate-seeds-and-start":
"knex migrate:latest && npm run seeds && npm start",
"wait-migrate-and-start": "sleep 10 && knex migrate:latest && npm start",
"email-relance": "node ./scripts/relance-mandataires-inactifs"
},
"dependencies": {
"bcryptjs": "^2.4.3",
Expand Down
14 changes: 7 additions & 7 deletions routes/commentaires.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ const {
isMandataireInTi
} = require("../db/queries/commentaires");

const {getTiByUserId} = require("../db/queries/tis")
const { getTiByUserId } = require("../db/queries/tis");

/** @swagger
* /mandataires/1/commentaires:
Expand Down Expand Up @@ -99,21 +99,21 @@ router.post(
if (!isMandataireInTi) {
return next(new Error(401));
}
addCommentaire({
return addCommentaire({
comment: req.body.comment,
mandataire_id: req.params.mandataireId,
ti_id: ti.id
})
.then(function(commentaireID) {
.then(function() {
return getAllCommentaires(req.params.mandataireId, ti.id);
})
.then(function(commentaires) {
res.status(200).json(commentaires);
})
.catch(function(error) {
console.log(error);
next(error);
});
})
.catch(function(error) {
console.log(error);
next(error);
});
});
}
Expand Down
101 changes: 1 addition & 100 deletions routes/email.js
Original file line number Diff line number Diff line change
@@ -1,108 +1,10 @@
const express = require("express");
const { format, addMonths, addDays } = require("date-fns");

const { sendEmail } = require("../email");
const router = express.Router();

const isBefore = require("date-fns/is_before");
const isAfter = require("date-fns/is_after");

const isLate = mandataire => {
const hasUpdatedLastMonth = isAfter(
new Date(mandataire.date_mesure_update),
new addMonths(Date.now(), -1)
);

const hasBeenMailedRecently = isAfter(
new Date(mandataire.email_send),
new addDays(Date.now(), -15)
);

return !hasUpdatedLastMonth && !hasBeenMailedRecently;
};

const { getTiByUserId } = require("../db/queries/tis");

const { getAll, updateMandataireMailSent } = require("../db/queries/email");

const hasEmail = mandataire => !!mandataire.email;

const EMAIL_RELANCE_TEXT = `
Bonjour,
L'équipe "e-mjpm" constate que vous n'avez pas actualisé vos informations durant ces 30 derniers jours.
Afin que les magistrats puissent connaître en temps réel votre activité et bénéficier d'un outil d'aide à la décision performant, nous vous prions de mettre à jour vos données.
Vous pouvez directement vous connecter via ce lien : https://emjpm.num.social.gouv.fr/
Pour toute difficulté, n'hésitez pas à nous contacter : contact@emjpm.beta.gouv.fr
En vous remerciant de votre précieuse collaboration.
Bien à vous.
`;

const EMAIL_RELANCE_HTML = `
Bonjour,<br>
<br>
L'équipe "e-mjpm" constate que vous n'avez pas actualisé vos informations durant ces 30 derniers jours.
<br><br>
Afin que les magistrats puissent connaître en temps réel votre activité et bénéficier d'un outil d'aide à la décision performant, nous vous prions de mettre à jour vos données.
<br><br>
Vous pouvez directement vous connecter via ce lien : <a href="https://emjpm.num.social.gouv.fr/">emjpm.num.social.gouv.fr</a>
<br><br>
Pour toute difficulté, n'hésitez pas à nous contacter : <a href="mailto:contact@emjpm.beta.gouv.fr">contact@emjpm.beta.gouv.fr</a>
<br><br><br>
En vous remerciant de votre précieuse collaboration.
<br><br><br>
Bien à vous.
`;

/** @swagger
* /email/relance-mandataires-inactifs:
* get:
* tags:
* - email
* description: send email to not active mandataire
* produces:
* - application/json
* responses:
* 200:
* content:
* application/json:
* schema:
* $ref: '#/components/schemas/SuccessResponse'
*/
router.get("/relance-mandataires-inactifs", function(req, res, next) {
getAll()
.then(mandataires =>
mandataires
.filter(hasEmail)
.filter(isLate)
.map(mandataire =>
sendEmail(
mandataire.email,
"e-MJPM : actualisez vos données",
EMAIL_RELANCE_TEXT,
EMAIL_RELANCE_HTML
)
.then(() => {
// MAJ mandataire.email_send
return updateMandataireMailSent(mandataire.id);
})
.catch(e => {
// todo: sentry
console.log(e);
})
)
)
.then(() => {
res.json({ success: true });
});
});

const EMAIL_RESERVATION_TEXT = (nom, prenom, etablissement, ti) => {
`
Bonjour ${nom + prenom || etablissement},
Expand Down Expand Up @@ -198,6 +100,5 @@ router.get("/test", function(req, res, next) {
});

module.exports = {
router,
isLate
router
};
12 changes: 5 additions & 7 deletions routes/mandataireMesures.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ const {
updateMesure,
getAllMesuresEteinte,
getAllMesuresAttente,
getAllMesures,
getMesuresEnCoursMandataire,
addMesure
} = require("../db/queries/mesures");

Expand Down Expand Up @@ -74,7 +74,6 @@ const {
* required: true
*/


/** @swagger
* /mandataires/1/mesures/:mesureId:
* put:
Expand Down Expand Up @@ -115,12 +114,12 @@ router.put(
},
req.body
)
//.then(() => queries.getAllMesures(mandataire.id))
//.then(() => queries.getMesuresEnCoursMandataire(mandataire.id))
// todo : trigger/view
//.then(() => updateDateMesureUpdate(mandataire.id))
// todo : trigger/view
.then(() => updateCountMesures(mandataire.id))
.then(() => getAllMesures(mandataire.id))
.then(() => getMesuresEnCoursMandataire(mandataire.id))
.then(mesures => res.status(200).json(mesures))
.catch(error => next(error));
}
Expand Down Expand Up @@ -170,7 +169,7 @@ router.post(
});
} else {
addMesure(body)
.then(() => getAllMesures(mandataire.id))
.then(() => getMesuresEnCoursMandataire(mandataire.id))
.then(mesures => res.status(200).json(mesures))
.then(() => updateCountMesures(mandataire.id))
// todo : trigger/view
Expand Down Expand Up @@ -240,13 +239,12 @@ router.get(
typeRequired("individuel", "prepose"),
async (req, res, next) => {
const mandataire = await getMandataireByUserId(req.user.id);
getAllMesures(mandataire.id)
getMesuresEnCoursMandataire(mandataire.id)
.then(mesures => res.status(200).json(mesures))
.catch(error => next(error));
}
);


//ToDo doublon
/** @swagger
* /mandataires/1/mesuresForMaps:
Expand Down
Loading

0 comments on commit c3f25fa

Please sign in to comment.