import './Main.sass' import { Logo, Link, Page, Row, Padding, ModalButton, Box, Button, Modal, Column } from '../../components/' import { FiLogOut } from 'solid-icons/fi' import { Tabs } from '@kobalte/core/tabs' import { ofetch } from 'ofetch' import { onMount, createSignal } from 'solid-js' import dayjs from 'dayjs' import { checkConnection, createPdf } from '../../utils/functions' import { FaSolidThumbsUp } from 'solid-icons/fa' import { _employeeName } from '../../stores/employee' // @ts-ignore // import * as openssl from 'openssl-nodejs' const API = import.meta.env.VITE_BACKEND const PESO = import.meta.env.VITE_PESO const ID = import.meta.env.VITE_HEADID export default () => { const [totalOp, setTotalOp] = createSignal(0) const [assessor, setAssessor] = createSignal('') const [dateOp, setDateOp] = createSignal('') const [location, setLocation] = createSignal('') const [type, setType] = createSignal('') const [applicationId, setApplicationId] = createSignal(0) const [assessorId, setAssessorId] = createSignal(0) 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 [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 getListForApproval = async () => { try { const response = await ofetch(API + 'get-listopapproval-electrical', { parseResponse: JSON.parse }) setApplicationList(response.result) setNameList(response.result2) } catch (error) { console.error(error) } } const load = async () => { setConnected(await checkConnection()) if (connected() === false) { setErrorMessage('Could not gather list of applicaitons') return } await getListForApproval() } 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 approveHandler = 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 APPROVED AND SIGNED', '170', 'ELECOPAPPROVEDSIGNED') if (!signed) return forprinting = await setNewStatus('FOR ELECTRICAL ORDER OF PAYMENT PRINTING', '95', 'ELECOPPRINT') if (!forprinting) return updateOrderofpayment = await updateOp() if (updateOrderofpayment) { setApprovedApplication(application) setApproved(true) } } 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(ID) }, }) return true } catch { return false } } const updateOp = async () => { try { await ofetch(API + 'update-op-electrical', { method: 'POST', body: { data: parseInt(applicationId().toString()) }, }) return true } catch { return false } } 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 () => { setApproved(false) await load() } const openPDF = () => { createPdf() } onMount(async () => { await load() }) return ( <>

OCBO e-Sign

{_employeeName.get()} Logout
Building Occupancy Electrical

List of Ready to Approve and Sign Building Order of Payments

{/* */}
Application Number Name Show Details

List of Ready to Approve and Sign Occupancy Order of Payments

{/* */}
Application Number Name Show Details

List of Ready to Approve and Sign in Electrical Order of Payments

{applicationList().map((item, index) => ( ))}
Application Number Name Show Details
{item} {nameList()[index]} { await getopdetails(item) }} > {item} Click anywhere to cancel
setApproved(false)}> Approved

{approvedApplication()}

Click anywhere to proceed
Approved

{approvedApplication()}

Click anywhere to proceed
setConnected(true)}>

Connection Error

{errorMessage()}

Click anywhere to close
) }