diff --git a/Controller/Authentication.js b/Controller/Authentication.js index 6cdd63e..84ea379 100644 --- a/Controller/Authentication.js +++ b/Controller/Authentication.js @@ -1,10 +1,10 @@ -const express = require("express"); const asyncHandler = require("../Middleware/async"); const jwt = require("jsonwebtoken") const User = require("../Model/User"); const AppModel = require("../Model/AppModel"); const ErrorResponse = require("../utils/errorResponse"); const dbInfo = require("../Model/Database") +const StoreInfo = require("../Model/StoreModel") const DataModel = require("../Model/BC_Data") // Login User @@ -190,7 +190,7 @@ exports.checkUsername = asyncHandler(async (req, res, next) => { await Promise.all(isAllowed.map(async (app) => { - const { DB_NAME } = await dbInfo.findOne({ + const { ST_NAME } = await dbInfo.findOne({ where: { DB_CODE: app.DB_CODE }, diff --git a/Controller/Items.js b/Controller/Items.js new file mode 100644 index 0000000..bcda4ca --- /dev/null +++ b/Controller/Items.js @@ -0,0 +1,25 @@ +const asyncHandler = require("../Middleware/async"); +const sequelize = require('sequelize') +const DBInfo = require("../Model/Database"); +const ItemModel = require("../Model/ItemModel"); +const ErrorResponse = require("../utils/errorResponse"); + +exports.getAllItems = asyncHandler(async (req, res, next) => { + console.log("GET ITEM INFO EXEC ") + try { + let items = await ItemModel.findAll() + console.log("ITEMS ", items) + if (!items) { + return next(new ErrorResponse("No item found", 400)); + } + res.status(200).send({ + success: true, + data: items + }) + } catch (err) { + console.log("ERROR GET ALL ITEMS", err) + return next(new ErrorResponse(err, 400)); + } + + +}) \ No newline at end of file diff --git a/Controller/Store.js b/Controller/Store.js new file mode 100644 index 0000000..453f6dd --- /dev/null +++ b/Controller/Store.js @@ -0,0 +1,322 @@ +const asyncHandler = require("../Middleware/async"); +const sequelize = require('sequelize') +const StoreModel = require("../Model/StoreModel"); +const db = require("../Config/db"); +const ErrorResponse = require("../utils/errorResponse"); +const SuccessResponse = require("../utils/successResponse"); + +const dateFormat = require("dateformat"); + +exports.getStoreInfo = asyncHandler(async (req, res, next) => { + console.log("GET STORE INFO EXEC ") + try { + let store = await StoreModel.findAll() + console.log("STORE ", store) + if (!store) { + return next(new ErrorResponse("No store found", 400)); + } + res.status(200).send({ + success: true, + data: store + }) + } catch (err) { + console.log("ERROR GET ALL STORE", err) + return next(new ErrorResponse(err, 400)); + } +}) + +exports.registerStore = asyncHandler(async (req, res, next) => { + const { store_name } = req.body + try { + const t = await db.transaction() + // check whether store name is existing + const existingStore = await StoreModel.findOne({ + where: { ST_NAME: store_name } + }) + + if (existingStore) { + return next(new ErrorResponse("Store name already exists", 400)); + } + var date = dateFormat(new Date(), "mm/dd/yyyy"); + + const nextStoreCode = await generateNextStoreCode() + let store = await StoreModel.create( + { + ST_CODE: nextStoreCode, + ST_NAME: store_name, + ST_STAT: 'A', + DATE_CREA: date, + DATE_UPDT: date, + DATE_FORMAT: "MM/dd/yyyy", + DATE_DEFAULT: 'L', + SA_DECIMAL: '2', + SB_DECICMA: '2', + DEC_SEP: '.', + THO_SEP: ',', + USER_CREA: req.user.USER_NAME, + USER_UPDT: '', + }, { transaction: t } + ) + + await createStoreTables(nextStoreCode, t); + + await t.commit(); + + res.status(201).json({ + success: true, + data: store + + }) + + } catch (err) { + return next(new ErrorResponse(err, 400)); + } +}) + +async function generateNextStoreCode() { + const lastStore = await StoreModel.findOne({ + order: [['ST_CODE', 'DESC']] + }); + + if (!lastStore) { + return 'AA001'; // Starting point if no stores are present + } + + // use regex to separate letters and numbers + let [letters, numbers] = lastStore.ST_CODE.match(/[A-Z]+|\d+/g); + // letters -> AA , numbers -> 001 + + numbers = parseInt(numbers); + + if (numbers < 999) { + numbers++; + } else { + numbers = 1; + letters = incrementLetters(letters); + } + + return letters + numbers.toString().padStart(3, '0'); +} + +function incrementLetters(letters) { + const maxLetters = 'ZZ'; + if (letters === maxLetters) { + throw new Error("Maximum limit reached."); + } + + let firstChar = letters.charCodeAt(0); + let secondChar = letters.charCodeAt(1); + + // if second character is Z, increment first character + // and reset second character to A + if (secondChar === 90) { + firstChar++; + secondChar = 65; + } else { + secondChar++; + } + + return String.fromCharCode(firstChar) + String.fromCharCode(secondChar); +} + +async function createStoreTables(storeCode, transaction) { + try { + // Table for TDSOHDR + const tableTDSOHDR = `${storeCode}TDSOHDR`; + await db.query(` + IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'dbo' AND TABLE_NAME = '${tableTDSOHDR}') + BEGIN + CREATE TABLE [dbo].${tableTDSOHDR} ( + [REC_TYPE] char(1) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [TRANS_REF] nvarchar(15) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [HEADER_ID] char(1) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [CUST_CODE] nvarchar(15) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [DELIV_ADD] nvarchar(15) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [TRANS_DATE] smalldatetime NOT NULL, + [STATUS] char(2) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [TRANS_CD] char(1) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [TRANS_CODE] nvarchar(10) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [ORDER_NO] nvarchar(15) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [ORDER_DATE] char(10) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [PRN_DATE] char(10) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [DEL_DATE] char(10) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [INV_DATE] char(10) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [INV_PRD] int NOT NULL, + [CUST_REF] nvarchar(25) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [DEL_REF] nvarchar(15) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [COMMENTS] nvarchar(25) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [TRANS_VAL] numeric(18,5) NOT NULL, + [PAY_DATE] char(10) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [ANAL_M0] nvarchar(15) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [ANAL_M1] nvarchar(15) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [ANAL_M2] nvarchar(15) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [ANAL_M3] nvarchar(15) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [ANAL_M4] nvarchar(15) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [ANAL_M5] nvarchar(15) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [ANAL_M6] nvarchar(15) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [ANAL_M7] nvarchar(15) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [ANAL_M8] nvarchar(15) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [ANAL_M9] nvarchar(15) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [QUOTE_CONVERT] char(1) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [QUOTE_PRINT] char(1) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [QUOTE_EXPIRY] char(10) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [QUOTED_PRD] int NOT NULL, + [QUOTATION_REF] nvarchar(15) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [DATE_QUOTED] nvarchar(10) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [VOID_STATUS] char(1) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [USER_CODE] nvarchar(15) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + CONSTRAINT [PK_${tableTDSOHDR}] PRIMARY KEY CLUSTERED ([REC_TYPE], [TRANS_REF]) + WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) + ON [PRIMARY] + ) + ON [PRIMARY] + + + ALTER TABLE [dbo].${tableTDSOHDR} SET (LOCK_ESCALATION = TABLE) + END + `, { type: sequelize.QueryTypes.RAW, transaction }); + + // Table for TDSODET + const tableTDSODET = `${storeCode}TDSODET`; + await db.query(` + IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'dbo' AND TABLE_NAME = '${tableTDSODET}') + BEGIN + CREATE TABLE [dbo].${tableTDSODET} ( + [REC_TYPE] char(1) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [DETAIL_ID] char(1) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [TRANS_TYPE] nvarchar(10) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [TRANS_REF] nvarchar(15) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [TRANS_LINE] char(5) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [TRANS_CD] char(1) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [LOCATION] nvarchar(15) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [ITEM_CODE] nvarchar(15) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [DESCRIPTN] nvarchar(50) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [DUE_DATE] char(10) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [STATUS] char(2) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [VALUE_1] numeric(18,5) NOT NULL, + [VALUE_2] numeric(18,5) NOT NULL, + [VALUE_3] numeric(18,5) NOT NULL, + [VALUE_4] numeric(18,5) NOT NULL, + [VALUE_5] numeric(18,5) NOT NULL, + [VALUE_6] numeric(18,5) NOT NULL, + [VALUE_7] numeric(18,5) NOT NULL, + [VALUE_8] numeric(18,5) NOT NULL, + [VALUE_9] numeric(18,5) NOT NULL, + [VALUE_10] numeric(18,5) NOT NULL, + [VALUE_11] numeric(18,5) NOT NULL, + [VALUE_12] numeric(18,5) NOT NULL, + [VALUE_13] numeric(18,5) NOT NULL, + [VALUE_14] numeric(18,5) NOT NULL, + [VALUE_15] numeric(18,5) NOT NULL, + [VALUE_16] numeric(18,5) NOT NULL, + [VALUE_17] numeric(18,5) NOT NULL, + [VALUE_18] numeric(18,5) NOT NULL, + [VALUE_19] numeric(18,5) NOT NULL, + [VALUE_20] numeric(18,5) NOT NULL, + [UNIT_SALE] nvarchar(5) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [ORD_PRD] int NOT NULL, + [DEL_DATE] char(10) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [INV_DATE] char(10) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [INV_NO] nvarchar(15) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [INV_PRD] int NOT NULL, + [ACCNT_CODE] nvarchar(15) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [ANAL_M0] nvarchar(15) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [ANAL_M1] nvarchar(15) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [ANAL_M2] nvarchar(15) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [ANAL_M3] nvarchar(15) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [ANAL_M4] nvarchar(15) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [ANAL_M5] nvarchar(15) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [ANAL_M6] nvarchar(15) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [ANAL_M7] nvarchar(15) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [ANAL_M8] nvarchar(15) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [ANAL_M9] nvarchar(15) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [ASSEMBLY_IND] char(1) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [SPLIT_VAL] int NOT NULL, + [CREDIT_STATUS] char(1) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [PRICE_BOOK] nvarchar(10) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [SALE_QTY_VALUE] int NOT NULL, + [STK_QTY_VALUE] int NOT NULL, + [TOT_VALUE] int NOT NULL, + [DISP_VAL_1] int NOT NULL, + [DISP_VAL_2] int NOT NULL, + [FIXED_VAL] int NOT NULL, + [LINE_REF] nvarchar(20) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [USER_CODE] nvarchar(15) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [USER_INVOICED] nvarchar(15) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [ALLOC_REF] char(20) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [UPDATE_STOCK] char(1) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [FIXED_VAL_2] int NOT NULL, + [FIXED_VAL_3] int NOT NULL, + CONSTRAINT [PK_${tableTDSODET}] PRIMARY KEY CLUSTERED ([TRANS_REF], [TRANS_LINE]) + WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) + ON [PRIMARY] + ) + ON [PRIMARY] + + + ALTER TABLE [dbo].${tableTDSODET} SET (LOCK_ESCALATION = TABLE) + END + `, { type: sequelize.QueryTypes.RAW, transaction }); + + // Table for TDINVMOV + const tableTDINVMOV = `${storeCode}TDINVMOV`; + await db.query(` + IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'dbo' AND TABLE_NAME = '${tableTDINVMOV}') + BEGIN + CREATE TABLE [dbo].${tableTDINVMOV} ( + [SEQUENCE] int NOT NULL, + [REC_TYPE] char(1) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [MOV_PRD] int NOT NULL, + [MOV_REF] nvarchar(15) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [MOV_LINE] char(4) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [LOCATION] nvarchar(15) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [ITEM_CODE] nvarchar(15) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [MOV_DATE] char(10) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [STATUS] char(2) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [IR_STAT] char(1) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [BATCH_NO] int NOT NULL, + [BATCH_LINE] char(5) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [LINE_REF] nvarchar(20) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [QUANTITY] numeric(18,5) NOT NULL, + [COST] numeric(18,5) NOT NULL, + [TOTAL] numeric(18,5) NOT NULL, + [MOV_UNITS] nvarchar(5) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [MOV_TYPE] nvarchar(10) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [UPDTE_PHYS] char(10) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [UPDTE_ORDR] char(10) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [ALLOC_REF] nvarchar(20) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [ACCNT_CODE] nvarchar(15) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [ASSET_CODE] nvarchar(15) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [ANAL_M0] nvarchar(15) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [ANAL_M1] nvarchar(15) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [ANAL_M2] nvarchar(15) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [ANAL_M3] nvarchar(15) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [ANAL_M4] nvarchar(15) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [ANAL_M5] nvarchar(15) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [ANAL_M6] nvarchar(15) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [ANAL_M7] nvarchar(15) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [ANAL_M8] nvarchar(15) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [ANAL_M9] nvarchar(15) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [ORIG_LINE_NO] char(5) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [PO_VALUE] numeric(18,5) NOT NULL, + [ID_ENTERED] nvarchar(15) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + [ID_ALLOC] nvarchar(15) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, + CONSTRAINT [PK_${tableTDINVMOV}] PRIMARY KEY CLUSTERED ([MOV_REF], [MOV_LINE]) + WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) + ON [PRIMARY] + ) + ON [PRIMARY] + + + ALTER TABLE [dbo].${tableTDINVMOV} SET (LOCK_ESCALATION = TABLE) + END + `, { type: sequelize.QueryTypes.RAW, transaction }); + + } catch (error) { + console.error('Error creating store tables:', error); + throw new Error('Failed to create store tables.'); + } +} + + + diff --git a/Middleware/auth.js b/Middleware/auth.js index 06c5ff3..6673aa3 100644 --- a/Middleware/auth.js +++ b/Middleware/auth.js @@ -79,8 +79,11 @@ exports.protect = asyncHandler(async (req, res, next) => { let saleType = "" let warehouse = "" console.log("USER ", req.user) - } catch (err) { + next() + } catch (err) { + console.log("ERROR ", err) + return next(new ErrorResponse("Not authorized to access this route", 401)) } }) diff --git a/Model/ItemModel.js b/Model/ItemModel.js new file mode 100644 index 0000000..d0cf170 --- /dev/null +++ b/Model/ItemModel.js @@ -0,0 +1,104 @@ +const sequelize = require("sequelize") +const db = require("../Config/db"); + +const ItemModel = db.define( + 'TDITEMS', + { + ITEM_CODE: { + type: sequelize.STRING, + primaryKey: true + }, + ITEM_BCODE: { + type: sequelize.STRING + }, + ITEM_DESC: { + type: sequelize.STRING + }, + + ITEM_TYPE: { + type: sequelize.STRING + }, + + UNIT_STOCK: { + type: sequelize.STRING + }, + + ITEM_COST1: { + type: sequelize.INTEGER + }, + + ITEM_PRICE1: { + type: sequelize.INTEGER + }, + UNIT_SALE: { + type: sequelize.STRING + }, + + ITEM_COST2: { + type: sequelize.INTEGER + }, + ITEM_PRICE2: { + type: sequelize.INTEGER + + }, + CAT_CODE: { + type: sequelize.STRING + }, + ITEM_STAT: { + type: sequelize.STRING + }, + + ITEM_CUS1: { + type: sequelize.STRING + }, + ITEM_CUS2: { + type: sequelize.STRING + }, + ITEM_CUS3: { + type: sequelize.STRING + }, + ITEM_CUS4: { + type: sequelize.STRING + }, + ITEM_CUS5: { + type: sequelize.STRING + }, + ITEM_CUS6: { + type: sequelize.STRING + }, + ITEM_CUS7: { + type: sequelize.STRING + }, + ITEM_CUS8: { + type: sequelize.STRING + }, + ITEM_CUS9_KH: { + type: sequelize.STRING + }, + ITEM_CUS10_KH: { + type: sequelize.STRING + }, + USER_CREA: { + type: sequelize.STRING + }, + DATE_CREA: { + type: sequelize.DATE + }, + USER_UPDT: { + type: sequelize.STRING + }, + DATE_UPDT: { + type: sequelize.DATE + }, + ITEM_IMG: { + type: sequelize.BLOB, + }, + }, + { + timestamps: false, + freezeTableName: true, + } +) + +ItemModel.removeAttribute('id') +module.exports = ItemModel; \ No newline at end of file diff --git a/Model/StoreModel.js b/Model/StoreModel.js new file mode 100644 index 0000000..63843fd --- /dev/null +++ b/Model/StoreModel.js @@ -0,0 +1,56 @@ +const sequelize = require('sequelize') +const db = require('../Config/db') + +const StoreModel = db.define( + 'TDSTINFO', + { + ST_CODE: { + type: sequelize.STRING, + primaryKey: true + }, + ST_NAME: { + type: sequelize.STRING + }, + DATE_DEFAULT: { + type: sequelize.CHAR + }, + DATE_FORMAT: { + type: sequelize.STRING + }, + SA_DECIMAL: { + type: sequelize.INTEGER + }, + SB_DECICMA: { + type: sequelize.INTEGER + }, + DEC_SEP: { + type: sequelize.CHAR + }, + THO_SEP: { + type: sequelize.CHAR + }, + ST_STAT: { + type: sequelize.CHAR + }, + USER_CREA: { + type: sequelize.STRING + }, + DATE_CREA: { + type: sequelize.STRING + }, + USER_UPDT: { + type: sequelize.STRING + }, + DATE_UPDT: { + type: sequelize.STRING + } + }, + { + timestamps: false, + freezeTableName: true, + } +) + + +StoreModel.removeAttribute('id') +module.exports = StoreModel; \ No newline at end of file diff --git a/app.js b/app.js index 1814177..168fd71 100644 --- a/app.js +++ b/app.js @@ -16,6 +16,8 @@ var indexRouter = require('./routes/index'); var usersRouter = require('./routes/users'); var authenticationRouter = require('./routes/authentication') var dbInfoRouter = require('./routes/db') +var itemRouter = require('./routes/item') +var storeRouter = require('./routes/store') //CORS @@ -44,6 +46,9 @@ app.use('/users', usersRouter); //Mount Route app.use("/api/v1/authentication", cors(), authenticationRouter); app.use("/api/v1/database", dbInfoRouter) +app.use("/api/v1/item", itemRouter) +app.use("/api/v1/store", storeRouter) + diff --git a/package-lock.json b/package-lock.json index 9fee3c5..38c40e3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,7 @@ "bcryptjs": "^2.4.3", "cookie-parser": "~1.4.4", "cors": "^2.8.5", + "dateformat": "^3.0.3", "debug": "~2.6.9", "dotenv": "^16.4.5", "express": "~4.16.1", @@ -863,6 +864,14 @@ "resolved": "https://registry.npmjs.org/css-stringify/-/css-stringify-1.0.5.tgz", "integrity": "sha512-aIThpcErhG5EyHorGqNlTh0TduNBqLrrXLO3x5rku3ZKBxuVfY+T7noyM2G2X/01iQANqJUb6d3+FLoa+N7Xwg==" }, + "node_modules/dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "engines": { + "node": "*" + } + }, "node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -3173,6 +3182,11 @@ "resolved": "https://registry.npmjs.org/css-stringify/-/css-stringify-1.0.5.tgz", "integrity": "sha512-aIThpcErhG5EyHorGqNlTh0TduNBqLrrXLO3x5rku3ZKBxuVfY+T7noyM2G2X/01iQANqJUb6d3+FLoa+N7Xwg==" }, + "dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==" + }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", diff --git a/package.json b/package.json index 3b28601..91e6a68 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ "bcryptjs": "^2.4.3", "cookie-parser": "~1.4.4", "cors": "^2.8.5", + "dateformat": "^3.0.3", "debug": "~2.6.9", "dotenv": "^16.4.5", "express": "~4.16.1", @@ -21,4 +22,4 @@ "tedious": "^18.2.1", "winston": "^3.13.0" } -} +} \ No newline at end of file diff --git a/routes/item.js b/routes/item.js new file mode 100644 index 0000000..312fd19 --- /dev/null +++ b/routes/item.js @@ -0,0 +1,8 @@ +const express = require('express') +const route = express.Router() +const controller = require("../Controller/Items") +const { protect } = require("../Middleware/auth") + +route.route("/").get(protect, controller.getAllItems) + +module.exports = route; \ No newline at end of file diff --git a/routes/store.js b/routes/store.js new file mode 100644 index 0000000..bdfe32c --- /dev/null +++ b/routes/store.js @@ -0,0 +1,9 @@ +const express = require('express') +const route = express.Router() +const controller = require("../Controller/Store") +const { protect } = require("../Middleware/auth") + +route.route("/").get(protect, controller.getStoreInfo) +route.route("/register").post(protect, controller.registerStore) + +module.exports = route; \ No newline at end of file