Node-server for unitstock app
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

164 lines
4.4 KiB

  1. var express = require("express");
  2. var router = express.Router();
  3. var fs = require("fs");
  4. const path = require("path");
  5. var sqliteModel = require("../model/sqliteModel.js");
  6. var oracleModel = require("../model/oracleModel.js");
  7. router.post("/uploadDb", async function (req, res, next) {
  8. try {
  9. var dbBytes = req.body;
  10. var parameter = JSON.parse(req.headers.params);
  11. var company = parameter.company;
  12. var cabangId = parameter.cabangId;
  13. var activeStockTaking = await oracleModel.getActiveStockTakingByCabang(
  14. company,
  15. cabangId
  16. );
  17. if (activeStockTaking == undefined)
  18. return res.json({
  19. STATUS: 0,
  20. DATA: "Data Stock Taking dalam status tidak Open !",
  21. });
  22. var dirPath = path.join(
  23. __dirname,
  24. `../public/sqlite/upload/${company}/${cabangId}`
  25. );
  26. fs.mkdir(dirPath, { recursive: true }, (err) => {
  27. // console.log('2',err);
  28. var d = new Date();
  29. var n = d.getTime();
  30. var dbName = `${n}.db`;
  31. var dbPath = path.join(dirPath, dbName);
  32. // var a = fs.writeFileSync(dbPath, Buffer.from(dbBytes));
  33. // var a = fs.writeFileSync(dbPath, dbBytes);
  34. const stream = fs.createWriteStream(dbPath);
  35. stream.on("open", () => req.pipe(stream));
  36. stream.on("drain", () => {
  37. // Calculate how much data has been piped yet
  38. const written = parseInt(stream.bytesWritten);
  39. const total = parseInt(req.headers["filesize"]);
  40. const pWritten = ((written / total) * 100).toFixed(2);
  41. console.log(`Processing ... ${pWritten}% done`);
  42. });
  43. stream.on("close", () => {
  44. // Send a success response back to the client
  45. const msg = `Data uploaded to ${dbPath}`;
  46. console.log("Processing ... 100%");
  47. console.log(msg);
  48. return res.status(200).json({
  49. STATUS: 1,
  50. DATA: "Data send successfully",
  51. dbPath: dbPath,
  52. });
  53. });
  54. stream.on("error", (err) => {
  55. // Send an error message to the client
  56. console.error(err);
  57. return res.status(500).json({
  58. STATUS: 1,
  59. DATA: "Data send successfully",
  60. dbPath: dbPath,
  61. });
  62. });
  63. // console.log(dirPath, dbPath);
  64. // return res.json({
  65. // STATUS: 1,
  66. // DATA: "Data send successfully",
  67. // dbPath: dbPath,
  68. // });
  69. });
  70. } catch (e) {
  71. return res.json({ STATUS: 0, DATA: e });
  72. }
  73. });
  74. router.post("/uploadSqlitedb", async function (req, res, next) {
  75. try {
  76. var dbBytes = req.body.byte;
  77. var company = req.body.company;
  78. var cabangId = req.body.cabangId;
  79. var activeStockTaking = await oracleModel.getActiveStockTakingByCabang(
  80. company,
  81. cabangId
  82. );
  83. if (activeStockTaking == undefined)
  84. return res.json({
  85. STATUS: 0,
  86. DATA: "Data Stock Taking dalam status tidak Open !",
  87. });
  88. var dirPath = path.join(
  89. __dirname,
  90. `../public/sqlite/upload/${company}/${cabangId}`
  91. );
  92. fs.mkdir(dirPath, { recursive: true }, (err) => {
  93. // console.log('2',err);
  94. var d = new Date();
  95. var n = d.getTime();
  96. var dbName = `${n}.db`;
  97. var dbPath = path.join(dirPath, dbName);
  98. var a = fs.writeFileSync(dbPath, Buffer.from(dbBytes));
  99. return res.json({
  100. STATUS: 1,
  101. DATA: "Data send successfully",
  102. dbPath: dbPath,
  103. });
  104. });
  105. } catch (e) {
  106. return res.json({ STATUS: 0, DATA: e });
  107. }
  108. });
  109. router.post("/unpackDb", async function (req, res, next) {
  110. console.log(req.body);
  111. var dbPath = req.body.dbPath;
  112. var company = req.body.company;
  113. var cabangId = req.body.cabangId;
  114. var data = await sqliteModel.unpackAndInsert(dbPath, company, cabangId);
  115. return res.json(data);
  116. });
  117. router.post("/login", async function (req, res, next) {
  118. var username = req.body.User;
  119. var password = req.body.Pass;
  120. var data = await oracleModel.getDataUser(username, password);
  121. return res.send(data);
  122. });
  123. router.post("/getCabangByUser", async function (req, res, next) {
  124. var company = req.body.company;
  125. var username = req.body.User;
  126. var data = await oracleModel.getDataCabangByUser(company, username);
  127. return res.send(data);
  128. });
  129. router.post("/submitStock", async function (req, res, next) {
  130. console.log(req.body);
  131. var company = req.body.company;
  132. var stockTakingId = req.body.stockTakingId;
  133. var data = await oracleModel.submitStockTaking(company, stockTakingId);
  134. return res.send(data);
  135. });
  136. router.post("/getStateStockUnit", async function (req, res) {
  137. var company = req.body.company;
  138. var stockTakingId = req.body.stockTakingId;
  139. var stateStockTaking = await oracleModel.getStateStockTaking(
  140. company,
  141. stockTakingId
  142. );
  143. return res.send(stateStockTaking);
  144. });
  145. module.exports = router;