diff --git a/model/sqliteModel.js b/model/sqliteModel.js index 69443e5..6406224 100644 --- a/model/sqliteModel.js +++ b/model/sqliteModel.js @@ -1,88 +1,87 @@ -const sqlite3 = require('sqlite3').verbose(); -var sqliteFunc = require('../util/db_sqlite.js'); -var oracleModel = require('./oracleModel.js'); -const oracledb = require('oracledb'); -const path = require('path'); -const fs = require('fs'); - -async function insertRefTable(db,dataUnitCabang){ - try{ - var runQuery = 'insert into refTable(mesin,tipe,rangka,warna,kode,tahun,state) VALUES '; - for(var i = 0 ; i < dataUnitCabang.length ; i ++){ - if(i == dataUnitCabang.length -1){ - runQuery = runQuery.concat(`('${dataUnitCabang[i]["MESIN"]}','${dataUnitCabang[i]["TIPE"]}','${dataUnitCabang[i]["RANGKA"]}','${dataUnitCabang[i]["WARNA"]}', +const sqlite3 = require("sqlite3").verbose(); +var sqliteFunc = require("../util/db_sqlite.js"); +var oracleModel = require("./oracleModel.js"); +const oracledb = require("oracledb"); +const path = require("path"); +const fs = require("fs"); + +async function insertRefTable(db, dataUnitCabang) { + try { + var runQuery = + "insert into refTable(mesin,tipe,rangka,warna,kode,tahun,state) VALUES "; + for (var i = 0; i < dataUnitCabang.length; i++) { + if (i == dataUnitCabang.length - 1) { + runQuery = runQuery.concat(`('${dataUnitCabang[i]["MESIN"]}','${dataUnitCabang[i]["TIPE"]}','${dataUnitCabang[i]["RANGKA"]}','${dataUnitCabang[i]["WARNA"]}', '${dataUnitCabang[i]["KODE"]}','${dataUnitCabang[i]["TAHUN"]}','${dataUnitCabang[i]["STATE"]}')`); - } - else { - runQuery = runQuery.concat(`('${dataUnitCabang[i]["MESIN"]}','${dataUnitCabang[i]["TIPE"]}','${dataUnitCabang[i]["RANGKA"]}','${dataUnitCabang[i]["WARNA"]}', + } else { + runQuery = runQuery.concat(`('${dataUnitCabang[i]["MESIN"]}','${dataUnitCabang[i]["TIPE"]}','${dataUnitCabang[i]["RANGKA"]}','${dataUnitCabang[i]["WARNA"]}', '${dataUnitCabang[i]["KODE"]}','${dataUnitCabang[i]["TAHUN"]}','${dataUnitCabang[i]["STATE"]}'), `); - } - + } } - var insertTable = await sqliteFunc.runQuery(db,runQuery); - if(insertTable["STATUS"] == 0) throw insertTable["DATA"] - } - catch(e){ + var insertTable = await sqliteFunc.runQuery(db, runQuery); + if (insertTable["STATUS"] == 0) throw insertTable["DATA"]; + } catch (e) { throw e; } - } - -async function insertJenisFoto(db,jenisFoto){ - try{ - var valBlobTable = ''; - for(var i = 0 ; i < jenisFoto.length ; i++){ - if(i == jenisFoto.length -1) { - valBlobTable = valBlobTable.concat(`('${jenisFoto[i]["NO_URUT"]}','${jenisFoto[i]["JENIS"]}')`); - } - else{ - valBlobTable = valBlobTable.concat(`('${jenisFoto[i]["NO_URUT"]}','${jenisFoto[i]["JENIS"]}'),`); +async function insertJenisFoto(db, jenisFoto) { + try { + var valBlobTable = ""; + for (var i = 0; i < jenisFoto.length; i++) { + if (i == jenisFoto.length - 1) { + valBlobTable = valBlobTable.concat( + `('${jenisFoto[i]["NO_URUT"]}','${jenisFoto[i]["JENIS"]}')` + ); + } else { + valBlobTable = valBlobTable.concat( + `('${jenisFoto[i]["NO_URUT"]}','${jenisFoto[i]["JENIS"]}'),` + ); } - } var insertJenisBlobQuery = ` Insert Into jenisBlobTable Values ${valBlobTable} `; - var insertBlobQuery = await sqliteFunc.runQuery(db,insertJenisBlobQuery); - if(insertBlobQuery["STATUS"] == 0) throw insertBlobQuery["DATA"] - } - catch(e){ + var insertBlobQuery = await sqliteFunc.runQuery( + db, + insertJenisBlobQuery + ); + if (insertBlobQuery["STATUS"] == 0) throw insertBlobQuery["DATA"]; + } catch (e) { throw e; } } - -async function insertUnitDetPic(db,dataUnitPic){ - try{ - var valDetPic = ''; - for(var i = 0 ; i < dataUnitPic.length ; i++){ - if(i == dataUnitPic.length -1) { +async function insertUnitDetPic(db, dataUnitPic) { + try { + var valDetPic = ""; + for (var i = 0; i < dataUnitPic.length; i++) { + if (i == dataUnitPic.length - 1) { valDetPic = valDetPic.concat(`('${dataUnitPic[i]["MESIN"]}','${dataUnitPic[i]["NO_URUT"]}', null,'${dataUnitPic[i]["JENIS"]}',null,null)`); - } - else{ + } else { valDetPic = valDetPic.concat(`('${dataUnitPic[i]["MESIN"]}','${dataUnitPic[i]["NO_URUT"]}', null,'${dataUnitPic[i]["JENIS"]}',null,null),`); } - } var insertJenisBlobQuery = ` Insert Into blobTable(MESIN,NO_URUT,BLOB_FILE,JENIS,LATITUDE,LONGITUDE) Values ${valDetPic}; `; - var insertBlobQuery = await sqliteFunc.runQuery(db,insertJenisBlobQuery); - if(insertBlobQuery["STATUS"] == 0 ) throw insertBlobQuery["DATA"] - } - catch(e){ + var insertBlobQuery = await sqliteFunc.runQuery( + db, + insertJenisBlobQuery + ); + if (insertBlobQuery["STATUS"] == 0) throw insertBlobQuery["DATA"]; + } catch (e) { throw e; } } -async function getValueTableByName(db,name){ +async function getValueTableByName(db, name) { var query = ` select VALUE from valueTable @@ -90,15 +89,15 @@ async function getValueTableByName(db,name){ LIMIT 1 `; - var selectInsertTable = await sqliteFunc.selectQuery(db,query); - if(selectInsertTable["STATUS"] == 0) throw Error(selectInsertTable["DATA"]); + var selectInsertTable = await sqliteFunc.selectQuery(db, query); + if (selectInsertTable["STATUS"] == 0) + throw Error(selectInsertTable["DATA"]); var data = selectInsertTable["DATA"]; var value = data[0]["VALUE"]; return value; - } -async function getInsertedData(db){ - try{ +async function getInsertedData(db) { + try { var query = ` select MESIN, @@ -107,17 +106,17 @@ async function getInsertedData(db){ where flag_insert = 'TRUE' `; - var selectTimestampInsert = await sqliteFunc.selectQuery(db,query); - if(selectTimestampInsert["STATUS"] == 0) throw selectTimestampInsert["DATA"]; + var selectTimestampInsert = await sqliteFunc.selectQuery(db, query); + if (selectTimestampInsert["STATUS"] == 0) + throw selectTimestampInsert["DATA"]; return selectTimestampInsert["DATA"]; - } - catch(e){ + } catch (e) { throw e; } } -async function getInsertedPic(db){ - try{ +async function getInsertedPic(db) { + try { var query = ` select BLOB_FILE, @@ -129,102 +128,119 @@ async function getInsertedPic(db){ from blobTable where blob_file IS NOT NULL `; - var selectBlobTable = await sqliteFunc.selectQuery(db,query); - if(selectBlobTable["STATUS"] == 0) throw selectBlobTable["DATA"]; + var selectBlobTable = await sqliteFunc.selectQuery(db, query); + if (selectBlobTable["STATUS"] == 0) throw selectBlobTable["DATA"]; return selectBlobTable["DATA"]; - } - catch(e){ + } catch (e) { throw e; } - } -async function unpackAndInsert(dbPath = null, company , cabangId){ +async function unpackAndInsert(dbPath = null, company, cabangId) { let db; - try{ + try { //var dbPath = path.join(__dirname , `../public/sqlite/upload/uploadDB.db`); - if(!dbPath || !fs.existsSync( dbPath )) throw "Database Not Exist. Kirim Ulang Data"; - db = new sqlite3.Database(dbPath, sqlite3.OPEN_READWRITE | sqlite3.OPEN_CREATE); - var stockTakingUnitId = await getValueTableByName(db,'STOCK_TAKING_UNIT_ID'); + if (!dbPath || !fs.existsSync(dbPath)) + throw "Database Not Exist. Kirim Ulang Data"; + db = new sqlite3.Database( + dbPath, + sqlite3.OPEN_READWRITE | sqlite3.OPEN_CREATE + ); + var stockTakingUnitId = await getValueTableByName( + db, + "STOCK_TAKING_UNIT_ID" + ); var insertedData = await getInsertedData(db); var insertedPic = await getInsertedPic(db); - var stockTakingData = {"company" : company , "cabangId" : cabangId, "stockTakingUnitId" : stockTakingUnitId}; - var result = await oracleModel.insertStockUnitData(stockTakingData,insertedData,insertedPic); - if(db.open){ - return new Promise(function(resolve,reject){ - db.close(function(data){ + var stockTakingData = { + company: company, + cabangId: cabangId, + stockTakingUnitId: stockTakingUnitId, + }; + var result = await oracleModel.insertStockUnitData( + stockTakingData, + insertedData, + insertedPic + ); + if (db.open) { + return new Promise(function (resolve, reject) { + db.close(function (data) { fs.unlinkSync(dbPath); - resolve({"STATUS" : 1 ,"DATA" : result}); - }) - }) - - } - else{ + resolve({ STATUS: 1, DATA: result }); + }); + }); + } else { fs.unlinkSync(dbPath); - return {"STATUS" : 1 ,"DATA" : result}; + return { STATUS: 1, DATA: result }; } - - } - catch(e){ + } catch (e) { console.log(e); - if(db.open){ - - return new Promise(function(resolve,reject){ - db.close(function(data){ - - resolve({"STATUS" : 0 ,"DATA" : e.message||e}); - }) - }) + if (db && db.open) { + return new Promise(function (resolve, reject) { + db.close(function (data) { + resolve({ STATUS: 0, DATA: e.message || e }); + }); + }); // db.close(function(data){ // return {"STATUS" : 0 ,"DATA" : e}; // }) + } else { + return { STATUS: 0, DATA: e }; } - else{ - return {"STATUS" : 0 ,"DATA" : e}; - } - } } - // var dbPath = path.join(__dirname , `../public/sqlite/testaplod3.db`); - // unpackAndInsert(dbPath,'TBS','02'); +// var dbPath = path.join(__dirname , `../public/sqlite/testaplod3.db`); +// unpackAndInsert(dbPath,'TBS','02'); - - -async function CreateDataCollection(company = '' , cabangId = ''){ +async function CreateDataCollection(company = "", cabangId = "") { var dbPath; let db; try { - var checkStockTaking = await oracleModel.getActiveStockTakingByCabang(company,cabangId); + var checkStockTaking = await oracleModel.getActiveStockTakingByCabang( + company, + cabangId + ); var oracleData; - if(checkStockTaking == undefined){ - oracleData = await oracleModel.prepareStockCollection(company,cabangId); - } - else { + if (checkStockTaking == undefined) { + oracleData = await oracleModel.prepareStockCollection( + company, + cabangId + ); + } else { let state = checkStockTaking["STATE"]; - if(state == 'Submitted'){ - throw 'Gagal dalam mengambil data, mohon menunggu review data yang disubmit sebelumnya.'; + if (state == "Submitted") { + throw "Gagal dalam mengambil data, mohon menunggu review data yang disubmit sebelumnya."; } - oracleData = await oracleModel.getActiveStockCollection(company,cabangId,checkStockTaking["STOCK_TAKING_UNIT_ID"]); + oracleData = await oracleModel.getActiveStockCollection( + company, + cabangId, + checkStockTaking["STOCK_TAKING_UNIT_ID"] + ); } - + var stockTakingUnitId = oracleData["stockTakingUnitId"]; var dataUnitCabang = oracleData["dataUnitCabang"]; var dataUnitPic = oracleData["dataUnitPic"]; var jenisFoto = oracleData["jenisFoto"]; - var dirPath = path.join(__dirname , `../public/sqlite/db/${company}/${cabangId}`); + var dirPath = path.join( + __dirname, + `../public/sqlite/db/${company}/${cabangId}` + ); var resultDirPath = fs.mkdirSync(dirPath, { recursive: true }); - var d = new Date(); var n = d.getTime(); var dbName = `${n}.db`; - dbPath = path.join(dirPath ,dbName); - db = new sqlite3.Database(dbPath, sqlite3.OPEN_READWRITE | sqlite3.OPEN_CREATE); + dbPath = path.join(dirPath, dbName); + db = new sqlite3.Database( + dbPath, + sqlite3.OPEN_READWRITE | sqlite3.OPEN_CREATE + ); - // Create Table Reference + // Create Table Reference var refTableQuery = `CREATE TABLE refTable( ID INTEGER PRIMARY KEY AUTOINCREMENT, MESIN TEXT, @@ -237,8 +253,8 @@ async function CreateDataCollection(company = '' , cabangId = ''){ TIMESTAMP TEXT DEFAULT NULL, FLAG_INSERT TEXT DEFAULT 'FALSE' )`; - var createRefTable = await sqliteFunc.runQuery(db,refTableQuery); - if(createRefTable["STATUS"] == 0) throw createRefTable; + var createRefTable = await sqliteFunc.runQuery(db, refTableQuery); + if (createRefTable["STATUS"] == 0) throw createRefTable; // var insertTableQuery = `CREATE TABLE insertTable( // ID INTEGER PRIMARY KEY AUTOINCREMENT, @@ -259,10 +275,8 @@ async function CreateDataCollection(company = '' , cabangId = ''){ LONGITUDE TEXT )`; - - var createBlobTable = await sqliteFunc.runQuery(db,insertTableBlob); - if(createBlobTable["STATUS"] == 0) throw createInsertTable; - + var createBlobTable = await sqliteFunc.runQuery(db, insertTableBlob); + if (createBlobTable["STATUS"] == 0) throw createInsertTable; var valueTableQuery = ` CREATE TABLE valueTable( @@ -270,14 +284,16 @@ async function CreateDataCollection(company = '' , cabangId = ''){ VALUE TEXT ) `; - - var createValueTable = await sqliteFunc.runQuery(db,valueTableQuery); - if(createValueTable["STATUS"] == 0) throw createValueTable; - var queryValueTableInsert = `insert into valueTable(name,value) VALUES ('STOCK_TAKING_UNIT_ID',${stockTakingUnitId})`; - var insertValueTableInsert = await sqliteFunc.runQuery(db,queryValueTableInsert); - if(insertValueTableInsert["STATUS"] == 0) throw insertValueTableInsert; + var createValueTable = await sqliteFunc.runQuery(db, valueTableQuery); + if (createValueTable["STATUS"] == 0) throw createValueTable; + var queryValueTableInsert = `insert into valueTable(name,value) VALUES ('STOCK_TAKING_UNIT_ID',${stockTakingUnitId})`; + var insertValueTableInsert = await sqliteFunc.runQuery( + db, + queryValueTableInsert + ); + if (insertValueTableInsert["STATUS"] == 0) throw insertValueTableInsert; var jenisBlobQuery = ` CREATE TABLE jenisBlobTable( @@ -285,65 +301,61 @@ async function CreateDataCollection(company = '' , cabangId = ''){ VALUE TEXT ) `; - var createJenisBlobTable = await sqliteFunc.runQuery(db,jenisBlobQuery); - if(createJenisBlobTable["STATUS"] == 0) throw createJenisBlobTable; + var createJenisBlobTable = await sqliteFunc.runQuery( + db, + jenisBlobQuery + ); + if (createJenisBlobTable["STATUS"] == 0) throw createJenisBlobTable; //----------- JENIS FOTO---------------------------------------------- - await insertJenisFoto(db,jenisFoto); + await insertJenisFoto(db, jenisFoto); - if(dataUnitCabang.length > 0){ - //----------- REF TABLE---------------------------------------------- - await insertRefTable(db,dataUnitCabang); + if (dataUnitCabang.length > 0) { + //----------- REF TABLE---------------------------------------------- + await insertRefTable(db, dataUnitCabang); - //----------- UNIT DET PIC---------------------------------------------- - await insertUnitDetPic(db,dataUnitPic); + //----------- UNIT DET PIC---------------------------------------------- + await insertUnitDetPic(db, dataUnitPic); } - - if(db.open){ - return new Promise(function(resolve,reject){ - db.close(function(data){ - resolve({"STATUS" : 1 ,"DATA" : dbPath}); - }) + if (db.open) { + return new Promise(function (resolve, reject) { + db.close(function (data) { + resolve({ STATUS: 1, DATA: dbPath }); }); - // db.close(function(data){ - // return {"STATUS" : 1, "DATA" : dbPath}; - // }) - } - else{ - return {"STATUS" : 1, "DATA" : dbPath}; - } - - } - catch(e){ - if(db){ - if(db.open){ - return new Promise(function(resolve,reject){ - db.close(function(data){ + }); + // db.close(function(data){ + // return {"STATUS" : 1, "DATA" : dbPath}; + // }) + } else { + return { STATUS: 1, DATA: dbPath }; + } + } catch (e) { + if (db) { + if (db.open) { + return new Promise(function (resolve, reject) { + db.close(function (data) { fs.unlinkSync(dbPath); - resolve({"STATUS" : 0 ,"DATA" : e}); - }) + resolve({ STATUS: 0, DATA: e }); + }); }); // db.close(function(data){ // fs.unlinkSync(dbPath); // return {"STATUS" : 0 , "DATA": e}; // }); } - } - - else{ - if(dbPath){ + } else { + if (dbPath) { fs.unlinkSync(dbPath); - } - console.log(e); - return {"STATUS" : 0 , "DATA": e}; + } + console.log(e); + return { STATUS: 0, DATA: e }; } } } //CreateDataCollection("TBS",'02'); - module.exports = { - CreateDataCollection : CreateDataCollection, - unpackAndInsert : unpackAndInsert -}; \ No newline at end of file + CreateDataCollection: CreateDataCollection, + unpackAndInsert: unpackAndInsert, +};