import './Assessor.sass' 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 { _employeeName, _employeeId } from '../../stores/employee' import { useNavigate } from '@solidjs/router' const API = import.meta.env.VITE_BACKEND const PESO = import.meta.env.VITE_PESO export default () => { const navigate = useNavigate() 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 [printed, setPrinted] = createSignal(false) const [printedApplication, setPrintedApplication] = createSignal('') const [isBuilding, setIsBuilding] = createSignal(false) const [isOccupancy, setIsOccupancy] = createSignal(false) const [isElectrical, setIsElectrical] = createSignal(false) const [employeeId, setEmployeeId] = createSignal(0) const [employeeName, setEmployeeName] = createSignal('') const checkAccess = async (access: string) => { try { const response = await ofetch(`${API}check-access/${access}/${employeeId()}`) const result = response.result if (result > 0) return true else return false } 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 () => { setPrinted(false) await checkDivision() await getListForPrinting() } const checkDivision = async () => { console.log('AAAA') const building = await checkAccess('BUILDING ORDER OF PAYMENT') setIsBuilding(building) const occupancy = await checkAccess('OCCUPANCY ORDER OF PAYMENT') setIsOccupancy(occupancy) const electrical = await checkAccess('ELECTRICAL ASSESSMENT') 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) setNameList(response.result2) } catch (error) { console.error(error) } } const removeEmployee = () => { sessionStorage.removeItem('id') sessionStorage.removeItem('name') } const checkLogged = async () => { const idStore = sessionStorage.getItem('id') 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('/') } onMount(async () => { const logged = await checkLogged() if (logged) { await checkDivision() await getListForPrinting() } }) return ( <>

OCBO e-Sign

{employeeName()} Logout
Building Occupancy Electrical {/*

List of Ready to Approve and Sign Building Order of Payments

*/}

Under Development

{/* */}
Application Number Name Show Details
{/*

List of Ready to Approve and Sign Occupancy Order of Payments

*/}

Under Development

{/* */}
Application Number Name Show Details
createPdf()}>

List of Ready to Print 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
Printed

{printedApplication()}

Click anywhere to proceed
setConnected(true)}>

Connection Error

{errorMessage()}

Click anywhere to close
) }