diff --git a/frontend/index.html b/frontend/index.html index 7615021..3047135 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -11,6 +11,18 @@ + diff --git a/frontend/public/fonts/Amiri-Bold.ttf b/frontend/public/fonts/Amiri-Bold.ttf new file mode 100644 index 0000000..c449113 Binary files /dev/null and b/frontend/public/fonts/Amiri-Bold.ttf differ diff --git a/frontend/public/fonts/FRADMCN.TTF b/frontend/public/fonts/FRADMCN.TTF new file mode 100644 index 0000000..34ffc7a Binary files /dev/null and b/frontend/public/fonts/FRADMCN.TTF differ diff --git a/frontend/src/certs/Registers/RegisterSidebar.tsx b/frontend/src/certs/Registers/RegisterSidebar.tsx index 323653c..f129717 100644 --- a/frontend/src/certs/Registers/RegisterSidebar.tsx +++ b/frontend/src/certs/Registers/RegisterSidebar.tsx @@ -6,6 +6,7 @@ import { formatDate, numberToMonth } from "../../utils/functions"; import { Canvg } from "canvg"; import { Show } from "solid-js"; import { Person } from "../../types/Person"; +import QR from "qrcode"; export function RegisterSidebar(props: { register: Register, @@ -34,30 +35,43 @@ export function RegisterSidebar(props: { const p = props.person; const r = props.register; - const [,month] = r.register_display_date.split("-"); + const [expiryYear, month] = r.register_display_date.split("-"); - const monthStr = numberToMonth(parseInt(month, 10)); + const expiryMonth = numberToMonth(parseInt(month, 10)); - if (monthStr === null) { + if (expiryMonth === null) { alert(`El cert. tiene un mes invalido (${month}), no se puede generar carnet`); return; } - const svgHtml = genCarnet( - `${p.person_names} ${p.person_paternal_surname} ${p.person_maternal_surname}`, - p.person_dni.toString(), - r.register_code.toString().padStart(4, "0"), - monthStr, - ); - const v = Canvg.fromString(ctx, svgHtml); - v.start(); - v.ready().then(() => { - canvas.toBlob((blob) => { - if (blob !== null) { - saveAs(blob, "carnet.png"); - } else { - console.log("blob is null... :c"); - } + // QR code + QR.toDataURL(`https://eegsac.com/certificado/${p.person_dni}`, {margin: 1}, (err, base64) => { + if (err) { + alert("Error creando codigo QR para el carnet."); + console.error("Error creating QR code"); + console.error(err); + return; + } + + const fullname = `${p.person_names} ${p.person_paternal_surname} ${p.person_maternal_surname}`; + const svgHtml = genCarnet({ + fullname, + dni: p.person_dni.toString(), + code: r.register_code.toString().padStart(4, "0"), + expiryMonth, + expiryYear, + qrBase64: base64, + }); + const v = Canvg.fromString(ctx, svgHtml); + v.start(); + v.ready().then(() => { + canvas.toBlob((blob) => { + if (blob !== null) { + saveAs(blob, `CARNET MATPEL - ${fullname}.png`); + } else { + console.log("blob is null... :c"); + } + }); }); }); }; diff --git a/frontend/src/utils/carnetGenerator.ts b/frontend/src/utils/carnetGenerator.ts index ea24334..25c7aaf 100644 --- a/frontend/src/utils/carnetGenerator.ts +++ b/frontend/src/utils/carnetGenerator.ts @@ -1,4 +1,13 @@ -export function genCarnet(fullname: string, dni: string, code: string, expiryMonth: string) { +export function genCarnet(d: { + fullname: string, + dni: string, + code: string, + expiryMonth: string, + expiryYear: string, + qrBase64: string, +}) { + const { fullname, dni, code, expiryMonth, expiryYear, qrBase64 } = d; + return ` + - ${code}-EEG-${(new Date()).getFullYear()} + ${code}-EEG-${expiryYear} - ${expiryMonth.toUpperCase()} ${(new Date()).getFullYear() + 1} + ${expiryMonth.toUpperCase()} ${parseInt(expiryYear, 10) + 1} `;