diff --git a/exthernal-ttc-api/src/controllers/budgetExpenseController.js b/exthernal-ttc-api/src/controllers/budgetExpenseController.js new file mode 100644 index 0000000..9580876 --- /dev/null +++ b/exthernal-ttc-api/src/controllers/budgetExpenseController.js @@ -0,0 +1,70 @@ +import { BudgetExpenseService } from '../services/budgetExpenseService.js' +import { ProjectSearchService } from '../services/projectSearchService.js' +import { sendError } from '../utils/response.js' +// import { OftenError } from '../utils/oftenError.js' +import { GeneralService } from '../share/generalservice.js'; +import { trim_all_array } from '../utils/trim.js' +import { verifyToken, generateToken } from '../utils/token.js' +import { Interface } from '../interfaces/Interface.js'; + + +export class budgetExpense { + + constructor() { + this.generalService = new GeneralService(); + this.Interface = new Interface(); + this.budgetExpenseService = new BudgetExpenseService(); + this.projectSearchService = new ProjectSearchService(); + } + + async onNavigate(req, res) { + this.generalService.devhint(1, 'budgetExpense.js', 'onNavigate() start'); + let organization = req.body.organization; + const prommis = await this.onBudgetExpense(req, res, organization); + return prommis; + } + + // TODO: + async onBudgetExpense(req, res, database) { + let idx = -1 + let aryResult = [] + let condition = {} + try { + let token = req.headers.authorization?.split(' ')[1]; + const decoded = verifyToken(token); + database = decoded.organization + var column = "" + + column = `prjseq` + condition['prjseq'] = req.body.request.prjseq; + + // Check if Project is valid + aryResult = await this.projectSearchService.getProjectSearch(database, column, condition) + } catch (error) { + idx = 1; + } finally { + if (idx === 1) return sendError('เกิดข้อผิดพลาดไม่คาดคิดเกิดขึ้น', 'Unexpected error'); + if (!aryResult) return sendError('ไม่พบการมีอยู่ของข้อมูล', 'Cannot Find Any Data'); + + if (aryResult.length == 1) { + // TODO: + + let prommis = await this.makeArySave(req); + return prommis + } else { + return sendError('ไม่พบการมีอยู่ของข้อมูลโครงการ', 'Cannot Find Project Data'); + } + } + } + + async makeArySave(req) { + let arysave = { + methods: 'post', + bdgseq: req.body.request.bdgseq, + bdgnam: req.body.request.bdgnam, + bdgcod: req.body.request.bdgcod, + bdgttl: req.body.request.bdgttl + } + return this.Interface.saveInterface('bdgmst', arysave, req); + } +} \ No newline at end of file diff --git a/exthernal-ttc-api/src/interfaces/table/trnmstInterface.js b/exthernal-ttc-api/src/interfaces/table/trnmstInterface.js index 551f9c5..a8f31a3 100644 --- a/exthernal-ttc-api/src/interfaces/table/trnmstInterface.js +++ b/exthernal-ttc-api/src/interfaces/table/trnmstInterface.js @@ -5,7 +5,7 @@ export class TrnmstInterface { constructor() { this.general = new GeneralService() this.table = 'trnmst' - this.pk = ['trnseq', 'trnprjnam'] // ⭐ PK จาก table + this.pk = ['trnseq', 'trnprjnam', 'trnbdgcod'] // ⭐ PK จาก table } async saveInterface(database, data) { diff --git a/exthernal-ttc-api/src/routes/route.js b/exthernal-ttc-api/src/routes/route.js index 9b7ad87..b26c5a9 100644 --- a/exthernal-ttc-api/src/routes/route.js +++ b/exthernal-ttc-api/src/routes/route.js @@ -3,6 +3,7 @@ import express from 'express' import { budgetSearch } from '../controllers/budgetSearchController.js' import { budgetAdd } from '../controllers/budgetAddController.js' import { projectSearch } from '../controllers/projectSearchController.js' +import { budgetExpense } from '../controllers/budgetExpenseController.js' // import { authMiddleware } from '../middlewares/auth.js' // import { sendResponse } from '../utils/response.js' @@ -11,6 +12,7 @@ const router = express.Router() const controller_projectSearch_post = new projectSearch() const controller_budgetSearch_post = new budgetSearch() const controller_budgetAdd_post = new budgetAdd() +const controller_budgetSetup_post = new budgetExpense() // router.post('/budgetSetup', async (req, res) => { // const result = await controller_budgetSetup_post.onNavigate(req, res) @@ -32,10 +34,10 @@ router.post('/projectsearch', async (req, res) => { if (result) return res.json(result) }) -// router.put('/budgetexpense', async (req, res) => { -// const result = await controller_budgetSetup_post.onNavigate(req, res) -// if (result) return res.json(result) -// }) +router.post('/budgetexpense', async (req, res) => { + const result = await controller_budgetSetup_post.onNavigate(req, res) + if (result) return res.json(result) +}) export default router diff --git a/exthernal-ttc-api/src/services/budgetExpenseService.js b/exthernal-ttc-api/src/services/budgetExpenseService.js new file mode 100644 index 0000000..c856096 --- /dev/null +++ b/exthernal-ttc-api/src/services/budgetExpenseService.js @@ -0,0 +1,21 @@ +import { GeneralService } from '../share/generalservice.js' + +export class BudgetExpenseService { + + constructor() { + this.generalService = new GeneralService() + } + + async getBudgetExpense(database, name) { + const sql = ` + SELECT + trnseq, + trnprjnam + FROM ${database}.trnmst + WHERE trnprjnam = $1 + ` + const params = [name] + const result = await this.generalService.executeQueryParam(database, sql, params); + return result + } +} \ No newline at end of file