diff --git a/routes/dataget.js b/routes/dataget.js index 9c222e4..aa90d1d 100644 --- a/routes/dataget.js +++ b/routes/dataget.js @@ -1,22 +1,17 @@ -var express = require('express'); +var express = require("express"); var router = express.Router(); -var sqliteModel = require('../model/sqliteModel.js'); +var sqliteModel = require("../model/sqliteModel.js"); - -router.get('/getSqliteDb/:company/:cabangId', async function(req,res,next){ +router.get("/getSqliteDb/:company/:cabangId", async function (req, res, next) { var company = req.params.company; var cabangId = req.params.cabangId; - var sqliteDb = await sqliteModel.CreateDataCollection(company,cabangId); - if(sqliteDb["STATUS"] == 0){ + var sqliteDb = await sqliteModel.CreateDataCollection(company, cabangId); + if (sqliteDb["STATUS"] == 0) { return res.status(500).send(sqliteDb["DATA"]); - } - else{ + } else { var dbPath = sqliteDb["DATA"]; res.download(dbPath); - } + } }); - - - module.exports = router; diff --git a/routes/datapost.js b/routes/datapost.js index e47677c..4bedac2 100644 --- a/routes/datapost.js +++ b/routes/datapost.js @@ -6,12 +6,14 @@ const path = require("path"); var sqliteModel = require("../model/sqliteModel.js"); var oracleModel = require("../model/oracleModel.js"); -router.post("/uploadSqlitedb", async function (req, res, next) { - try { - var dbBytes = req.body.byte; +//done - var company = req.body.company; - var cabangId = req.body.cabangId; +router.post("/uploadDb", async function (req, res, next) { + try { + var dbBytes = req.body; + var parameter = JSON.parse(req.headers.params); + var company = parameter.company; + var cabangId = parameter.cabangId; var activeStockTaking = await oracleModel.getActiveStockTakingByCabang( company, cabangId @@ -34,12 +36,44 @@ router.post("/uploadSqlitedb", async function (req, res, next) { var n = d.getTime(); var dbName = `${n}.db`; var dbPath = path.join(dirPath, dbName); - var a = fs.writeFileSync(dbPath, Buffer.from(dbBytes)); - return res.json({ - STATUS: 1, - DATA: "Data send successfully", - dbPath: dbPath, + // var a = fs.writeFileSync(dbPath, Buffer.from(dbBytes)); + // var a = fs.writeFileSync(dbPath, dbBytes); + const stream = fs.createWriteStream(dbPath); + stream.on("open", () => req.pipe(stream)); + stream.on("drain", () => { + // Calculate how much data has been piped yet + const written = parseInt(stream.bytesWritten); + const total = parseInt(req.headers["filesize"]); + const pWritten = ((written / total) * 100).toFixed(2); + console.log(`Processing ... ${pWritten}% done`); }); + stream.on("close", () => { + // Send a success response back to the client + const msg = `Data uploaded to ${dbPath}`; + console.log("Processing ... 100%"); + console.log(msg); + return res.status(200).json({ + STATUS: 1, + DATA: "Data send successfully", + dbPath: dbPath, + }); + }); + + stream.on("error", (err) => { + // Send an error message to the client + console.error(err); + return res.status(500).json({ + STATUS: 1, + DATA: "Data send successfully", + dbPath: dbPath, + }); + }); + // console.log(dirPath, dbPath); + // return res.json({ + // STATUS: 1, + // DATA: "Data send successfully", + // dbPath: dbPath, + // }); }); } catch (e) { return res.json({ STATUS: 0, DATA: e }); @@ -47,7 +81,7 @@ router.post("/uploadSqlitedb", async function (req, res, next) { }); router.post("/unpackDb", async function (req, res, next) { - console.log(req.body); + // console.log(req.body); var dbPath = req.body.dbPath; var company = req.body.company; var cabangId = req.body.cabangId; @@ -56,36 +90,79 @@ router.post("/unpackDb", async function (req, res, next) { return res.json(data); }); -router.post("/login", async function (req, res, next) { - var username = req.body.User; - var password = req.body.Pass; - var data = await oracleModel.getDataUser(username, password); - return res.send(data); -}); +//old delete after update +router.post("/uploadSqlitedb", async function (req, res, next) { + try { + var dbBytes = req.body; + var parameter = JSON.parse(req.headers.params); + var company = parameter.company; + var cabangId = parameter.cabangId; + var activeStockTaking = await oracleModel.getActiveStockTakingByCabang( + company, + cabangId + ); -router.post("/getCabangByUser", async function (req, res, next) { - var company = req.body.company; - var username = req.body.User; - var data = await oracleModel.getDataCabangByUser(company, username); - return res.send(data); -}); + if (activeStockTaking == undefined) + return res.json({ + STATUS: 0, + DATA: "Data Stock Taking dalam status tidak Open !", + }); -router.post("/submitStock", async function (req, res, next) { - console.log(req.body); - var company = req.body.company; - var stockTakingId = req.body.stockTakingId; - var data = await oracleModel.submitStockTaking(company, stockTakingId); - return res.send(data); -}); + var dirPath = path.join( + __dirname, + `../public/sqlite/upload/${company}/${cabangId}` + ); -router.post("/getStateStockUnit", async function (req, res) { - var company = req.body.company; - var stockTakingId = req.body.stockTakingId; - var stateStockTaking = await oracleModel.getStateStockTaking( - company, - stockTakingId - ); - return res.send(stateStockTaking); + fs.mkdir(dirPath, { recursive: true }, (err) => { + // console.log('2',err); + var d = new Date(); + var n = d.getTime(); + var dbName = `${n}.db`; + var dbPath = path.join(dirPath, dbName); + // var a = fs.writeFileSync(dbPath, Buffer.from(dbBytes)); + var a = fs.writeFileSync(dbPath, dbBytes); + console.log(dirPath, dbPath); + return res.json({ + STATUS: 1, + DATA: "Data send successfully", + dbPath: dbPath, + }); + }); + } catch (e) { + return res.json({ STATUS: 0, DATA: e }); + } }); +//============================== old route ========================================= +// router.post("/login", async function (req, res, next) { +// var username = req.body.User; +// var password = req.body.Pass; +// var data = await oracleModel.getDataUser(username, password); +// return res.send(data); +// }); + +// router.post("/getCabangByUser", async function (req, res, next) { +// var company = req.body.company; +// var username = req.body.User; +// var data = await oracleModel.getDataCabangByUser(company, username); +// return res.send(data); +// }); + +// router.post("/submitStock", async function (req, res, next) { +// console.log(req.body); +// var company = req.body.company; +// var stockTakingId = req.body.stockTakingId; +// var data = await oracleModel.submitStockTaking(company, stockTakingId); +// return res.send(data); +// }); + +// router.post("/getStateStockUnit", async function (req, res) { +// var company = req.body.company; +// var stockTakingId = req.body.stockTakingId; +// var stateStockTaking = await oracleModel.getStateStockTaking( +// company, +// stockTakingId +// ); +// return res.send(stateStockTaking); +// }); module.exports = router;