Node-server for unitstock app
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

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