diff --git a/exthernal-ttc-api/src/controllers/projectAddController.js b/exthernal-ttc-api/src/controllers/projectAddController.js new file mode 100644 index 0000000..3ee66ca --- /dev/null +++ b/exthernal-ttc-api/src/controllers/projectAddController.js @@ -0,0 +1,69 @@ +import { ProjectAddService } from '../services/projectAddService.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 projectAdd { + + constructor() { + this.generalService = new GeneralService(); + this.Interface = new Interface(); + this.projectAddService = new ProjectAddService(); + } + + async onNavigate(req, res) { + this.generalService.devhint(1, 'projectAdd.js', 'onNavigate() start'); + let organization = req.body.organization; + const prommis = await this.onProjectAdd(req, res, organization); + return prommis; + } + + async onProjectAdd(req, res, database) { + let idx = -1 + let aryResult = [] + let latSeq = [] + try { + let token = req.headers.authorization?.split(' ')[1]; + const decoded = verifyToken(token); + + let name = req.body.request.prjnam; + database = decoded.organization; + + aryResult = await this.projectAddService.getProjectAdd(database, name); + latSeq = await this.projectAddService.getLatestProjectSeq(database); + // this.generalService.devhint(1, 'budgetSearch.js', 'Login success'); + } catch (error) { + idx = 1; + } finally { + if (idx === 1) return sendError('เกิดข้อผิดพลาดไม่คาดคิดเกิดขึ้น', 'Unexpected error'); + // if (!aryResult) return sendError('ไม่พบการมีอยู่ของข้อมูล', 'Cannot Find Any Data'); + + if (aryResult == 0) { + let prommis = await this.makeArySave(req, latSeq[0].prjseq); + return prommis + } else { + return sendError('คีย์หลักซ้ำในระบบ', 'Duplicate Primary Key'); + } + } + } + + + async makeArySave(req, latseq) { + let arysave = { + methods: 'post', + prjseq: latseq+1, + prjnam: req.body.request.prjnam, + prjusrseq: req.body.request.prjusrseq, + prjwntbdg: req.body.request.prjwntbdg, + prjacpbdg: req.body.request.prjacpbdg, + prjbdgcod: req.body.request.prjbdgcod, + prjcomstt: req.body.request.prjcomstt, + prjacpdtm: req.body.request.prjacpdtm + } + return this.Interface.saveInterface('prjmst', arysave, req); + } +} diff --git a/exthernal-ttc-api/src/routes/route.js b/exthernal-ttc-api/src/routes/route.js index 65761f4..183eb1b 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 { projectAdd } from '../controllers/projectAddController.js' import { budgetExpense } from '../controllers/budgetExpenseController.js' import { reportController } from '../controllers/ReportController.js' @@ -15,6 +16,7 @@ const controller_budgetSearch_post = new budgetSearch() const controller_budgetAdd_post = new budgetAdd() const controller_budgetSetup_post = new budgetExpense() const controller_report_post = new reportController() +const controller_projectAdd_post = new projectAdd() // router.post('/budgetSetup', async (req, res) => { // const result = await controller_budgetSetup_post.onNavigate(req, res) @@ -36,6 +38,11 @@ router.post('/projectsearch', async (req, res) => { if (result) return res.json(result) }) +router.post('/projectadd', async (req, res) => { + const result = await controller_projectAdd_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) diff --git a/exthernal-ttc-api/src/services/projectAddService.js b/exthernal-ttc-api/src/services/projectAddService.js new file mode 100644 index 0000000..294903f --- /dev/null +++ b/exthernal-ttc-api/src/services/projectAddService.js @@ -0,0 +1,34 @@ +import { GeneralService } from '../share/generalservice.js' + +export class ProjectAddService { + + constructor() { + this.generalService = new GeneralService() + } + + async getProjectAdd(database, name) { + const sql = ` + SELECT + prjseq, + prjnam + FROM ${database}.prjmst + WHERE prjnam = $1 + ` + const params = [name] + const result = await this.generalService.executeQueryParam(database, sql, params); + return result + } + + async getLatestProjectSeq(database) { + const sql = ` + SELECT + prjseq + FROM ${database}.prjmst + WHERE prjseq=(SELECT max(prjseq) FROM ${database}.prjmst) + ` + + const params = [] + const result = await this.generalService.executeQueryParam(database, sql, params); + return result + } +} \ No newline at end of file