Compare commits

...

5 commits

6 changed files with 89 additions and 100 deletions

3
.gitignore vendored
View file

@ -36,4 +36,7 @@ dist-ssr
/blob-report/ /blob-report/
/playwright/.cache/ /playwright/.cache/
# backend
/backend/bin

View file

@ -41,7 +41,8 @@ func connect() {
//DEV //DEV
router.Use(cors.New(cors.Config{ router.Use(cors.New(cors.Config{
AllowOrigins: []string{"http://localhost:5173"}, AllowOrigins: []string{"http://localhost:5173"},
// AllowAllOrigins: true,
AllowMethods: []string{"GET", "POST"}, AllowMethods: []string{"GET", "POST"},
AllowHeaders: []string{"Origin", "OCBO-ShieldConnection"}, AllowHeaders: []string{"Origin", "OCBO-ShieldConnection"},
ExposeHeaders: []string{"Content-Length"}, ExposeHeaders: []string{"Content-Length"},
@ -662,31 +663,15 @@ func connect() {
// array7 := []string{} // array7 := []string{}
// array8 := []string{} // array8 := []string{}
err := db.QueryRow(`SELECT DISTINCT IFNULL(el.electricalNo, '') AS result, IFNULL(op.opDate, '') AS result2, IFNULL(el.locationofinstallation, '') AS result3, IFNULL(occ.occupancy, '') AS result4, IFNULL(u.occupancyoruse, '') AS result5, IFNULL(el.noofUnits, '') AS result6, IFNULL(e.employeename, '') AS result7, IF(cu.firstName IS NULL OR cu.firstName = '', cu.lastName, CONCAT(cu.firstName, ' ', IF(cu.middleInitial IS NULL OR cu.middleInitial = '', '', CONCAT(cu.middleInitial, '. ')), cu.lastName) ) AS result8 err := db.QueryRow(`SELECT DISTINCT IFNULL(el.electricalNo, '') AS result, IFNULL(op.opDate, '') AS result2, IFNULL(el.locationofinstallation, '') AS result3, IFNULL(occ.occupancy, '') AS result4, IFNULL(u.occupancyoruse, '') AS result5, IFNULL(el.noofUnits, '') AS result6, IFNULL(e.employeename, '') AS result7, IF(cu.firstName IS NULL OR cu.firstName = '', cu.lastName, CONCAT(cu.firstName, ' ', IF(cu.middleInitial IS NULL OR cu.middleInitial = '', '', CONCAT(cu.middleInitial, '. ')), cu.lastName) ) AS result8
FROM electrical el, electrical_orderofpayment_new op, ref_occupancy occ, ref_elec_occupancy u, customer cu, employee e FROM electrical el, electrical_orderofpayment_new op, ref_occupancy occ, ref_elec_occupancy u, customer cu, employee e
WHERE el.customerid = cu.customerid AND el.ref_elec_occupancyid = u.ref_elec_occupancyid AND u.ref_occupancyid = occ.ref_occupancyid AND op.assessedbyid = e.employeeid WHERE el.customerid = cu.customerid AND el.ref_elec_occupancyid = u.ref_elec_occupancyid AND u.ref_occupancyid = occ.ref_occupancyid AND op.assessedbyid = e.employeeid
AND el.electricalid = op.electricalid AND op.is_approve = 0 AND op.for_approval = 1 AND op.is_release = 0 AND is_paid = 0 AND popstransmitted = 0 AND el.electricalid = ?`, data).Scan(&result, &result2, &result3, &result4, &result5, &result6, &result7, &result8) AND el.electricalid = op.electricalid AND op.is_approve = 1 AND op.for_approval = 1 AND op.is_release = 0 AND is_paid = 0 AND popstransmitted = 0 AND el.electricalid = ?`, data).Scan(&result, &result2, &result3, &result4, &result5, &result6, &result7, &result8)
if err != nil { if err != nil {
c.AbortWithError(http.StatusBadRequest, err) c.AbortWithError(http.StatusBadRequest, err)
c.String(http.StatusBadRequest, err.Error()) c.String(http.StatusBadRequest, err.Error())
return return
} }
// for results.Next() {
// err = results.Scan(&result, &result2, &result3, &result4, &result5, &result6, &result7, &result8)
// if err != nil {
// c.AbortWithError(http.StatusBadRequest, err)
// c.String(http.StatusBadRequest, err.Error())
// return
// }
// array = append(array, result)
// array2 = append(array2, result2)
// array3 = append(array3, result3)
// array4 = append(array4, result4)
// array5 = append(array5, result5)
// array6 = append(array6, result6)
// array7 = append(array7, result7)
// array8 = append(array8, result8)
// }
c.JSON(http.StatusOK, gin.H{ c.JSON(http.StatusOK, gin.H{
"result": result, "result": result,
"result2": result2, "result2": result2,
@ -705,7 +690,7 @@ func connect() {
array3 := []string{} array3 := []string{}
results, err := db.Query(`SELECT IFNULL(ref.accountdescription, '') AS result, IFNULL(ref.accountcode, '') AS result2, IFNULL(op.amount, '') AS result3 FROM electrical_orderofpayment_new op, ref_bldgcomputationsheet ref, electrical el results, err := db.Query(`SELECT IFNULL(ref.accountdescription, '') AS result, IFNULL(ref.accountcode, '') AS result2, IFNULL(op.amount, '') AS result3 FROM electrical_orderofpayment_new op, ref_bldgcomputationsheet ref, electrical el
WHERE op.is_approve = 0 AND op.for_approval = 1 AND op.is_release = 0 AND op.is_paid = 0 AND op.popstransmitted = 0 AND op.is_delete <> 1 AND op.ref_bldgcomputationsheetid = ref.ref_bldgcomputationsheetid WHERE op.is_approve = 1 AND op.for_approval = 1 AND op.is_release = 0 AND op.is_paid = 0 AND op.popstransmitted = 0 AND op.is_delete <> 1 AND op.ref_bldgcomputationsheetid = ref.ref_bldgcomputationsheetid
AND el.electricalid = op.electricalid AND op.electricalid = ?`, data) AND el.electricalid = op.electricalid AND op.electricalid = ?`, data)
if err != nil { if err != nil {
c.AbortWithError(http.StatusBadRequest, err) c.AbortWithError(http.StatusBadRequest, err)
@ -729,6 +714,44 @@ func connect() {
"result3": array3, "result3": array3,
}) })
case "get-signatureimage":
err := db.QueryRow("SELECT IFNULL(image, '') AS result FROM esign WHERE employeeid = ?", data).Scan(&result)
if err != nil {
c.AbortWithError(http.StatusBadRequest, err)
c.String(http.StatusBadRequest, err.Error())
return
}
c.JSON(http.StatusOK, gin.H{
"result": result,
})
}
})
router.GET("/api/:method/:data/:data2", func(c *gin.Context) {
var result string
method := c.Param("method")
data := c.Param("data")
data2 := c.Param("data2")
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")
switch method {
case "check-access":
err = db.QueryRow("SELECT COUNT(accessid) AS result FROM access a JOIN ref_access ra ON a.ref_accessid = ra.ref_accessid AND ra.access = ? and employeeid = ?", data, data2).Scan(&result)
if err != nil {
c.AbortWithError(http.StatusBadRequest, err)
c.String(http.StatusBadRequest, err.Error())
return
}
c.JSON(http.StatusOK, gin.H{
"result": result,
})
} }
}) })
@ -776,33 +799,6 @@ func connect() {
}) })
router.GET("/api/:method/:data/:data2", func(c *gin.Context) {
var result string
method := c.Param("method")
data := c.Param("data")
data2 := c.Param("data2")
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")
switch method {
case "check-access":
err = db.QueryRow("SELECT COUNT(accessid) AS result FROM access a JOIN ref_access ra ON a.ref_accessid = ra.ref_accessid AND ra.access = ? and employeeid = ?", data, data2).Scan(&result)
if err != nil {
c.AbortWithError(http.StatusBadRequest, err)
c.String(http.StatusBadRequest, err.Error())
return
}
c.JSON(http.StatusOK, gin.H{
"result": result,
})
}
})
router.POST("/api/post-newstatus-electrical", func(c *gin.Context) { router.POST("/api/post-newstatus-electrical", func(c *gin.Context) {
type RegistrationData struct { type RegistrationData struct {
Data int `json:"data"` Data int `json:"data"`
@ -907,7 +903,7 @@ func connect() {
c.Writer.Header().Set("X-Download-Options", "noopen") c.Writer.Header().Set("X-Download-Options", "noopen")
c.Writer.Header().Set("Referrer-Policy", "no-referrer") c.Writer.Header().Set("Referrer-Policy", "no-referrer")
dbpost, err := db.Prepare("UPDATE electrical_orderofpayment_new SET popstransmitted = 1 WHERE electricalid = ? AND for_approval = 1 AND is_release = 0 AND is_paid = 0 AND is_approve = 1") dbpost, err := db.Prepare("UPDATE electrical_orderofpayment_new SET popstransmitted = 1, is_release = 1 WHERE electricalid = ? AND for_approval = 1 AND is_paid = 0 AND is_approve = 1")
if err != nil { if err != nil {
panic(err.Error()) panic(err.Error())
} }

View file

@ -23,6 +23,7 @@
"ofetch": "^1.4.1", "ofetch": "^1.4.1",
"openssl-nodejs": "^1.0.5", "openssl-nodejs": "^1.0.5",
"pica": "^9.0.1", "pica": "^9.0.1",
"qrcode": "^1.5.4",
"sharp": "^0.34.4", "sharp": "^0.34.4",
"solid-icons": "^1.1.0", "solid-icons": "^1.1.0",
"solid-js": "^1.9.9", "solid-js": "^1.9.9",

64
pnpm-lock.yaml generated
View file

@ -50,6 +50,9 @@ importers:
pica: pica:
specifier: ^9.0.1 specifier: ^9.0.1
version: 9.0.1 version: 9.0.1
qrcode:
specifier: ^1.5.4
version: 1.5.4
sharp: sharp:
specifier: ^0.34.4 specifier: ^0.34.4
version: 0.34.4 version: 0.34.4
@ -2628,13 +2631,11 @@ snapshots:
dependencies: dependencies:
event-target-shim: 5.0.1 event-target-shim: 5.0.1
ansi-regex@5.0.1: ansi-regex@5.0.1: {}
optional: true
ansi-styles@4.3.0: ansi-styles@4.3.0:
dependencies: dependencies:
color-convert: 2.0.1 color-convert: 2.0.1
optional: true
any-base@1.1.0: {} any-base@1.1.0: {}
@ -2686,8 +2687,7 @@ snapshots:
base64-js: 1.5.1 base64-js: 1.5.1
ieee754: 1.2.1 ieee754: 1.2.1
camelcase@5.3.1: camelcase@5.3.1: {}
optional: true
caniuse-lite@1.0.30001743: {} caniuse-lite@1.0.30001743: {}
@ -2713,15 +2713,12 @@ snapshots:
string-width: 4.2.3 string-width: 4.2.3
strip-ansi: 6.0.1 strip-ansi: 6.0.1
wrap-ansi: 6.2.0 wrap-ansi: 6.2.0
optional: true
color-convert@2.0.1: color-convert@2.0.1:
dependencies: dependencies:
color-name: 1.1.4 color-name: 1.1.4
optional: true
color-name@1.1.4: color-name@1.1.4: {}
optional: true
colorjs.io@0.5.2: {} colorjs.io@0.5.2: {}
@ -2747,8 +2744,7 @@ snapshots:
dependencies: dependencies:
ms: 2.1.3 ms: 2.1.3
decamelize@1.2.0: decamelize@1.2.0: {}
optional: true
destr@2.0.5: {} destr@2.0.5: {}
@ -2757,8 +2753,7 @@ snapshots:
detect-libc@2.1.0: {} detect-libc@2.1.0: {}
dijkstrajs@1.0.3: dijkstrajs@1.0.3: {}
optional: true
dompurify@3.2.7: dompurify@3.2.7:
optionalDependencies: optionalDependencies:
@ -2767,8 +2762,7 @@ snapshots:
electron-to-chromium@1.5.222: {} electron-to-chromium@1.5.222: {}
emoji-regex@8.0.0: emoji-regex@8.0.0: {}
optional: true
entities@6.0.1: {} entities@6.0.1: {}
@ -2838,15 +2832,13 @@ snapshots:
dependencies: dependencies:
locate-path: 5.0.0 locate-path: 5.0.0
path-exists: 4.0.0 path-exists: 4.0.0
optional: true
fsevents@2.3.3: fsevents@2.3.3:
optional: true optional: true
gensync@1.0.0-beta.2: {} gensync@1.0.0-beta.2: {}
get-caller-file@2.0.5: get-caller-file@2.0.5: {}
optional: true
gifwrap@0.10.1: gifwrap@0.10.1:
dependencies: dependencies:
@ -2880,8 +2872,7 @@ snapshots:
is-extglob@2.1.1: is-extglob@2.1.1:
optional: true optional: true
is-fullwidth-code-point@3.0.0: is-fullwidth-code-point@3.0.0: {}
optional: true
is-glob@4.0.3: is-glob@4.0.3:
dependencies: dependencies:
@ -2949,7 +2940,6 @@ snapshots:
locate-path@5.0.0: locate-path@5.0.0:
dependencies: dependencies:
p-locate: 4.1.0 p-locate: 4.1.0
optional: true
lru-cache@5.1.1: lru-cache@5.1.1:
dependencies: dependencies:
@ -3000,15 +2990,12 @@ snapshots:
p-limit@2.3.0: p-limit@2.3.0:
dependencies: dependencies:
p-try: 2.2.0 p-try: 2.2.0
optional: true
p-locate@4.1.0: p-locate@4.1.0:
dependencies: dependencies:
p-limit: 2.3.0 p-limit: 2.3.0
optional: true
p-try@2.2.0: p-try@2.2.0: {}
optional: true
pako@1.0.11: {} pako@1.0.11: {}
@ -3027,8 +3014,7 @@ snapshots:
dependencies: dependencies:
entities: 6.0.1 entities: 6.0.1
path-exists@4.0.0: path-exists@4.0.0: {}
optional: true
peek-readable@4.1.0: {} peek-readable@4.1.0: {}
@ -3053,8 +3039,7 @@ snapshots:
dependencies: dependencies:
pngjs: 6.0.0 pngjs: 6.0.0
pngjs@5.0.0: pngjs@5.0.0: {}
optional: true
pngjs@6.0.0: {} pngjs@6.0.0: {}
@ -3073,7 +3058,6 @@ snapshots:
dijkstrajs: 1.0.3 dijkstrajs: 1.0.3
pngjs: 5.0.0 pngjs: 5.0.0
yargs: 15.4.1 yargs: 15.4.1
optional: true
raf@3.4.1: raf@3.4.1:
dependencies: dependencies:
@ -3098,11 +3082,9 @@ snapshots:
regenerator-runtime@0.13.11: regenerator-runtime@0.13.11:
optional: true optional: true
require-directory@2.1.1: require-directory@2.1.1: {}
optional: true
require-main-filename@2.0.0: require-main-filename@2.0.0: {}
optional: true
rgbcolor@1.0.1: rgbcolor@1.0.1:
optional: true optional: true
@ -3250,8 +3232,7 @@ snapshots:
seroval@1.3.2: {} seroval@1.3.2: {}
set-blocking@2.0.0: set-blocking@2.0.0: {}
optional: true
sharp@0.34.4: sharp@0.34.4:
dependencies: dependencies:
@ -3330,7 +3311,6 @@ snapshots:
emoji-regex: 8.0.0 emoji-regex: 8.0.0
is-fullwidth-code-point: 3.0.0 is-fullwidth-code-point: 3.0.0
strip-ansi: 6.0.1 strip-ansi: 6.0.1
optional: true
string_decoder@1.3.0: string_decoder@1.3.0:
dependencies: dependencies:
@ -3339,7 +3319,6 @@ snapshots:
strip-ansi@6.0.1: strip-ansi@6.0.1:
dependencies: dependencies:
ansi-regex: 5.0.1 ansi-regex: 5.0.1
optional: true
strtok3@6.3.0: strtok3@6.3.0:
dependencies: dependencies:
@ -3450,15 +3429,13 @@ snapshots:
webworkify@1.5.0: {} webworkify@1.5.0: {}
which-module@2.0.1: which-module@2.0.1: {}
optional: true
wrap-ansi@6.2.0: wrap-ansi@6.2.0:
dependencies: dependencies:
ansi-styles: 4.3.0 ansi-styles: 4.3.0
string-width: 4.2.3 string-width: 4.2.3
strip-ansi: 6.0.1 strip-ansi: 6.0.1
optional: true
xml-parse-from-string@1.0.1: {} xml-parse-from-string@1.0.1: {}
@ -3469,8 +3446,7 @@ snapshots:
xmlbuilder@11.0.1: {} xmlbuilder@11.0.1: {}
y18n@4.0.3: y18n@4.0.3: {}
optional: true
yallist@3.1.1: {} yallist@3.1.1: {}
@ -3478,7 +3454,6 @@ snapshots:
dependencies: dependencies:
camelcase: 5.3.1 camelcase: 5.3.1
decamelize: 1.2.0 decamelize: 1.2.0
optional: true
yargs@15.4.1: yargs@15.4.1:
dependencies: dependencies:
@ -3493,6 +3468,5 @@ snapshots:
which-module: 2.0.1 which-module: 2.0.1
y18n: 4.0.3 y18n: 4.0.3
yargs-parser: 18.1.3 yargs-parser: 18.1.3
optional: true
zod@3.25.76: {} zod@3.25.76: {}

View file

@ -9,7 +9,7 @@ import { checkConnection, createPdf } from '../../utils/functions'
import { FaSolidThumbsUp } from 'solid-icons/fa' import { FaSolidThumbsUp } from 'solid-icons/fa'
import { _employeeName, _employeeId } from '../../stores/employee' import { _employeeName, _employeeId } from '../../stores/employee'
import { useNavigate } from '@solidjs/router' import { useNavigate } from '@solidjs/router'
import { _applicationNo, _date, _optn, _name, _location, _type, _assessor, _feeList, _codeList, _amountList } from '../../stores/pdfinfo' import { _applicationNo, _date, _optn, _name, _location, _type, _assessor, _feeList, _codeList, _amountList, _signature, _assessorid } from '../../stores/pdfinfo'
const API = import.meta.env.VITE_BACKEND const API = import.meta.env.VITE_BACKEND
const PESO = import.meta.env.VITE_PESO const PESO = import.meta.env.VITE_PESO
@ -48,6 +48,8 @@ export default () => {
const [employeeId, setEmployeeId] = createSignal(0) const [employeeId, setEmployeeId] = createSignal(0)
const [employeeName, setEmployeeName] = createSignal('') const [employeeName, setEmployeeName] = createSignal('')
const [sign, setSign] = createSignal('')
// const [docApplicationNo, setDocApplicationNo] = createSignal('') // const [docApplicationNo, setDocApplicationNo] = createSignal('')
// const [docDate, setDocDate] = createSignal('') // const [docDate, setDocDate] = createSignal('')
// const [docLocation, setDocLocation] = createSignal('') // const [docLocation, setDocLocation] = createSignal('')
@ -79,6 +81,7 @@ export default () => {
_location.set(location) _location.set(location)
_type.set(type) _type.set(type)
_assessor.set(assessor) _assessor.set(assessor)
_assessorid.set(employeeId())
} }
const getPrintDetailsFees = async (id: number) => { const getPrintDetailsFees = async (id: number) => {
@ -151,6 +154,7 @@ export default () => {
getPrintDetails(op.result11[0]) getPrintDetails(op.result11[0])
getPrintDetailsFees(op.result11[0]) getPrintDetailsFees(op.result11[0])
getSignatureImage(employeeId())
} }
const calculateTotal = (list: number[]) => { const calculateTotal = (list: number[]) => {
@ -207,14 +211,14 @@ export default () => {
// updateOrderofpayment = await updateOp() // updateOrderofpayment = await updateOp()
// if (updateOrderofpayment) { // if (updateOrderofpayment) {
// setPrintedApplication(application) // setPrintedApplication(application)
// setPrinted(true) // setPrinted(true)
// getPrintDetails(applicationId())
createPdf() createPdf()
// } // }
} }
const updateOp = async () => { const updateOp = async () => {
console.log(applicationId())
try { try {
await ofetch(API + 'update-opprinted-electrical', { await ofetch(API + 'update-opprinted-electrical', {
method: 'POST', method: 'POST',
@ -242,6 +246,17 @@ export default () => {
} }
} }
const getSignatureImage = async (id: number) => {
try {
const response = await ofetch(API + 'get-signatureimage/' + id, { parseResponse: JSON.parse })
const image = response.result
_signature.set(image)
return true
} catch {
return false
}
}
const logout = async () => { const logout = async () => {
removeEmployee() removeEmployee()
navigate('/') navigate('/')

View file

@ -44,7 +44,7 @@ export default () => {
setName(APPROVERNAME) setName(APPROVERNAME)
} }
const hash = SHA3(id().toString()) const hash = SHA3(id().toString())
setSignature(`Scan this using OCBO e-Sign Validator - scanid=${hash.toString()}`) setSignature(`Use OCBO e-Sign Validator - scanid=${hash.toString()}`)
try { try {
register() register()