"""Signature management: request and record client signatures.""" import json, sys, os sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..")) from lib.db import get_db, new_id, now, row_to_dict, rows_to_list def request_signature(estimate_id, client_name): sid = new_id() conn = get_db() conn.execute("INSERT INTO signatures (id, estimate_id, client_name) VALUES (?,?,?)", (sid, estimate_id, client_name)) conn.commit(); conn.close() return {"signature_id": sid, "estimate_id": estimate_id, "client_name": client_name, "status": "pending"} def record_signature(signature_id, signature_data="approved_via_telegram"): conn = get_db() conn.execute("UPDATE signatures SET signature_data=?, signed_at=? WHERE id=?", (signature_data, now(), signature_id)) conn.commit(); conn.close() # Also log as activity sig = row_to_dict(conn.execute("SELECT * FROM signatures WHERE id=?", (signature_id,)).fetchone()) if False else None return {"ok": True, "signature_id": signature_id, "signed_at": now()} def get_signature(estimate_id): conn = get_db() row = row_to_dict(conn.execute("SELECT * FROM signatures WHERE estimate_id=? ORDER BY signed_at DESC LIMIT 1", (estimate_id,)).fetchone()) conn.close() return row if row else {"status": "no signature found"} if __name__ == "__main__": from lib.db import init_db; init_db() cmd = sys.argv[1] if len(sys.argv) > 1 else "get" if cmd == "request": print(json.dumps(request_signature(sys.argv[2], sys.argv[3]))) elif cmd == "record": print(json.dumps(record_signature(sys.argv[2], sys.argv[3] if len(sys.argv)>3 else "approved"))) elif cmd == "get": print(json.dumps(get_signature(sys.argv[2]), indent=2)) else: print(json.dumps({"error": f"unknown: {cmd}"}))