diff --git a/backend/main.go b/backend/main.go index 645f722..d2ebb55 100644 --- a/backend/main.go +++ b/backend/main.go @@ -651,6 +651,57 @@ func connect() { "result": result, }) + case "get-printdetails-electrical": + var result2, result3, result4, result5, result6, result7, result8, result9 string + array := []string{} + array2 := []string{} + array3 := []string{} + array4 := []string{} + array5 := []string{} + array6 := []string{} + array7 := []string{} + array8 := []string{} + array9 := []string{} + + results, err := db.Query(`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, IFNULL(op.optn, '') AS result9 + 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 + 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) + if err != nil { + c.AbortWithError(http.StatusBadRequest, err) + c.String(http.StatusBadRequest, err.Error()) + return + } + for results.Next() { + err = results.Scan(&result, &result2, &result3, &result4, &result5, &result6, &result7, &result8, &result9) + 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) + array9 = append(array9, result9) + + } + c.JSON(http.StatusOK, gin.H{ + "result": array, + "result2": array2, + "result3": array3, + "result4": array4, + "result5": array5, + "result6": array6, + "result7": array7, + "result8": array8, + "result9": array9, + }) + } }) @@ -772,7 +823,7 @@ func connect() { }) - router.POST("/api/update-op-electrical", func(c *gin.Context) { + router.POST("/api/update-opapproved-electrical", func(c *gin.Context) { type UpdateOpData struct { Data int `json:"data"` } @@ -806,9 +857,49 @@ func connect() { } if affect > 0 { - c.String(http.StatusOK, "Success on Updating Order of Payment") + c.String(http.StatusOK, "Success on Updating Order of Payment for Approval") } else { - c.String(http.StatusInternalServerError, "Failed on Updating Order of Payment") + c.String(http.StatusInternalServerError, "Failed on Updating Order of Payment for Approval") + } + }) + + router.POST("/api/update-opprinted-electrical", func(c *gin.Context) { + type UpdateOpData struct { + Data int `json:"data"` + } + var updateOpData UpdateOpData + if err := c.ShouldBindJSON(&updateOpData); 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") + + 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") + if err != nil { + panic(err.Error()) + } + defer dbpost.Close() + + exec, err := dbpost.Exec(updateOpData.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 Order of Payment for Printing") + } else { + c.String(http.StatusInternalServerError, "Failed on Updating Order of Payment for Printing") } }) diff --git a/package.json b/package.json index c0c60ff..acd9403 100644 --- a/package.json +++ b/package.json @@ -12,11 +12,13 @@ "@kobalte/core": "^0.13.11", "@solidjs-use/integrations": "^2.3.0", "@solidjs/router": "^0.15.3", + "consola": "^3.4.2", "crypto-js": "^4.2.0", "dayjs": "^1.11.18", "gsap": "^3.13.0", "jimp": "^1.6.0", "jspdf": "^3.0.3", + "jspdf-barcode": "^1.0.2", "nanostores": "^1.0.1", "ofetch": "^1.4.1", "openssl-nodejs": "^1.0.5", @@ -27,12 +29,12 @@ "solidjs-use": "^2.3.0" }, "devDependencies": { - "@nanostores/solid": "^1.1.1", "@types/crypto-js": "^4.2.2", - "@types/node": "^24.6.2", + "@types/node": "^24.7.0", "sass-embedded": "^1.93.2", "typescript": "~5.8.3", "vite": "^7.1.9", + "vite-plugin-compression2": "^2.2.1", "vite-plugin-solid": "^2.11.9" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 63de3f4..f088af1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -17,6 +17,9 @@ importers: '@solidjs/router': specifier: ^0.15.3 version: 0.15.3(solid-js@1.9.9) + consola: + specifier: ^3.4.2 + version: 3.4.2 crypto-js: specifier: ^4.2.0 version: 4.2.0 @@ -32,6 +35,9 @@ importers: jspdf: specifier: ^3.0.3 version: 3.0.3 + jspdf-barcode: + specifier: ^1.0.2 + version: 1.0.2(jspdf@3.0.3) nanostores: specifier: ^1.0.1 version: 1.0.1 @@ -57,15 +63,12 @@ importers: specifier: ^2.3.0 version: 2.3.0 devDependencies: - '@nanostores/solid': - specifier: ^1.1.1 - version: 1.1.1(nanostores@1.0.1)(solid-js@1.9.9) '@types/crypto-js': specifier: ^4.2.2 version: 4.2.2 '@types/node': - specifier: ^24.6.2 - version: 24.6.2 + specifier: ^24.7.0 + version: 24.7.0 sass-embedded: specifier: ^1.93.2 version: 1.93.2 @@ -74,10 +77,13 @@ importers: version: 5.8.3 vite: specifier: ^7.1.9 - version: 7.1.9(@types/node@24.6.2)(sass-embedded@1.93.2)(sass@1.93.2) + version: 7.1.9(@types/node@24.7.0)(sass-embedded@1.93.2)(sass@1.93.2) + vite-plugin-compression2: + specifier: ^2.2.1 + version: 2.2.1(rollup@4.52.1) vite-plugin-solid: specifier: ^2.11.9 - version: 2.11.9(solid-js@1.9.9)(vite@7.1.9(@types/node@24.6.2)(sass-embedded@1.93.2)(sass@1.93.2)) + version: 2.11.9(solid-js@1.9.9)(vite@7.1.9(@types/node@24.7.0)(sass-embedded@1.93.2)(sass@1.93.2)) packages: @@ -612,12 +618,6 @@ packages: peerDependencies: solid-js: ^1.8.8 - '@nanostores/solid@1.1.1': - resolution: {integrity: sha512-gF0Eat1/c3hOaklBMSVoEjcNzJc5zGk4VSg94H9LPmXYww1pxgr7zylpi3jjyxRu24c8+aYNkmRWzolAwzSA1A==} - peerDependencies: - nanostores: '>=0.9.0 <2.0.0' - solid-js: ^1.6.0 - '@parcel/watcher-android-arm64@2.5.1': resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} engines: {node: '>= 10.0.0'} @@ -700,6 +700,15 @@ packages: resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==} engines: {node: '>= 10.0.0'} + '@rollup/pluginutils@5.3.0': + resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + '@rollup/rollup-android-arm-eabi@4.52.1': resolution: {integrity: sha512-sifE8uDpDvortUdi3xFevQ9WN5L3orrglg7iO/DhIpSVCwJOxBs9k9JzCC76KEZkLY4UkHWj+KESdFhlsNmDLw==} cpu: [arm] @@ -942,8 +951,8 @@ packages: '@types/node@16.9.1': resolution: {integrity: sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==} - '@types/node@24.6.2': - resolution: {integrity: sha512-d2L25Y4j+W3ZlNAeMKcy7yDsK425ibcAOO2t7aPTz6gNMH0z2GThtwENCDc0d/Pw9wgyRqE5Px1wkV7naz8ang==} + '@types/node@24.7.0': + resolution: {integrity: sha512-IbKooQVqUBrlzWTi79E8Fw78l8k1RNtlDDNWsFZs7XonuQSJ8oNYfEeclhprUldXISRMLzBpILuKgPlIxm+/Yw==} '@types/pako@2.0.4': resolution: {integrity: sha512-VWDCbrLeVXJM9fihYodcLiIv0ku+AlOa/TQ1SvYOaBuyrSKgEcro95LJyIsJ4vSo6BXIxOKxiJAat04CmST9Fw==} @@ -1047,6 +1056,10 @@ packages: colorjs.io@0.5.2: resolution: {integrity: sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw==} + consola@3.4.2: + resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} + engines: {node: ^14.18.0 || >=16.10.0} + convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} @@ -1115,6 +1128,9 @@ packages: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + event-target-shim@5.0.1: resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} engines: {node: '>=6'} @@ -1238,6 +1254,11 @@ packages: engines: {node: '>=6'} hasBin: true + jspdf-barcode@1.0.2: + resolution: {integrity: sha512-NZUsAeaEQ55R/ggKiEQoVFowAqxUWS39nlTPVWG1ks5A32JkH+bekoVlC/76WISYy1LzV0fTbmSCxsFt1Da4AA==} + peerDependencies: + jspdf: '>=2.0.0' + jspdf@3.0.3: resolution: {integrity: sha512-eURjAyz5iX1H8BOYAfzvdPfIKK53V7mCpBTe7Kb16PaM8JSXEcUQNBQaiWMI8wY5RvNOPj4GccMjTlfwRBd+oQ==} @@ -1637,6 +1658,9 @@ packages: resolution: {integrity: sha512-GTt8rSKje5FilG+wEdfCkOcLL7LWqpMlr2c3LRuKt/YXxcJ52aGSbGBAdI4L3aaqfrBt6y711El53ItyH1NWzg==} engines: {node: '>=16.0.0'} + tar-mini@0.2.0: + resolution: {integrity: sha512-+qfUHz700DWnRutdUsxRRVZ38G1Qr27OetwaMYTdg8hcPxf46U0S1Zf76dQMWRBmusOt2ZCK5kbIaiLkoGO7WQ==} + text-segmentation@1.0.3: resolution: {integrity: sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==} @@ -1666,8 +1690,8 @@ packages: ufo@1.6.1: resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} - undici-types@7.13.0: - resolution: {integrity: sha512-Ov2Rr9Sx+fRgagJ5AX0qvItZG/JKKoBRAVITs1zk7IqZGTJUwgUr7qoYBpWwakpWilTZFM98rG/AFRocu10iIQ==} + undici-types@7.14.0: + resolution: {integrity: sha512-QQiYxHuyZ9gQUIrmPo3IA+hUl4KYk8uSA7cHrcKd/l3p1OTpZcM0Tbp9x7FAtXdAYhlasd60ncPpgu6ihG6TOA==} update-browserslist-db@1.1.3: resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} @@ -1687,6 +1711,9 @@ packages: varint@6.0.0: resolution: {integrity: sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==} + vite-plugin-compression2@2.2.1: + resolution: {integrity: sha512-LMDkgheJaFBmb8cB8ymgUpXHXnd3m4kmjEInvp59fOZMSaT/9oDUtqpO0ihr4ExGsnWfYcRe13/TNN3BEk2t/g==} + vite-plugin-solid@2.11.9: resolution: {integrity: sha512-bTA6p+bspXZsuulSd2y6aTzegF8xGaJYcq1Uyh/mv+W4DQtzCgL9nN6n2fsTaxp/dMk+ZHHKgGndlNeooqHLKw==} peerDependencies: @@ -2326,11 +2353,6 @@ snapshots: '@solid-primitives/utils': 6.3.2(solid-js@1.9.9) solid-js: 1.9.9 - '@nanostores/solid@1.1.1(nanostores@1.0.1)(solid-js@1.9.9)': - dependencies: - nanostores: 1.0.1 - solid-js: 1.9.9 - '@parcel/watcher-android-arm64@2.5.1': optional: true @@ -2392,6 +2414,14 @@ snapshots: '@parcel/watcher-win32-x64': 2.5.1 optional: true + '@rollup/pluginutils@5.3.0(rollup@4.52.1)': + dependencies: + '@types/estree': 1.0.8 + estree-walker: 2.0.2 + picomatch: 4.0.3 + optionalDependencies: + rollup: 4.52.1 + '@rollup/rollup-android-arm-eabi@4.52.1': optional: true @@ -2566,9 +2596,9 @@ snapshots: '@types/node@16.9.1': {} - '@types/node@24.6.2': + '@types/node@24.7.0': dependencies: - undici-types: 7.13.0 + undici-types: 7.14.0 '@types/pako@2.0.4': {} @@ -2681,6 +2711,8 @@ snapshots: colorjs.io@0.5.2: {} + consola@3.4.2: {} + convert-source-map@2.0.0: {} core-js@3.45.1: @@ -2757,6 +2789,8 @@ snapshots: escalade@3.2.0: {} + estree-walker@2.0.2: {} + event-target-shim@5.0.1: {} events@3.3.0: {} @@ -2883,6 +2917,10 @@ snapshots: json5@2.2.3: {} + jspdf-barcode@1.0.2(jspdf@3.0.3): + dependencies: + jspdf: 3.0.3 + jspdf@3.0.3: dependencies: '@babel/runtime': 7.28.4 @@ -3307,6 +3345,8 @@ snapshots: sync-message-port@1.1.3: {} + tar-mini@0.2.0: {} + text-segmentation@1.0.3: dependencies: utrie: 1.0.2 @@ -3335,7 +3375,7 @@ snapshots: ufo@1.6.1: {} - undici-types@7.13.0: {} + undici-types@7.14.0: {} update-browserslist-db@1.1.3(browserslist@4.26.2): dependencies: @@ -3356,7 +3396,14 @@ snapshots: varint@6.0.0: {} - vite-plugin-solid@2.11.9(solid-js@1.9.9)(vite@7.1.9(@types/node@24.6.2)(sass-embedded@1.93.2)(sass@1.93.2)): + vite-plugin-compression2@2.2.1(rollup@4.52.1): + dependencies: + '@rollup/pluginutils': 5.3.0(rollup@4.52.1) + tar-mini: 0.2.0 + transitivePeerDependencies: + - rollup + + vite-plugin-solid@2.11.9(solid-js@1.9.9)(vite@7.1.9(@types/node@24.7.0)(sass-embedded@1.93.2)(sass@1.93.2)): dependencies: '@babel/core': 7.28.4 '@types/babel__core': 7.20.5 @@ -3364,12 +3411,12 @@ snapshots: merge-anything: 5.1.7 solid-js: 1.9.9 solid-refresh: 0.6.3(solid-js@1.9.9) - vite: 7.1.9(@types/node@24.6.2)(sass-embedded@1.93.2)(sass@1.93.2) - vitefu: 1.1.1(vite@7.1.9(@types/node@24.6.2)(sass-embedded@1.93.2)(sass@1.93.2)) + vite: 7.1.9(@types/node@24.7.0)(sass-embedded@1.93.2)(sass@1.93.2) + vitefu: 1.1.1(vite@7.1.9(@types/node@24.7.0)(sass-embedded@1.93.2)(sass@1.93.2)) transitivePeerDependencies: - supports-color - vite@7.1.9(@types/node@24.6.2)(sass-embedded@1.93.2)(sass@1.93.2): + vite@7.1.9(@types/node@24.7.0)(sass-embedded@1.93.2)(sass@1.93.2): dependencies: esbuild: 0.25.10 fdir: 6.5.0(picomatch@4.0.3) @@ -3378,14 +3425,14 @@ snapshots: rollup: 4.52.1 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 24.6.2 + '@types/node': 24.7.0 fsevents: 2.3.3 sass: 1.93.2 sass-embedded: 1.93.2 - vitefu@1.1.1(vite@7.1.9(@types/node@24.6.2)(sass-embedded@1.93.2)(sass@1.93.2)): + vitefu@1.1.1(vite@7.1.9(@types/node@24.7.0)(sass-embedded@1.93.2)(sass@1.93.2)): optionalDependencies: - vite: 7.1.9(@types/node@24.6.2)(sass-embedded@1.93.2)(sass@1.93.2) + vite: 7.1.9(@types/node@24.7.0)(sass-embedded@1.93.2)(sass@1.93.2) webworkify@1.5.0: {} diff --git a/src/assets/images/lungsod2.png b/src/assets/images/lungsod2.png deleted file mode 100644 index 684ede4..0000000 Binary files a/src/assets/images/lungsod2.png and /dev/null differ diff --git a/src/assets/images/ocbologo.png b/src/assets/images/ocbologo.png index 6d9edca..7cd433f 100644 Binary files a/src/assets/images/ocbologo.png and b/src/assets/images/ocbologo.png differ diff --git a/src/assets/images/optimized/background.avif b/src/assets/images/optimized/background.avif index c3a3fad..9b6ec11 100644 Binary files a/src/assets/images/optimized/background.avif and b/src/assets/images/optimized/background.avif differ diff --git a/src/assets/images/optimized/background.webp b/src/assets/images/optimized/background.webp index da9ba89..3e760e7 100644 Binary files a/src/assets/images/optimized/background.webp and b/src/assets/images/optimized/background.webp differ diff --git a/src/assets/images/optimized/esign.avif b/src/assets/images/optimized/esign.avif index 6f8de2d..a96b116 100644 Binary files a/src/assets/images/optimized/esign.avif and b/src/assets/images/optimized/esign.avif differ diff --git a/src/assets/images/optimized/esign.webp b/src/assets/images/optimized/esign.webp index 8932145..cf651e4 100644 Binary files a/src/assets/images/optimized/esign.webp and b/src/assets/images/optimized/esign.webp differ diff --git a/src/assets/images/optimized/lungsod.avif b/src/assets/images/optimized/lungsod.avif deleted file mode 100644 index 41145a6..0000000 Binary files a/src/assets/images/optimized/lungsod.avif and /dev/null differ diff --git a/src/assets/images/optimized/lungsod.webp b/src/assets/images/optimized/lungsod.webp deleted file mode 100644 index 4be2299..0000000 Binary files a/src/assets/images/optimized/lungsod.webp and /dev/null differ diff --git a/src/assets/images/optimized/no-background.webp b/src/assets/images/optimized/no-background.webp deleted file mode 100644 index 87c7f4c..0000000 Binary files a/src/assets/images/optimized/no-background.webp and /dev/null differ diff --git a/src/assets/images/optimized/sample.avif b/src/assets/images/optimized/sample.avif deleted file mode 100644 index 78c62db..0000000 Binary files a/src/assets/images/optimized/sample.avif and /dev/null differ diff --git a/src/assets/images/optimized/sample.webp b/src/assets/images/optimized/sample.webp deleted file mode 100644 index 0cb2279..0000000 Binary files a/src/assets/images/optimized/sample.webp and /dev/null differ diff --git a/src/pages/AssessorPage/Assessor.tsx b/src/pages/AssessorPage/Assessor.tsx index 1c5a406..9de12fc 100644 --- a/src/pages/AssessorPage/Assessor.tsx +++ b/src/pages/AssessorPage/Assessor.tsx @@ -1,12 +1,12 @@ import './Assessor.sass' -import { Logo, Page, Row, Padding, ModalButton, Button, Clickable, Link } from '../../components' +import { Logo, Page, Row, Padding, ModalButton, Button, Clickable, Link, Modal, Column, Box } from '../../components' import { FiLogOut } from 'solid-icons/fi' import { Tabs } from '@kobalte/core/tabs' import { ofetch } from 'ofetch' import { onMount, createSignal, Show } from 'solid-js' -// import dayjs from 'dayjs' -// import { checkConnection, createPdf } from '../../utils/functions' -// import { FaSolidThumbsUp } from 'solid-icons/fa' +import dayjs from 'dayjs' +import { checkConnection, createPdf } from '../../utils/functions' +import { FaSolidThumbsUp } from 'solid-icons/fa' import { _employeeName, _employeeId } from '../../stores/employee' import { useNavigate } from '@solidjs/router' @@ -22,23 +22,23 @@ export default () => { const [location, setLocation] = createSignal('') const [type, setType] = createSignal('') const [applicationId, setApplicationId] = createSignal(0) - const [assessorId, setAssessorId] = createSignal(0) + // const [assessorId, setAssessorId] = createSignal(0) - const [gflgu, setGflgu] = createSignal([]) - const [gfdpwh, setGfdpwh] = createSignal([]) - const [tfbo, setTfbo] = createSignal([]) + // const [gflgu, setGflgu] = createSignal([]) + // const [gfdpwh, setGfdpwh] = createSignal([]) + // const [tfbo, setTfbo] = createSignal([]) - const [descriptionList, setDescriptionList] = createSignal([]) - const [amountList, setAmountList] = createSignal([]) - const [dateOpList, setDateOpList] = createSignal([]) + // const [descriptionList, setDescriptionList] = createSignal([]) + // const [amountList, setAmountList] = createSignal([]) + // const [dateOpList, setDateOpList] = createSignal([]) const [applicationList, setApplicationList] = createSignal([]) const [nameList, setNameList] = createSignal([]) const [errorMessage, setErrorMessage] = createSignal('') const [connected, setConnected] = createSignal(true) - const [approved, setApproved] = createSignal(false) - const [approvedApplication, setApprovedApplication] = createSignal('') + const [printed, setPrinted] = createSignal(false) + const [printedApplication, setPrintedApplication] = createSignal('') const [isBuilding, setIsBuilding] = createSignal(false) const [isOccupancy, setIsOccupancy] = createSignal(false) @@ -58,7 +58,39 @@ export default () => { } } + // const calculateAmounts = () => { + // const amounts: string[] = amountList() + // let gflguList: number[] = [] + // let gfdpwhList: number[] = [] + // let tfboList: number[] = [] + + // for (let i = 0; i < amounts.length; i++) { + // const gflgu = parseFloat(amounts[i]) * 0.8 + // const gfdpwh = parseFloat(amounts[i]) * 0.05 + // const tfbo = parseFloat(amounts[i]) * 0.15 + + // const roundedGflgu = parseFloat(gflgu.toFixed(2)) + // const roundedGfdpwh = parseFloat(gfdpwh.toFixed(2)) + // const roundedTfbo = parseFloat(tfbo.toFixed(2)) + + // gflguList.push(roundedGflgu) + // gfdpwhList.push(roundedGfdpwh) + // tfboList.push(roundedTfbo) + // } + + // setGflgu(gflguList) + // setGfdpwh(gfdpwhList) + // setTfbo(tfboList) + // } + + const closeNotification = async () => { + setPrinted(false) + await checkDivision() + await getListForPrinting() + } + const checkDivision = async () => { + console.log('AAAA') const building = await checkAccess('BUILDING ORDER OF PAYMENT') setIsBuilding(building) @@ -69,7 +101,29 @@ export default () => { setIsElectrical(electrical) } + const getopdetails = async (applicationNo: string) => { + const op = await ofetch(API + 'get-opdetails-electrical/' + applicationNo, { parseResponse: JSON.parse }) + setAssessor(op.result7[0]) + setLocation(op.result5[0]) + setType(op.result6[0]) + setDateOp(dayjs(op.result10[0]).format('MMMM DD, YYYY')) + setApplicationId(op.result11[0]) + // setAssessorId(op.result12[0]) + setTotalOp(calculateTotal(op.result9)) + + // setDescriptionList(op.result8) + // setAmountList(op.result9) + // setDateOpList(op.result10) + // calculateAmounts() + } + + const calculateTotal = (list: number[]) => { + const total = list.map((item) => parseFloat(item.toString())).reduce((acc, curr) => acc + curr, 0) + return total + } + const getListForPrinting = async () => { + console.log('BBB') try { const response = await ofetch(API + 'get-listopprinting-electrical', { parseResponse: JSON.parse }) setApplicationList(response.result) @@ -89,18 +143,80 @@ export default () => { const nameStore = sessionStorage.getItem('name') setEmployeeId(parseInt(idStore!)) setEmployeeName(nameStore!) + + if (employeeId() === 0 || employeeId().toString() === 'NaN') { + removeEmployee() + navigate('/', { replace: true }) + return false + } + return true + } + + const printHandler = async (application: string) => { + let signed: boolean = false + let forprinting: boolean = false + let updateOrderofpayment: boolean = false + + setConnected(await checkConnection()) + if (connected() === false) { + setErrorMessage('No Connection on Server') + return + } + + signed = await setNewStatus('ELECTRICAL ORDER OF PAYMENT PRINTED', '171', 'ELECOPPRINTED') + if (!signed) return + + forprinting = await setNewStatus('FOR ELECTRICAL OFFICIAL RECEIPT VALIDATION', '98', 'ELECORVALIDATE') + if (!forprinting) return + + updateOrderofpayment = await updateOp() + + if (updateOrderofpayment) { + setPrintedApplication(application) + setPrinted(true) + } + } + + const updateOp = async () => { + try { + await ofetch(API + 'update-opprinted-electrical', { + method: 'POST', + body: { data: parseInt(applicationId().toString()) }, + }) + return true + } catch { + return false + } + } + + const setNewStatus = async (status: string, tag: string, tagword: string) => { + const today = new Date() + const formattedDate = dayjs(today).format('YYYY-MM-DD HH:mm:ss') + const statusid = parseInt(applicationId().toString()) + + try { + await ofetch(API + 'post-newstatus-electrical', { + method: 'POST', + body: { data: statusid, data2: formattedDate, data3: status, data4: tag, data5: tagword, data6: parseInt(employeeId().toString()) }, + }) + return true + } catch { + return false + } } const logout = async () => { removeEmployee() navigate('/') - // console.log('yeah') } onMount(async () => { - checkLogged() - await checkDivision() - await getListForPrinting() + const logged = await checkLogged() + + if (logged) { + await checkDivision() + await getListForPrinting() + } }) return ( @@ -116,7 +232,9 @@ export default () => { - {employeeName()} + + {employeeName()} + @@ -151,7 +269,10 @@ export default () => { -

List of Ready to Approve and Sign Building Order of Payments

+ {/*

List of Ready to Approve and Sign Building Order of Payments

*/} + +

Under Development

+
@@ -169,7 +290,10 @@ export default () => {
-

List of Ready to Approve and Sign Occupancy Order of Payments

+ {/*

List of Ready to Approve and Sign Occupancy Order of Payments

*/} + +

Under Development

+
@@ -187,7 +311,9 @@ export default () => {
-

List of Ready to Print in Electrical Order of Payments

+ createPdf()}> +

List of Ready to Print in Electrical Order of Payments

+
@@ -212,9 +338,9 @@ export default () => { design="bo-link" background="#121e2acc" color="#ffffffec" - // function={async () => { - // await getopdetails(item) - // }} + function={async () => { + await getopdetails(item) + }} > {item} @@ -254,7 +380,7 @@ export default () => { - + Click anywhere to cancel @@ -270,6 +396,50 @@ export default () => { + +
+ + + + + + + Printed + + + +

{printedApplication()}

+
+ + + Click anywhere to proceed + +
+
+
+
+ +
setConnected(true)}> + + + + + +

Connection Error

+
+
+ + +

{errorMessage()}

+
+ + + Click anywhere to close + +
+
+
+
) } diff --git a/src/pages/IndexPage/Index.sass b/src/pages/IndexPage/Index.sass index 182e771..396c97b 100644 --- a/src/pages/IndexPage/Index.sass +++ b/src/pages/IndexPage/Index.sass @@ -30,29 +30,29 @@ h1 gap: 0.5rem &__main - font-size: 3.25rem + font-size: 2.75rem margin: 0 1rem 0 0 @media only screen and (max-width: views.$tablet) padding: 2rem 0 0 0 - font-size: 2.25rem + font-size: 1.25rem margin: 0 1rem 0 0 &__sub font-weight: 700 - font-size: 2.75rem + font-size: 2rem @media only screen and (max-width: views.$tablet) font-weight: 700 - font-size: 1.75rem + font-size: 1.5rem &__paragraph padding: 4rem 0 0 0 - font-size: 1.25rem + font-size: 1rem @media only screen and (max-width: views.$tablet) padding: 3.25rem 0 0 0 - font-size: 1rem + font-size: 0.75rem .mobile-buttons padding: 2rem 0 0 0 diff --git a/src/pages/IndexPage/Index.tsx b/src/pages/IndexPage/Index.tsx index 180614d..4ae2ac8 100644 --- a/src/pages/IndexPage/Index.tsx +++ b/src/pages/IndexPage/Index.tsx @@ -1,5 +1,5 @@ import './Index.sass' -import { Button, Page, Padding, Display, Row, Logo, Footer, Copyright, Column, Image } from '../../components' +import { Button, Page, Padding, Display, Row, Logo, Footer, Copyright, Column, Image, Box } from '../../components' import { onMount } from 'solid-js' import { ofetch } from 'ofetch' import ocboAvif from '../../assets/images/optimized/ocbologo.avif' @@ -50,7 +50,7 @@ export default () => { return ( <> - + @@ -58,22 +58,26 @@ export default () => {

OCBO e-Sign

- -