Skip to content

Commit

Permalink
volvieron la actividad en perfil ajeno
Browse files Browse the repository at this point in the history
  • Loading branch information
MatiasBais committed Apr 3, 2024
1 parent 709e10d commit 118864d
Show file tree
Hide file tree
Showing 4 changed files with 146 additions and 146 deletions.
13 changes: 6 additions & 7 deletions api/v1/pregunta.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,10 @@ router.get("/", (req, res) => {
Pregunta.pagina({
pagina: req.query.pagina || 0
, filtrar: {
texto : req.query.searchInput || undefined
,etiquetas:req.query.etiquetas?
texto: req.query.searchInput || undefined
, etiquetas: req.query.etiquetas ?
(Array.isArray(req.query.etiquetas) ? req.query.etiquetas : [req.query.etiquetas])
:undefined
: undefined
}
, formatoCorto: req.query.formatoCorto !== undefined
, usuarioActual: req.session?.usuario
Expand Down Expand Up @@ -165,15 +165,15 @@ function crearPregunta(req, res, respuestaIA = null) {
// TODO Refactor: Se puede simplificar incluso más. Para empezar, poniendo todo lo del push obligatorio dentro de la definición.
let esperarA = [];
let reportaPost = getReportaPost();
let reportado=false;
let reportado = false;
if (respuestaIA && respuestaIA.apropiado < reportaPost) {
esperarA.push(
ReportePost.create({
tipoID: 1,
reportadoID: pregunta.ID,
})
);
reportado=true;
reportado = true;
}
//si es una tira error
const etiquetasIDs = Array.isArray(req.body.etiquetasIDs) ? req.body.etiquetasIDs : [req.body.etiquetasIDs];
Expand Down Expand Up @@ -220,7 +220,7 @@ function crearPregunta(req, res, respuestaIA = null) {
.then(() => pregunta.save())
.then(() => {
// ! Sin las comillas se piensa que pusimos el status dentro del send
res.status(201).json({ID:pregunta.ID,motivo:reportado?respuestaIA.motivo:null});
res.status(201).json({ ID: pregunta.ID, motivo: reportado ? respuestaIA.motivo : null });
})
})
.catch(err => {
Expand Down Expand Up @@ -379,7 +379,6 @@ router.delete("/:preguntaID/suscripcion", function (req, res) {

router.get("/masVotadas", function (req, res) {
let resultadosPorPagina = getPaginacion().resultadosPorPagina;
console.log(resultadosPorPagina)
const respuestasCount = [
Sequelize.literal(
"(SELECT COUNT(*) FROM respuesta WHERE respuesta.preguntaID = pregunta.ID)"
Expand Down
41 changes: 21 additions & 20 deletions frontend/router.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,14 +41,14 @@ import {

// TODO Refactor: Hacer raw o plain todas las consultas que se puedan

import { PantallaModeracionPostsBorrados ,PantallaEstadisticasSitio, PantallaEstadisticasUsuariosMasRelevantes, PantallaEstadisticasPostsEtiquetas, PantallaEditarRespuesta, PantallaAdministracionUsuarios, PantallaEtiquetaPreguntas, PantallaAdministracionEtiquetas, PantallaAdministracionCategorias, PantallaAdministracionPerfiles, SinPermisos, PantallaAdministracionParametros, PantallaSuscripciones, PaginaPerfilPropioRespuestas, PaginaPerfilPropioPreguntas, PaginaPerfilPropioInfo, PaginaPerfil, PaginaInicio, PantallaNuevaPregunta, PaginaPregunta, PantallaModeracionUsuarios, PantallaModeracionPosts, PantallaEditarPregunta, PantallaQuienesSomos, PantallaManual, PantallaEstadisticasPostsRelevantes, PantallaEstadisticasPostsNegativos } from './static/pantallas/todas.js';
import { PantallaModeracionPostsBorrados, PantallaEstadisticasSitio, PantallaEstadisticasUsuariosMasRelevantes, PantallaEstadisticasPostsEtiquetas, PantallaEditarRespuesta, PantallaAdministracionUsuarios, PantallaEtiquetaPreguntas, PantallaAdministracionEtiquetas, PantallaAdministracionCategorias, PantallaAdministracionPerfiles, SinPermisos, PantallaAdministracionParametros, PantallaSuscripciones, PaginaPerfilPropioRespuestas, PaginaPerfilPropioPreguntas, PaginaPerfilPropioInfo, PaginaPerfil, PaginaInicio, PantallaNuevaPregunta, PaginaPregunta, PantallaModeracionUsuarios, PantallaModeracionPosts, PantallaEditarPregunta, PantallaQuienesSomos, PantallaManual, PantallaEstadisticasPostsRelevantes, PantallaEstadisticasPostsNegativos } from './static/pantallas/todas.js';

router.get("/", (req, res) => {
// ! req.path es ''
/* * Inicio regular. */
let parametros = { usuarioActual: req.session.usuario };
let queryString = '';

let etiquetas = req.query.etiquetas;
let texto = req.query.searchInput;
if (texto || etiquetas) {
Expand All @@ -75,8 +75,8 @@ router.get("/", (req, res) => {

res.send(pagina.render());
});
// TODO Feature: Catch (¿generic Catch? "res.status(500).send(e.message)" o algo así))

// TODO Feature: Catch (¿generic Catch? "res.status(500).send(e.message)" o algo así))
});

// * Ruta que muestra 1 pregunta con sus respuestas
Expand Down Expand Up @@ -478,7 +478,7 @@ router.get("/perfil/respuestas", (req, res) => {

// TODO Refactor: Quitar lo async, usar promesas, y reducir el código.
router.get("/perfil/:DNI?", async (req, res) => {
const mandarPagina=pag=>res.send(pag.render());
const mandarPagina = pag => res.send(pag.render());
// * pagina error
let paginaError = SinPermisos(req.session, 'Algo ha malido sal. <a href="/">Volver al inicio</a>')
let usuarioActual;
Expand All @@ -496,46 +496,47 @@ router.get("/perfil/:DNI?", async (req, res) => {
fecha_desbloqueo: null
}
})
.then(bloqueo=>{
.then(bloqueo => {
let perfilBloqueado = bloqueo.length > 0;
if(perfilBloqueado) {
if(req.session.usuario){
if(req.session.usuario.perfil.permiso.ID < 2){

if (perfilBloqueado) {
if (req.session.usuario) {
if (req.session.usuario.perfil.permiso.ID < 2) {
// * Esta bloqueado y estoy logueado pero no tengo permisos
mandarPagina(paginaError);
return;
}
}else{
} else {
// * Si está bloqueado y no hay sesion CHAU
mandarPagina(paginaError);
return;
}
}


UsuarioDAO.findByPk(req.params.DNI, { include: [PerfilDAO,Carrera] })
.then(usu=>{
UsuarioDAO.findByPk(req.params.DNI, { include: [PerfilDAO, Carrera] })
.then(usu => {
if (!usu) {
// * no existe el usuario buscado
mandarPagina(paginaError);
return;
}

// * Perfil ajeno
// * Acá sí pedimos antes de mandar para que cargué más rápido y se sienta mejor.
PostDAO.pagina({ DNI: usu.DNI, usuarioActual })
.then(pre=>{

PostDAO.pagina({ DNI: usu.DNI })
.then(pre => {
let pagina = PaginaPerfil(req.path, req.session, usu, perfilBloqueado);
pagina.partes[2] /* ! DesplazamientoInfinito */.entidadesIniciales = pre;
pagina.partes[4] /* ! DesplazamientoInfinito */.entidadesIniciales = pre;
mandarPagina(pagina);
});
});
});
})
} else { // * perfil propio
mandarPagina(req.session.usuario?
mandarPagina(req.session.usuario ?
PaginaPerfilPropioInfo(req.path, req.session)
:paginaError)// * error no hay id ni sesion
: paginaError)// * error no hay id ni sesion
}

});
Expand Down
238 changes: 119 additions & 119 deletions frontend/static/scripts/perfil.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ import { PaginaPerfilPropioInfo } from "../pantallas/perfil-propio-info.js";
import { gEt, SqS } from "../libs/c3tools.js";
import { Modal } from "../componentes/modal.js";

let usuario=window.usuarioActual;
let pagina= PaginaPerfilPropioInfo(location.pathname, {usuario}, {DNI:usuario.DNI});
pagina.partes[2]/* ! DesplazamientoInfinito */.pagina=2;
let usuario = window.usuarioActual;
let pagina = PaginaPerfilPropioInfo(location.pathname, { usuario }, { DNI: usuario.DNI });
pagina.partes[4]/* ! DesplazamientoInfinito */.pagina = 2;

let modal = pagina.partes[0];

Expand All @@ -14,120 +14,120 @@ modalElemento.addEventListener("submit", () => {
});

gEt("botonCambiarContraseña").onclick = (e) => {
let boton = e.target;
if (boton.type != "button") {
return;
}
modal.titulo = "Cambiar Contraseña";
modal.contenido = [
new Formulario(
"administracion-perfil-editar",
`/api/usuario/contrasenia`,
[
{
name: "contraseniaNueva",
textoEtiqueta: "Contraseña nueva:",
type: "password",
},
{
name: "contraseniaAnterior",
textoEtiqueta: "Contraseña anterior:",
type: "password",
},
],
(txt, info) => {
if (info.ok) {
window.location.reload();
} else {
Swal.error(`Error ${info.codigo}: ${txt}`);
}
},
{
verbo: "PATCH",
textoEnviar: "Editar usuario",
clasesBoton: "is-link is-rounded mt-3",
}
)
];
modal.redibujar();
modalElemento.classList.add("is-active");
};

gEt("botonCambiarMail").onclick = (e) => {
let boton = e.target;
if (boton.type != "button") {
return;
}
modal.titulo = "Cambiar Mail";
modal.contenido = [
new Formulario(
"administracion-perfil-editar",
`/api/usuario/mail`,
[
{
name: "correo",
textoEtiqueta: "Correo:",
type: "email",
},
{
name: "contrasenia",
textoEtiqueta: "Contraseña:",
type: "password",
},
],
(txt, info) => {
if (info.ok) {
window.location.reload();
} else {
Swal.error(`Error ${info.codigo}: ${txt}`);
}
},
{
verbo: "PATCH",
textoEnviar: "Editar usuario",
clasesBoton: "is-link is-rounded mt-3",
}
)
];
modal.redibujar();
modalElemento.classList.add("is-active");
};

gEt("cambiarFoto").onclick = (e) => {

var input = document.createElement('input');
input.type = 'file';
input.accept = 'image/jpeg, image/png';
input.onchange = function(event) {
var file = event.target.files[0];
var formData = new FormData();
formData.append('image', file);
fetch('/api/usuario/imagen', {
method: 'PATCH',
body: formData
})
.then(response => {
if (response.ok) {
window.location.reload();
} else {
Swal.error(`Error al actualizar la imagen. Reintente más tarde.`);
}
})
.catch(error => {
console.error('Error de red:', error);
});
}
input.click();
};
let boton = e.target;
if (boton.type != "button") {
return;
}

modal.titulo = "Cambiar Contraseña";
modal.contenido = [
new Formulario(
"administracion-perfil-editar",
`/api/usuario/contrasenia`,
[
{
name: "contraseniaNueva",
textoEtiqueta: "Contraseña nueva:",
type: "password",
},
{
name: "contraseniaAnterior",
textoEtiqueta: "Contraseña anterior:",
type: "password",
},
],
(txt, info) => {
if (info.ok) {

window.location.reload();

} else {
Swal.error(`Error ${info.codigo}: ${txt}`);
}
},
{
verbo: "PATCH",
textoEnviar: "Editar usuario",
clasesBoton: "is-link is-rounded mt-3",
}
)
];

modal.redibujar();


modalElemento.classList.add("is-active");
};

gEt("botonCambiarMail").onclick = (e) => {
let boton = e.target;
if (boton.type != "button") {
return;
}
modal.titulo = "Cambiar Mail";
modal.contenido = [
new Formulario(
"administracion-perfil-editar",
`/api/usuario/mail`,
[
{
name: "correo",
textoEtiqueta: "Correo:",
type: "email",
},
{
name: "contrasenia",
textoEtiqueta: "Contraseña:",
type: "password",
},
],
(txt, info) => {
if (info.ok) {

window.location.reload();

} else {
Swal.error(`Error ${info.codigo}: ${txt}`);
}
},
{
verbo: "PATCH",
textoEnviar: "Editar usuario",
clasesBoton: "is-link is-rounded mt-3",
}
)
];

modal.redibujar();


modalElemento.classList.add("is-active");
};

gEt("cambiarFoto").onclick = (e) => {

var input = document.createElement('input');
input.type = 'file';
input.accept = 'image/jpeg, image/png';
input.onchange = function (event) {
var file = event.target.files[0];
var formData = new FormData();
formData.append('image', file);
fetch('/api/usuario/imagen', {
method: 'PATCH',
body: formData
})
.then(response => {
if (response.ok) {
window.location.reload();
} else {
Swal.error(`Error al actualizar la imagen. Reintente más tarde.`);
}
})
.catch(error => {
console.error('Error de red:', error);
});
}
input.click();
};

Binary file modified manual/manual.pdf
Binary file not shown.

0 comments on commit 118864d

Please sign in to comment.