diff --git a/server/src/routes/patientRoutes.ts b/server/src/routes/patientRoutes.ts index 6789dfe15b2d73771ee4eeaf4fcf5c8f4c400eef..f40fa359b2b76c2ce866aaa8f2c4af614aa4e25b 100644 --- a/server/src/routes/patientRoutes.ts +++ b/server/src/routes/patientRoutes.ts @@ -1,6 +1,8 @@ import { NextFunction, Request, Response, Router } from "express"; import { writeFile } from "fs"; import multer = require("multer"); +import { extname } from "path"; + //import * as bodyParser from "body-parser"; // not necessary, since body-parser is part of NodeJS export class patientRoutes { @@ -14,21 +16,26 @@ export class patientRoutes { routes() { - // configure a multer Storage (folder + filename) + // configure a multer Storage path (folder + filename) var storage = multer.diskStorage({ - destination: function(req, file, cb) { + destination: function (req, file, cb) { + //uploads is the folder name cb(null, "uploads"); }, - filename: function(req, file, cb) { - cb(null, Date.now()+ '-' + file.fieldname + '.pdf' ); + filename: function (req, file, cb) { + var patientStudent = JSON.parse(req.body.patientStudent); + cb( + null, + patientStudent.MatrikelNumber + extname(file.originalname) + ); } }); //create upload instance (will recive the file and the body from request) var upload = multer({ storage: storage }); console.log("patient routes"); - // recives the file from request - this.router.post("/ppatient", upload.single('evd') , this.post); + // recives the file from request -> the name of the file in the single() must be the same on the client side in FormData + this.router.post("/ppatient", upload.single('sickNoteEvidence') , this.post); this.router.get("/patient", this.get); } @@ -41,31 +48,29 @@ export class patientRoutes { post(req: Request, res: Response) { + //recived the body as a stringified JOSN var body = req.body; // response body + // parse JSON to Objects + var patientStudent = JSON.parse(body.patientStudent) + var sickNote = JSON.parse(body.sickNoteData); + + var sicknessReport = { + patientStudent, + sickNote + } const file = req.file; if (!file) { console.log("not file error") } - var patientStudent = JSON.parse(body.patientStudent) - var sickNote = JSON.parse(body.sickNote) - body = { - patientStudent, - sickNote - } res.status(200).send("the body and the file are recived" + JSON.stringify(body)) - console.log(typeof(body)) - console.log(typeof(patientStudent)) - console.log(typeof(sickNote)) - - - const path = './public/' + patientStudent.MatrikelNumber+ '.json' + const path = './public/'+ 'sickNoteReport'+ patientStudent.MatrikelNumber+ '.json' - writeFile(path, JSON.stringify(body), function (err) { - if (err) return console.log(err) - else return console.log('file generated in path: ' + path) + writeFile(path, JSON.stringify(sicknessReport), function(err) { + if (err) return console.log(err); + else return console.log("file generated in path: " + path); }); } diff --git a/src/views/SickForm.vue b/src/views/SickForm.vue index 76dc18bc4bd0fffd9206ebc1f0bfa52a61f299a1..cf41b2e0ebce26d4f6bae788946afd1c3369b1f3 100644 --- a/src/views/SickForm.vue +++ b/src/views/SickForm.vue @@ -111,7 +111,8 @@ </div> <div class="form-group col-md-4"> <label for="formFile" class="form-label">Krankmeldung</label> - <input class="form-control" type="file" id="formFile" ref="file" accept=".pdf|.docx|image/*" @change="handleFileUpload()"> + <!-- set a refrence on tag using ref="file" will allow us to get the file --> + <input class="form-control" type="file" id="formFile" ref="file" accept=".pdf,.docx,image/*" @change="handleFileUpload()" required> </div> </div> <!-- @@ -402,7 +403,7 @@ export default { } }, methods: { - handleFileUpload (event) { + handleFileUpload () { this.EvidenceFile = this.$refs.file.files[0] }, async OnSubmit () { @@ -410,8 +411,9 @@ export default { // FormData is a dictionary type -> (key , value) formData.append('patientStudent', JSON.stringify(this.patientStudent)) - formData.append('sickNote', JSON.stringify(this.SickNote)) - formData.append('file', this.EvidenceFile) + formData.append('sickNoteData', JSON.stringify(this.SickNote)) + + formData.append('sickNoteEvidence', this.EvidenceFile) var res = await axios.post('http://localhost:3000/ppatient', formData, {