From ca4883eb1c00a03aa8eaf721ed5869b5f2bb8cac Mon Sep 17 00:00:00 2001 From: Patrick Alvin Alcala Date: Thu, 5 Mar 2026 17:32:34 +0800 Subject: [PATCH 1/3] Updated backend --- backend/main.go | 65 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/backend/main.go b/backend/main.go index 0963b78..8f707dd 100644 --- a/backend/main.go +++ b/backend/main.go @@ -46,6 +46,14 @@ func getCORSConfig(env string) cors.Config { ExposeHeaders: []string{"Content-Length"}, AllowCredentials: true, } + case "lan": + return cors.Config{ + AllowOrigins: []string{"*"}, + AllowMethods: []string{"GET", "POST", "OPTIONS", "DELETE"}, + AllowHeaders: []string{"*"}, + ExposeHeaders: []string{"Content-Length"}, + AllowCredentials: true, + } default: return cors.DefaultConfig() } @@ -1466,6 +1474,19 @@ func connect() { "result2": resultCount, }) + case "login": + var resultInt, resultCount int + err := dbpop.QueryRow(`SELECT COUNT(OrderPayId) AS resultInt, COUNT(AFNum) AS resultCount FROM orderpaydetail WHERE oprefid = ?`, data).Scan(&resultInt, &resultCount) + if err != nil { + c.AbortWithError(http.StatusBadRequest, err) + c.String(http.StatusBadRequest, err.Error()) + return + } + c.JSON(http.StatusOK, gin.H{ + "result": resultInt, + "result2": resultCount, + }) + } }) @@ -2335,6 +2356,50 @@ func connect() { } }) + router.POST("/api/update-opforapproval-electrical", func(c *gin.Context) { + type forApprovalData struct { + Data string `json:"data"` //electricalNo + } + var forapprovalData forApprovalData + if err := c.ShouldBindJSON(&forapprovalData); err != nil { + c.String(http.StatusBadRequest, "Invalid request body") + return + } + + c.Writer.Header().Set("X-XSS-Protection", "1; mode=block") + c.Writer.Header().Set("X-Content-Type-Options", "nosniff") + c.Writer.Header().Set("X-DNS-Prefetch-Control", "off") + c.Writer.Header().Set("X-Frame-Options", "DENY") + c.Writer.Header().Set("X-Download-Options", "noopen") + c.Writer.Header().Set("Referrer-Policy", "no-referrer") + c.Writer.Header().Set("Content-Security-Policy", "default-src 'self'; img-src 'self';") + c.Writer.Header().Set("X-Server", "OCBO Server") + + dbpost, err := db.Prepare("UPDATE electrical_orderofpayment_new SET is_approve = 0, is_release = 0, popstransmitted = 0 WHERE is_paid = 0 AND electricalid = (SELECT electricalid FROM electrical WHERE electricalNo = ?)") + if err != nil { + c.AbortWithError(http.StatusInternalServerError, err) + c.String(http.StatusInternalServerError, "Internal Server Error") + return + } + defer dbpost.Close() + + exec, err := dbpost.Exec(forapprovalData.Data) + if err != nil { + panic(err.Error()) + } + + affect, err := exec.RowsAffected() + if err != nil { + panic(err.Error()) + } + + if affect > 0 { + c.String(http.StatusOK, "Success on Updating Re-Approval") + } else { + c.String(http.StatusInternalServerError, "Failed on Updating Re-Approval") + } + }) + // router.POST("/api/return-approval-electrical", middleware.TokenChecker(), func(c *gin.Context) { // type returnApprovalData struct { // Data string `json:"data"` //electricalNo From 03b637b49416ea67ff27482706aa0044ff804e3b Mon Sep 17 00:00:00 2001 From: Patrick Alvin Alcala Date: Thu, 5 Mar 2026 17:32:51 +0800 Subject: [PATCH 2/3] Updated assessor page --- src/pages/AssessorPage/Assessor.tsx | 54 +++++++++++++++++++++-------- 1 file changed, 40 insertions(+), 14 deletions(-) diff --git a/src/pages/AssessorPage/Assessor.tsx b/src/pages/AssessorPage/Assessor.tsx index 8ee85e9..7774278 100644 --- a/src/pages/AssessorPage/Assessor.tsx +++ b/src/pages/AssessorPage/Assessor.tsx @@ -32,11 +32,12 @@ import { _type, _units, } from '../../stores/pdfinfo.ts' -import { checkConnection, createPdfElectrical, createPdfOccupancy, getApi, getApiMulti, getDateTime, postApi, saveNewName, saveNewPassword, securePassword, statusPopsApi, voidPopsApi } from '../../utils/functions/index.ts' +import { checkConnection, createPdfElectrical, createPdfOccupancy, deleteApi, getApi, getApiMulti, getDateTime, postApi, saveNewName, saveNewPassword, securePassword, statusPopsApi, voidPopsApi } from '../../utils/functions/index.ts' import { AiOutlineLoading3Quarters } from 'solid-icons/ai' import './Assessor.sass' const PESO = import.meta.env.VITE_PESO +const BACKEND = import.meta.env.VITE_BACKEND export default () => { const navigate = useNavigate() @@ -348,6 +349,9 @@ export default () => { } const rePrintHandler = async (division: string, application: string) => { + let popsExist: boolean = false + let popsPaid: boolean = false + setConnected(await checkConnection()) if (connected() === false) { setErrorMessage('No Connection on Server') @@ -355,34 +359,46 @@ export default () => { } if (selectedType().includes('Void')) { - // Return to ASSESSMENT + // Return to APPROVAL // TODO: // Set current status (for validation) to 1, is_approve = 1 - // Clear order of payment as long as not Paid // Clear esign_transactions - const status = await statusPopsOp(application) - const message = status.message + if (BACKEND.includes('localhost')) { + const status = await checkStatusPopsLocal(application) + console.log('status', status) + if (status.result > 0) popsExist = true + if (status.result2 > 0) popsPaid = true + } else { + const status = await await statusPopsOp(application) + if (status.message === 'Success') popsExist = true + if (status.pops_paid === true) popsPaid = true + } - if (message.includes('No record')) { + // const status = await statusPopsOp(application) + // const message = status.message + + if (!popsExist) { setVoidError(true) setErrorMessage('No record found on Pops') return } else { - const pops_paid = message.pops_paid - const epay_paid = message.epay_paid + // const pops_paid = message.pops_paid + // const epay_paid = message.epay_paid + } - if (pops_paid || epay_paid) { - setVoidError(true) - setErrorMessage('Already Paid') - return - } + if (popsPaid) { + setVoidError(true) + setErrorMessage('Already Paid') + return } if (division === 'electrical') { await setNewStatus(division, 'ELECTRICAL ORDER OF PAYMENT VOIDED', '173', 'ELECOPVOIDED', 1) await setNewStatus(division, 'FOR ELECTRICAL ORDER OF PAYMENT APPROVAL', '94', 'ELECOPAPPROVE', 0) await updateDocflow(division, application, 'FOR ELECTRICAL ORDER OF PAYMENT PRINTING') + await updateOpForApproval(division, application) + await clearEsignTransactions(application) } else if (division === 'occupancy') { await setNewStatus(division, 'OCCUPANCY ORDER OF PAYMENT VOIDED', '174', 'OCCOPVOIDED', 1) //UNFINISH @@ -514,7 +530,7 @@ export default () => { } const checkStatusPopsLocal = async (application: string) => { - const response = await getApi('check-statuspops-local', application) + const response = await getApiMulti('check-statuspops-local', application) return response } @@ -523,6 +539,16 @@ export default () => { return response } + const updateOpForApproval = async (division: string, application: string) => { + const response = await postApi(`update-opforapproval-${division}`, { data: application }) + return response + } + + const clearEsignTransactions = async (application: string) => { + const response = await deleteApi('delete-esigntransactions', { data: application }) + return response + } + const saveConfig = async () => { if (configNewName() !== '') await saveNewName(parseInt(employeeId().toString()), configNewName()) if (configNewPassword() !== '') await saveNewPassword(parseInt(employeeId().toString()), configNewEncPassword()) From bbca186ab918362027d16a7bc2603bb5ef7f6cdd Mon Sep 17 00:00:00 2001 From: Patrick Alvin Alcala Date: Thu, 5 Mar 2026 17:33:03 +0800 Subject: [PATCH 3/3] Cleanup comment --- src/pages/MainPage/Main.tsx | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/pages/MainPage/Main.tsx b/src/pages/MainPage/Main.tsx index 417ee51..94371b1 100644 --- a/src/pages/MainPage/Main.tsx +++ b/src/pages/MainPage/Main.tsx @@ -172,9 +172,6 @@ export default () => { setLoadingText('Processing Data') if (division === 'electrical') { - // const isPaid = BACKEND.includes('localhost') ? await checkStatusPopsLocal(application) : await statusPopsOp(application) - // let isPaid - if (BACKEND.includes('localhost')) { const status = await checkStatusPopsLocal(application) if (status.result > 0) popsExist = true