115 lines
4.2 KiB
JavaScript
115 lines
4.2 KiB
JavaScript
// Required modules
|
|
const router = require('express').Router();
|
|
const util = require("./../utilities/utilities_main.js");
|
|
const moment = require("moment");
|
|
const multer = require('multer');
|
|
|
|
router.get("/", async function(req, res) {
|
|
try {
|
|
let conn;
|
|
try {
|
|
conn = await util.getDBConnection(); // get connection from db
|
|
const result = await conn.query("SELECT item_content FROM item_info;");
|
|
res.json(result);
|
|
}
|
|
catch(e) {
|
|
console.error(e);
|
|
res.json({suc : false});
|
|
}
|
|
finally {
|
|
util.closeDBConnection(conn); // close db connection
|
|
}
|
|
}
|
|
catch(e) {
|
|
console.log(e);
|
|
}
|
|
})
|
|
|
|
|
|
const storage = multer.diskStorage({
|
|
destination: function (req, file, cb) {
|
|
cb(null, 'uploads/');
|
|
},
|
|
filename: function (req, file, cb) {
|
|
cb(null, Date.now()+ '_' + file.originalname);
|
|
}
|
|
});
|
|
const upload = multer({ storage: storage });
|
|
|
|
router.post("/", upload.single('file'), async function(req, res) {
|
|
try {
|
|
let conn;
|
|
try {
|
|
console.log(req.body);
|
|
|
|
if (req.file){
|
|
console.log("Upload file: " + req.file.filename);
|
|
var upload_file_name = req.file.filename;
|
|
} else {
|
|
console.log("No file");
|
|
var upload_file_name = "";
|
|
}
|
|
console.log(upload_file_name);
|
|
// data
|
|
const apply_infos_str = req.body.apply_infos; // get data from request
|
|
const application_units_str = req.body.application_units;
|
|
const subsidy_amounts_str = req.body.subsidy_amounts;
|
|
const student_id = req.body.student_id;
|
|
const student_name = req.body.student_name;
|
|
const department_and_grade = req.body.department_and_grade;
|
|
const advisor_id = req.body.advisor_name;
|
|
const time = moment(new Date()).format("YYYY-MM-DD");
|
|
|
|
if (!student_id) {
|
|
throw new Error("Student ID is missing in the request body.");
|
|
}
|
|
|
|
conn = await util.getDBConnection(); // get connection from db
|
|
await conn.beginTransaction();
|
|
|
|
// insert into student, if not existed
|
|
const stu_existed = await conn.query("SELECT COUNT(*) FROM student WHERE student_id=?", student_id);
|
|
if (!stu_existed[0]["COUNT(*)"]) {
|
|
await conn.batch("INSERT INTO student VALUES(?, ?, ?, ?);", [student_id, department_and_grade, student_name, advisor_id]);
|
|
}
|
|
|
|
// insert data into table : scholarship_application
|
|
const scholarship_application_info = await conn.batch("INSERT INTO scholarship_application(`application_date`, `student_id`, `supplement_filename`) VALUES(?, ?, ?);", [time, student_id, upload_file_name ]);
|
|
const scholarship_application_id = scholarship_application_info.insertId; // get the application_id of previous record
|
|
|
|
// 這邊你們要再改
|
|
// const application_unit = "test unit";
|
|
// const subsidy = 1000;
|
|
|
|
// insert each apply item into item_form
|
|
const apply_infos = apply_infos_str.split(',');
|
|
const application_units = application_units_str.split(',');
|
|
const subsidy_amounts = subsidy_amounts_str.split(',');
|
|
for (let i = 0;i < apply_infos.length;i++) {
|
|
console.log("i="+i);
|
|
console.log([scholarship_application_id, apply_infos[i], application_units[i], subsidy_amounts[i]]);
|
|
await conn.batch("INSERT INTO item_form(`application_id`, `item_info_id`, `application_unit`, `subsidy`) VALUES(?, ?, ?, ?);",
|
|
[scholarship_application_id, apply_infos[i],
|
|
application_units[i]!=''?application_units[i]:null,
|
|
subsidy_amounts[i]!=''?subsidy_amounts[i]:null]);
|
|
}
|
|
await conn.commit();
|
|
|
|
res.json({suc : true});
|
|
}
|
|
catch(e) {
|
|
console.error(e);
|
|
await conn.rollback();
|
|
res.json({suc : false});
|
|
}
|
|
finally {
|
|
util.closeDBConnection(conn); // close db connection
|
|
}
|
|
}
|
|
catch(e) {
|
|
console.log(e);
|
|
}
|
|
})
|
|
|
|
module.exports = router;
|