diff --git a/src/controller/batch_certs/BatchCerts.controller.ts b/src/controller/batch_certs/BatchCerts.controller.ts index b0298a0..0412bfb 100644 --- a/src/controller/batch_certs/BatchCerts.controller.ts +++ b/src/controller/batch_certs/BatchCerts.controller.ts @@ -3,7 +3,7 @@ import { renderToString } from "solid-js/web"; import { CertsBatch } from "src/views/BatchCerts"; import { template } from "./BatchCerts.template"; -@Controller("batch-certs") +@Controller("batch-mode") export class BatchCertController { @Get() entry(): string { diff --git a/src/views/AulaVirtual/DniEntry.tsx b/src/views/AulaVirtual/DniEntry.tsx index 364d8e9..3a0623f 100644 --- a/src/views/AulaVirtual/DniEntry.tsx +++ b/src/views/AulaVirtual/DniEntry.tsx @@ -1,6 +1,7 @@ -import { createSignal, Match, onMount, Show, Switch } from "solid-js"; +import { createMemo, createSignal, For, Match, onMount, Show, Switch } from "solid-js"; import { Person } from "src/types/Person"; import { DniRegister } from "./DniEntry/DniRegister"; +import { RegisterReturn } from "src/types/RegisterReturn"; /** * Sample data @@ -27,9 +28,11 @@ enum Status { Error, } -export function DniEntry(props: {dni: string}) { +export function DniEntry(props: {dni: string, remove: (_: string) => void}) { const [person, setPerson] = createSignal(null); const [status, setStatus] = createSignal(Status.Empty); + const [certificates, setCertificates] = createSignal>([]); + const [certStatus, setCertStatus] = createSignal(Status.Empty); const loadPerson = async() => { setStatus(Status.Loading); @@ -40,7 +43,7 @@ export function DniEntry(props: {dni: string}) { if (response.ok) { setPerson(body); setStatus(Status.Ok); - + loadCertificates(); } else if (response.status === 404) { console.error(body); setStatus(Status.Error); @@ -58,6 +61,23 @@ export function DniEntry(props: {dni: string}) { onMount(loadPerson); + const loadCertificates = async() => { + setCertStatus(Status.Loading); + + try { + const response = await fetch(`/certificate/${props.dni}`); + if (response.ok) { + const body = await response.json(); + setCertificates(body); + setCertStatus(Status.Ok); + } else { + setCertStatus(Status.Error); + } + } catch (e) { + setCertStatus(Status.Error); + } + }; + return ( <> @@ -96,11 +116,24 @@ export function DniEntry(props: {dni: string}) {
-
+
+ + +

Loading...

+
+ + + + +

Error loading certificates.

+
+
+
@@ -113,3 +146,31 @@ export function DniEntry(props: {dni: string}) { ); } + +function CertArray(props: {array: Array}) { + const filtered = createMemo(() => { + const nowMs = Date.now(); + return props.array.filter((cert) => { + const date = new Date(cert.fecha_inscripcion); + const ms = date.getTime(); + + const difference = nowMs - ms; + + return difference < (1000 * 60 * 60 * 24 * 366); + }); + }); + + return ( +
+ [ + + {(cert) => ( + + {cert.curso_nombre} {cert.fecha_inscripcion} + + )} + + ] +
+ ); +} diff --git a/src/views/AulaVirtual/DniGroup.tsx b/src/views/AulaVirtual/DniGroup.tsx index d5662a5..a1a862a 100644 --- a/src/views/AulaVirtual/DniGroup.tsx +++ b/src/views/AulaVirtual/DniGroup.tsx @@ -1,10 +1,16 @@ -import { For } from "solid-js"; +import { For, createSignal, onMount } from "solid-js"; import { DniEntry } from "./DniEntry"; export function DniGroup(props: {group: string, index: number}) { - const dnis = () => [...props.group.matchAll(/\d+/g)]; + const [dnis, setDnis] = createSignal>([]); - console.log("Loading group..."); + onMount(() => { + setDnis([...props.group.matchAll(/\d+/g)].map((x) => x.toString())); + }); + + const removeDni = (dni: string) => { + setDnis((prev) => prev.filter((x) => x !== dni)); + }; return (
@@ -19,7 +25,7 @@ export function DniGroup(props: {group: string, index: number}) {
- {(dni) => } + {(dni) => }