constancia.mdx
En esta ruta se define los valores para generar la constancia.
La manera en la que se saca es obtienendo el codigo, el numero del evento, y buscamos si es que la persona realmente tiene atributo de asistencia.
export const getServerSideProps: GetServerSideProps = withPageAuth({
redirectTo: '/login',
async getServerSideProps(context) {
// Access the user object
// Por alguna razon con el supabase de utils no nos da el id del usuario
const supabase = createServerSupabaseClient(context);
const {
data: { session },
} = await supabase.auth.getSession();
// Get the user from the database
const user = await supabase.from('users').select('*').eq('id', session?.user?.id).single();
// Check if the user is an admin
if (user.data?.role === 'admin') {
// Aqui se puede hacer la consulta a la base de datos de todos
const { codigo, eventId } = context.query;
let asistencia = await (
await supabase.from('events').select('*').eq('id', eventId).single()
).data.asistencia;
if (asistencia) {
const { data } = await supabase
.from('event_attendance')
.select('*')
.match({ idevent: eventId, codigo: codigo })
.single();
let idPerson = data?.idperson;
let personaBuscada = {} as any;
if (data.tabla === 'ALUMNO') {
personaBuscada = await supabase.from('alumnos').select('*').eq('id', idPerson).single();
console.log('Persona buscada: ', personaBuscada);
}
if (data.tabla === 'PROFESOR') {
personaBuscada = await supabase
.from('profesores')
.select('*')
.match({ id: data.idperson })
.single();
}
if (data.tabla === 'OPERATIVO') {
personaBuscada = await supabase
.from('operativos')
.select('*')
.match({ id: data.idperson })
.single();
}
if (data.tabla === 'ADMINISTRATIVO') {
personaBuscada = await supabase
.from('administrativos')
.select('*')
.match({ id: data.idperson })
.single();
}
let pesona = personaBuscada.data;
return {
props: {
data: data,
pesona: pesona,
},
};
} else {
console.log('No hay asistencia');
return {
redirect: {
destination: '/',
permanent: false,
},
};
}
} else {
console.log('No es admin');
return {
redirect: {
destination: '/',
permanent: false,
},
};
}
},
authRequired: true,
});
En esta pagina se tienen dos botones, los cuales uno es para ver la constancia en la pagina y el otro es para verla en PDF. Esto para poder imprimirla y descargarla.
<Group position="apart">
<Title>Constancia</Title>
<Group>
<Button
color="cyan"
uppercase
onClick={() => {
setVerWeb(!verWeb);
setVistaPdf(false);
}}
>
{verWeb ? "Ocultar web" : "Ver web"}
</Button>
<Button
color="cyan"
uppercase
onClick={() => {
setVistaPdf(!vistaPdf);
setVerWeb(false);
}}
>
{vistaPdf ? "Ocultar pdf" : "Ver pdf"}
</Button>
</Group>
</Group>;
{
data ? (
<>
{verWeb ? <VistaWeb data={datos} /> : null}
{vistaPdf ? (
<PDFViewer
style={{
width: "100%",
height: "80vh",
}}
>
<Constancia data={datos} />
</PDFViewer>
) : null}
</>
) : null;
}
Last updated on December 30, 2022