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);
}
}