diff --git a/frontend/src/certs/Registers/index.tsx b/frontend/src/certs/Registers/index.tsx
index 8b7cc03..221b8ab 100644
--- a/frontend/src/certs/Registers/index.tsx
+++ b/frontend/src/certs/Registers/index.tsx
@@ -74,9 +74,33 @@ export function Registers(props: {person: Person | null, count: number}) {
const inputCheck = () => setShowHidden((x) => !x);
+ const todayRegisters = createMemo(() => {
+ const today = new Date().toISOString()
+ .split("T")[0];
+ return registerSortedList()[0][0]
+ ?.filter((r) => r.register_creation_date === today) ?? [];
+ });
+
+ const downloadTodayCerts = () => {
+ if (props.person === null) return;
+
+ todayRegisters().forEach((register) => {
+ generateCert(props.person!, register);
+ });
+ };
+
return (
+
{props.person?.person_names}
{props.person?.person_paternal_surname}
{props.person?.person_maternal_surname}
@@ -141,37 +165,10 @@ function RegisterEl(props: {register: Register, person: Person, onClick: () => v
};
const genCert = () => {
- const courseN = courseName();
const person = props.person;
const register = props.register;
- const generator = certGenerator[courseN];
- if (generator === undefined) {
- alert(`Generator function with key \`${courseN}\` not found`);
- return;
- }
-
- const {year, month, day} = dateComponents();
- const personFullName = `${person.person_names} ${person.person_paternal_surname} ${person.person_maternal_surname}`;
-
- // Manage custom label
- const certCustomLabel = register.register_custom_label === 1
- ? ""
- : customLabelsMap()[register.register_custom_label]?.custom_label_value ?? "";
-
- const certCode = register.register_is_preview ? "0000" : register.register_code.toString().padStart(4, "0");
-
- generator(`${courseN} - ${personFullName}.docx`, {
- matpel: null,
- personFullName,
- personDni: person.person_dni.toString(),
- certCode,
- certYear: year,
- certMonth: month,
- certDay: day,
- certIId: register.register_code,
- certCustomLabel,
- });
+ generateCert(person, register);
};
const generateable = () => {
@@ -240,3 +237,35 @@ function RegisterEl(props: {register: Register, person: Person, onClick: () => v
);
}
+
+function generateCert(person: Person, register: Register) {
+ const courseN = courseMap()[register.register_course_id]?.course_name ?? "Curso no encontrado";
+
+ const generator = certGenerator[courseN];
+ if (generator === undefined) {
+ alert(`Generator function with key \`${courseN}\` not found`);
+ return;
+ }
+
+ const [, year, month, day] = /(\d{4})-(\d{2})-(\d{2})/.exec(register.register_display_date) ?? [];
+ const personFullName = `${person.person_names} ${person.person_paternal_surname} ${person.person_maternal_surname}`;
+
+ // Manage custom label
+ const certCustomLabel = register.register_custom_label === 1
+ ? ""
+ : customLabelsMap()[register.register_custom_label]?.custom_label_value ?? "";
+
+ const certCode = register.register_is_preview ? "0000" : register.register_code.toString().padStart(4, "0");
+
+ generator(`${courseN} - ${personFullName}.docx`, {
+ matpel: null,
+ personFullName,
+ personDni: person.person_dni.toString(),
+ certCode,
+ certYear: year,
+ certMonth: month,
+ certDay: day,
+ certIId: register.register_code,
+ certCustomLabel,
+ });
+}