var express = require("express"); var router = express.Router(); var fs = require("fs"); const path = require("path"); var sqliteModel = require("../model/sqliteModel.js"); var oracleModel = require("../model/oracleModel.js"); 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; if (company == null || cabangId == null) { return res.json({ STATUS: 0, DATA: "Gagal upload file. Dat User tidak lengkap!", }); } console.log("uploading db from", company, cabangId); var activeStockTaking = await oracleModel.getActiveStockTakingByCabang( company, cabangId ); if (activeStockTaking == undefined) return res.json({ STATUS: 0, DATA: "Data Stock Taking dalam status tidak Open !", }); var dirPath = path.join( __dirname, `../public/sqlite/upload/${company}/${cabangId}` ); 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); 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 }); } }); router.post("/uploadSqlitedb", async function (req, res, next) { try { var dbBytes = req.body.byte; var company = req.body.company; var cabangId = req.body.cabangId; console.log("uploading db from", company, cabangId); if (company == null || cabangId == null) { return res.json({ STATUS: 0, DATA: "Gagal upload file. Dat User tidak lengkap!", }); } var activeStockTaking = await oracleModel.getActiveStockTakingByCabang( company, cabangId ); if (activeStockTaking == undefined) return res.json({ STATUS: 0, DATA: "Data Stock Taking dalam status tidak Open !", }); var dirPath = path.join( __dirname, `../public/sqlite/upload/${company}/${cabangId}` ); 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)); return res.json({ STATUS: 1, DATA: "Data send successfully", dbPath: dbPath, }); }); } catch (e) { return res.json({ STATUS: 0, DATA: e }); } }); router.post("/unpackDb", async function (req, res, next) { console.log(req.body); var dbPath = req.body.dbPath; var company = req.body.company; var cabangId = req.body.cabangId; var data = await sqliteModel.unpackAndInsert(dbPath, company, cabangId); 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); }); 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;