Skip to content
This repository has been archived by the owner on Mar 6, 2023. It is now read-only.

Commit

Permalink
feat(enquete): import individuel excel parsing #1801
Browse files Browse the repository at this point in the history
  • Loading branch information
Toub committed May 19, 2020
1 parent fc3df5d commit 599aa91
Show file tree
Hide file tree
Showing 3 changed files with 81 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ async function importEnqueteFile({
const start = Date.now();
logger.info(`[IMPORT ENQUETE] START ${enqueteId}`);

const enqueteToImport = enqueteExcelParser.parse({
const enqueteToImport = await enqueteExcelParser.parse({
base64str
});

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
var XLSX = require("xlsx");
var { enqueteExcelSchemas } = require("./enqueteExcelSchemas");

const parse = ({ base64str }) => {
const parse = async ({ base64str }) => {
const workbook = XLSX.read(base64str, {
cellDates: true,
dateNF: "dd/mm/yyyy",
Expand All @@ -11,13 +12,51 @@ const parse = ({ base64str }) => {

const worksheet = workbook.Sheets["info mandataire-exerc. activité"];
if (worksheet) {
console.log("test");
console.log("test:", worksheet["A2"]);
console.log("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
console.log("B11:", worksheet["B11"]);

const rawData = {
// last_update: enqueteReponse.last_update,
benevole: rawValue(worksheet["B11"]),
// forme_juridique: rawValue(worksheet["B13"])
// sexe: worksheet["C15"],
anciennete: rawValue(worksheet["C17"])
// estimation_etp: worksheet["C17"],
// secretaire_specialise_etp: worksheet["B27"],
// local_professionnel: worksheet["D31"]
};

try {
const test = enqueteExcelSchemas.informationsGeneralesMandataireSchema.validateSync(
rawData
);
console.log("xxx test:", JSON.stringify(test));
} catch (err) {
console.log(err);
}
// {
// last_update: enqueteReponse.last_update,
// benevole: worksheet["B11"],
// forme_juridique: worksheet["B13"],
// sexe: worksheet["C15"],
// anciennete: worksheet["C17"],
// estimation_etp: worksheet["C17"],
// secretaire_specialise_etp: worksheet["B27"],
// local_professionnel: worksheet["D31"]
// }
// );
}

return [];
};

function rawValue(cell) {
if (cell) {
return cell.v;
}
return undefined;
}

const enqueteExcelParser = {
parse
};
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
const yup = require("yup");

const ENUM_ANCIENNETE = {
"Moins de 2 ans": "0-2",
"2 ans à moins de 5 ans": "2-5",
"5 ans à moins de 10 ans": "5-10",
"10 ans à moins de 20 ans": "10-20",
"20 ans à moins de 30 ans": "20-30",
"30 ans et plus": "30+"
};

const ENUM_ESTIMATION_ETP = {
"jusqu'à 30% d'un ETP": "0-30",
"supérieure à 30% jusqu'à 50%": "30-50",
"supérieure à 50% jusqu'à 70%": "50-70",
"supérieure à 70% jusqu'à 90%": "70-90",
"A temps plein": "90-100"
};

const informationsGeneralesMandataireSchema = yup.object().shape({
benevole: excelBoolean(),
anciennete: yup.mixed().transform(x => ENUM_ANCIENNETE[x]),
estimation_etp: yup.mixed().transform(x => ENUM_ESTIMATION_ETP[x]),
secretaire_specialise_etp: yup.string(),
local_professionnel: yup.string()
});

const enqueteExcelSchemas = {
informationsGeneralesMandataireSchema
};

module.exports = {
enqueteExcelSchemas
};

function excelBoolean() {
return yup.boolean().transform(x => !!(x & (x === "Oui")));
}

0 comments on commit 599aa91

Please sign in to comment.