From 8e9b6048dd9d3f73933cd24bfeb124dbab13dbaf Mon Sep 17 00:00:00 2001 From: Patrick Alvin Alcala Date: Fri, 27 Feb 2026 19:33:47 +0800 Subject: [PATCH 1/4] Updated backend dependencies --- backend/go.mod | 2 +- backend/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/go.mod b/backend/go.mod index 5af1d63..09733c8 100644 --- a/backend/go.mod +++ b/backend/go.mod @@ -36,7 +36,7 @@ require ( go.uber.org/mock v0.6.0 // indirect golang.org/x/arch v0.24.0 // indirect golang.org/x/crypto v0.48.0 // indirect - golang.org/x/net v0.50.0 // indirect + golang.org/x/net v0.51.0 // indirect golang.org/x/sys v0.41.0 // indirect golang.org/x/text v0.34.0 // indirect google.golang.org/protobuf v1.36.11 // indirect diff --git a/backend/go.sum b/backend/go.sum index 15ab7a3..8238c0d 100644 --- a/backend/go.sum +++ b/backend/go.sum @@ -80,8 +80,8 @@ golang.org/x/arch v0.24.0 h1:qlJ3M9upxvFfwRM51tTg3Yl+8CP9vCC1E7vlFpgv99Y= golang.org/x/arch v0.24.0/go.mod h1:dNHoOeKiyja7GTvF9NJS1l3Z2yntpQNzgrjh1cU103A= golang.org/x/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts= golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos= -golang.org/x/net v0.50.0 h1:ucWh9eiCGyDR3vtzso0WMQinm2Dnt8cFMuQa9K33J60= -golang.org/x/net v0.50.0/go.mod h1:UgoSli3F/pBgdJBHCTc+tp3gmrU4XswgGRgtnwWTfyM= +golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo= +golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= From 0dfa74b76fb4997ac038b69ee35eabd6c56415f6 Mon Sep 17 00:00:00 2001 From: Patrick Alvin Alcala Date: Fri, 27 Feb 2026 19:34:03 +0800 Subject: [PATCH 2/4] Updated backend --- backend/main.go | 51 ++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 48 insertions(+), 3 deletions(-) diff --git a/backend/main.go b/backend/main.go index 236efea..ce29a3a 100644 --- a/backend/main.go +++ b/backend/main.go @@ -30,9 +30,10 @@ func getCORSConfig(env string) cors.Config { switch env { case "dev": return cors.Config{ - AllowOrigins: []string{"http://localhost:5173"}, - AllowMethods: []string{"GET", "POST", "OPTIONS", "DELETE"}, - AllowHeaders: []string{"Origin", "OCBO-Token", "Content-Length", "Content-Type", "X-Server"}, + AllowOrigins: []string{"http://localhost:5173"}, + AllowMethods: []string{"GET", "POST", "OPTIONS", "DELETE"}, + // AllowHeaders: []string{"Origin", "OCBO-Token", "Content-Length", "Content-Type", "X-Server", "Authorization"}, + AllowHeaders: []string{"*"}, ExposeHeaders: []string{"Content-Length"}, AllowCredentials: true, } @@ -2492,5 +2493,49 @@ func connect() { } }) + router.DELETE("/api/delete-esigntransactions", func(c *gin.Context) { + type DeleteOPLocal struct { + Data string `json:"data"` + } + var deleteOpLocal DeleteOPLocal + if err := c.ShouldBindJSON(&deleteOpLocal); 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 := dbpop.Prepare("DELETE FROM esign_transactions WHERE referenceNo = ?") + if err != nil { + c.AbortWithError(http.StatusInternalServerError, err) + c.String(http.StatusInternalServerError, "Internal Server Error") + return + } + defer dbpost.Close() + + exec, err := dbpost.Exec(deleteOpLocal.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 Deleting eSign Transactions") + } else { + c.String(http.StatusInternalServerError, "Failed on Deleting eSign Transactions") + } + }) + router.Run(":4320") } From c289a5d1a0c6e4486307bbf62099011e96f79090 Mon Sep 17 00:00:00 2001 From: Patrick Alvin Alcala Date: Fri, 27 Feb 2026 19:34:17 +0800 Subject: [PATCH 3/4] Updated frontend dependencies --- package.json | 4 ++-- pnpm-lock.yaml | 44 ++++++++++++++++++++++---------------------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/package.json b/package.json index 4cbd703..182992f 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "jsencrypt": "^3.5.4", "jspdf": "^3.0.4", "jspdf-barcode": "^1.0.2", - "nanostores": "^1.1.0", + "nanostores": "^1.1.1", "ofetch": "^1.5.1", "openssl-nodejs": "^1.0.5", "pica": "^9.0.1", @@ -37,7 +37,7 @@ "@biomejs/biome": "^2.4.4", "@nanostores/solid": "^1.1.1", "@types/crypto-js": "^4.2.2", - "@types/node": "^24.10.13", + "@types/node": "^24.10.15", "sass-embedded": "^1.97.3", "typescript": "~5.8.3", "vite": "^7.3.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 57b84e2..23ad850 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -48,8 +48,8 @@ importers: specifier: ^1.0.2 version: 1.0.2(jspdf@3.0.4) nanostores: - specifier: ^1.1.0 - version: 1.1.0 + specifier: ^1.1.1 + version: 1.1.1 ofetch: specifier: ^1.5.1 version: 1.5.1 @@ -80,13 +80,13 @@ importers: version: 2.4.4 '@nanostores/solid': specifier: ^1.1.1 - version: 1.1.1(nanostores@1.1.0)(solid-js@1.9.11) + version: 1.1.1(nanostores@1.1.1)(solid-js@1.9.11) '@types/crypto-js': specifier: ^4.2.2 version: 4.2.2 '@types/node': - specifier: ^24.10.13 - version: 24.10.13 + specifier: ^24.10.15 + version: 24.10.15 sass-embedded: specifier: ^1.97.3 version: 1.97.3 @@ -95,13 +95,13 @@ importers: version: 5.8.3 vite: specifier: ^7.3.1 - version: 7.3.1(@types/node@24.10.13)(sass-embedded@1.97.3)(sass@1.97.3) + version: 7.3.1(@types/node@24.10.15)(sass-embedded@1.97.3)(sass@1.97.3) vite-plugin-compression2: specifier: ^2.4.0 version: 2.4.0(rollup@4.52.1) vite-plugin-solid: specifier: ^2.11.10 - version: 2.11.10(solid-js@1.9.11)(vite@7.3.1(@types/node@24.10.13)(sass-embedded@1.97.3)(sass@1.97.3)) + version: 2.11.10(solid-js@1.9.11)(vite@7.3.1(@types/node@24.10.15)(sass-embedded@1.97.3)(sass@1.97.3)) packages: @@ -1084,8 +1084,8 @@ packages: '@types/node@16.9.1': resolution: {integrity: sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==} - '@types/node@24.10.13': - resolution: {integrity: sha512-oH72nZRfDv9lADUBSo104Aq7gPHpQZc4BTx38r9xf9pg5LfP6EzSyH2n7qFmmxRQXh7YlUXODcYsg6PuTDSxGg==} + '@types/node@24.10.15': + resolution: {integrity: sha512-BgjLoRuSr0MTI5wA6gMw9Xy0sFudAaUuvrnjgGx9wZ522fYYLA5SYJ+1Y30vTcJEG+DRCyDHx/gzQVfofYzSdg==} '@types/pako@2.0.4': resolution: {integrity: sha512-VWDCbrLeVXJM9fihYodcLiIv0ku+AlOa/TQ1SvYOaBuyrSKgEcro95LJyIsJ4vSo6BXIxOKxiJAat04CmST9Fw==} @@ -1405,8 +1405,8 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - nanostores@1.1.0: - resolution: {integrity: sha512-yJBmDJr18xy47dbNVlHcgdPrulSn1nhSE6Ns9vTG+Nx9VPT6iV1MD6aQFp/t52zpf82FhLLTXAXr30NuCnxvwA==} + nanostores@1.1.1: + resolution: {integrity: sha512-EYJqS25r2iBeTtGQCHidXl1VfZ1jXM7Q04zXJOrMlxVVmD0ptxJaNux92n1mJ7c5lN3zTq12MhH/8x59nP+qmg==} engines: {node: ^20.0.0 || >=22.0.0} node-addon-api@7.1.1: @@ -2510,9 +2510,9 @@ snapshots: '@solid-primitives/utils': 6.3.2(solid-js@1.9.11) solid-js: 1.9.11 - '@nanostores/solid@1.1.1(nanostores@1.1.0)(solid-js@1.9.11)': + '@nanostores/solid@1.1.1(nanostores@1.1.1)(solid-js@1.9.11)': dependencies: - nanostores: 1.1.0 + nanostores: 1.1.1 solid-js: 1.9.11 '@parcel/watcher-android-arm64@2.5.4': @@ -2762,7 +2762,7 @@ snapshots: '@types/node@16.9.1': {} - '@types/node@24.10.13': + '@types/node@24.10.15': dependencies: undici-types: 7.16.0 @@ -3093,7 +3093,7 @@ snapshots: nanoid@3.3.11: {} - nanostores@1.1.0: {} + nanostores@1.1.1: {} node-addon-api@7.1.1: optional: true @@ -3516,7 +3516,7 @@ snapshots: transitivePeerDependencies: - rollup - vite-plugin-solid@2.11.10(solid-js@1.9.11)(vite@7.3.1(@types/node@24.10.13)(sass-embedded@1.97.3)(sass@1.97.3)): + vite-plugin-solid@2.11.10(solid-js@1.9.11)(vite@7.3.1(@types/node@24.10.15)(sass-embedded@1.97.3)(sass@1.97.3)): dependencies: '@babel/core': 7.28.4 '@types/babel__core': 7.20.5 @@ -3524,12 +3524,12 @@ snapshots: merge-anything: 5.1.7 solid-js: 1.9.11 solid-refresh: 0.6.3(solid-js@1.9.11) - vite: 7.3.1(@types/node@24.10.13)(sass-embedded@1.97.3)(sass@1.97.3) - vitefu: 1.1.1(vite@7.3.1(@types/node@24.10.13)(sass-embedded@1.97.3)(sass@1.97.3)) + vite: 7.3.1(@types/node@24.10.15)(sass-embedded@1.97.3)(sass@1.97.3) + vitefu: 1.1.1(vite@7.3.1(@types/node@24.10.15)(sass-embedded@1.97.3)(sass@1.97.3)) transitivePeerDependencies: - supports-color - vite@7.3.1(@types/node@24.10.13)(sass-embedded@1.97.3)(sass@1.97.3): + vite@7.3.1(@types/node@24.10.15)(sass-embedded@1.97.3)(sass@1.97.3): dependencies: esbuild: 0.27.2 fdir: 6.5.0(picomatch@4.0.3) @@ -3538,14 +3538,14 @@ snapshots: rollup: 4.52.1 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 24.10.13 + '@types/node': 24.10.15 fsevents: 2.3.3 sass: 1.97.3 sass-embedded: 1.97.3 - vitefu@1.1.1(vite@7.3.1(@types/node@24.10.13)(sass-embedded@1.97.3)(sass@1.97.3)): + vitefu@1.1.1(vite@7.3.1(@types/node@24.10.15)(sass-embedded@1.97.3)(sass@1.97.3)): optionalDependencies: - vite: 7.3.1(@types/node@24.10.13)(sass-embedded@1.97.3)(sass@1.97.3) + vite: 7.3.1(@types/node@24.10.15)(sass-embedded@1.97.3)(sass@1.97.3) webworkify@1.5.0: {} From b1bac79e02367f48975f107e2545987389d89a79 Mon Sep 17 00:00:00 2001 From: Patrick Alvin Alcala Date: Fri, 27 Feb 2026 19:34:26 +0800 Subject: [PATCH 4/4] Updated assessor --- src/pages/AssessorPage/Assessor.tsx | 87 ++++++++++++++--------------- 1 file changed, 43 insertions(+), 44 deletions(-) diff --git a/src/pages/AssessorPage/Assessor.tsx b/src/pages/AssessorPage/Assessor.tsx index 9c47f6f..193cd6f 100644 --- a/src/pages/AssessorPage/Assessor.tsx +++ b/src/pages/AssessorPage/Assessor.tsx @@ -1,12 +1,12 @@ -import { Tabs } from '@kobalte/core/tabs'; -import { useNavigate } from '@solidjs/router'; -import dayjs from 'dayjs'; -import { FaSolidThumbsUp } from 'solid-icons/fa'; -import { FiLogOut } from 'solid-icons/fi'; -import { VsRefresh } from 'solid-icons/vs'; -import { createEffect, createSignal, onMount } from 'solid-js'; -import { Show } from 'solid-js/web'; -import { Box, Button, Clickable, Column, Combobox, Input, Link, Logo, Modal, ModalButton, Padding, Page, Row } from '../../components/index.ts'; +import { Tabs } from '@kobalte/core/tabs' +import { useNavigate } from '@solidjs/router' +import dayjs from 'dayjs' +import { FaSolidThumbsUp, FaSolidUserGear } from 'solid-icons/fa' +import { FiLogOut } from 'solid-icons/fi' +import { VsRefresh } from 'solid-icons/vs' +import { createEffect, createSignal, onMount } from 'solid-js' +import { Show } from 'solid-js/web' +import { Box, Button, Clickable, Column, Combobox, Input, Link, Logo, Modal, ModalButton, Padding, Page, Row } from '../../components/index.ts' import { _additional, _additionalAmountList, @@ -31,10 +31,9 @@ import { _totalUnits, _type, _units, -} from '../../stores/pdfinfo.ts'; -import { checkConnection, createPdfElectrical, createPdfOccupancy, getApi, getApiMulti, postApi, statusPopsApi, voidPopsApi, saveNewName, saveNewPassword, securePassword, getDateTime } from '../../utils/functions/index.ts'; -import './Assessor.sass'; -import { FaSolidUserGear } from 'solid-icons/fa' +} from '../../stores/pdfinfo.ts' +import { checkConnection, createPdfElectrical, createPdfOccupancy, getApi, getApiMulti, getDateTime, postApi, saveNewName, saveNewPassword, securePassword, statusPopsApi, voidPopsApi } from '../../utils/functions/index.ts' +import './Assessor.sass' const PESO = import.meta.env.VITE_PESO @@ -79,7 +78,7 @@ export default () => { const [filter, setFilter] = createSignal('') - const listType = ['Print', 'Reprint (No Change)', 'Void and Reprint'] + const listType = ['Print', 'Reprint (No Change)', 'Void and Reapprove'] const [selectedType, setSelectedType] = createSignal('Print') const [voidError, setVoidError] = createSignal(false) @@ -348,13 +347,19 @@ export default () => { return } - if (selectedType().includes("Void")) { + if (selectedType().includes('Void')) { + // Return to ASSESSMENT + // 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 (message.includes('No record')) { setVoidError(true) - setErrorMessage("No record found on Pops") + setErrorMessage('No record found on Pops') return } else { const pops_paid = message.pops_paid @@ -362,7 +367,7 @@ export default () => { if (pops_paid || epay_paid) { setVoidError(true) - setErrorMessage("Already Paid") + setErrorMessage('Already Paid') return } } @@ -525,7 +530,6 @@ export default () => { setConfigError('') encryptNewPassword() } - } else { setConfigError('Invalid Password') setConfigNewEncPassword('') @@ -590,13 +594,12 @@ export default () => { createEffect(() => { if (configPassword() !== '') { - checkCurrentPassword(); - } else checkCurrentPassword(); + checkCurrentPassword() + } else checkCurrentPassword() if (configNewPassword() !== '') { encryptNewPassword() } else encryptNewPassword() - }) return ( @@ -613,9 +616,7 @@ export default () => { - - {employeeName()} - + {employeeName()} setOpenConfig(true)}> @@ -664,7 +665,6 @@ export default () => { - {/* */} @@ -859,7 +859,7 @@ export default () => { {/* */} - + @@ -1020,25 +1020,24 @@ export default () => { - - + -
-
+
+
Name: {employeeName()}
-
- Change Displayed Name - - Leave blank to remain unchanged. +
+ Change Displayed Name + + Leave blank to remain unchanged.
-
- Change Password - - +
+ Change Password + + Current Encrypted Password: @@ -1051,18 +1050,18 @@ export default () => { {configError()} -
- +
@@ -1079,7 +1078,7 @@ export default () => { - +
)