import { supabase } from "../supabaseClient.js"; import { companyId, getAuth } from "../app.js"; import { toast, table, badge } from "../utils.js"; export function digitalSignatureView(){ return `

Digital Signatures

Sign tasks, reports, claims, invoices, deliveries, contracts, pickups and handovers with audit trail.

${table(["Use Case","Linked Record","Status"],[["Task completion","Report + task",badge("Required","warn")],["Insurance claim","Claim verification report",badge("Ready","good")],["Student pickup","Pickup log",badge("Safety critical","bad")],["Invoice approval","Invoice",badge("Optional","warn")],["Asset handover","Asset allocation",badge("Required","warn")]])}

Signature record includes

Signer, role, timestamp, device, optional GPS, document type, linked record and audit trail.

`; } export async function createSignature(documentType="acknowledgement", documentId=null){ const auth=await getAuth(); if(!auth?.user) return toast("Please login first."); const name=prompt("Signer name",auth.profile?.full_name||""); if(!name) return; const base = { company_id:companyId(), document_type:documentType, document_id:documentId, signed_by:auth.user.id, signer_name:name, signer_title:auth.profile?.job_title || auth.profile?.role || "", signed_at:new Date().toISOString(), device_info:{userAgent:navigator.userAgent} }; const save = async (gps=null)=>{ if(gps) base.device_info.gps = gps; const {error}=await supabase.from("document_signatures").insert(base); toast(error?error.message:"Digital signature captured."); }; if(navigator.geolocation){ navigator.geolocation.getCurrentPosition( pos=>save({lat:pos.coords.latitude,lng:pos.coords.longitude,accuracy:pos.coords.accuracy}), ()=>save(null), {enableHighAccuracy:true,timeout:8000} ); }else{ save(null); } }