Commit f558a4a0 by Rubén Ramírez

feat: [ServiciooRecurso]: Métodos creados para obtener y añadir las reseñas de un recurso

parent 714cda48
......@@ -4,16 +4,14 @@ import com.ujaen.tfg.mangaffinity.entidades.*;
import com.ujaen.tfg.mangaffinity.excepciones.*;
import com.ujaen.tfg.mangaffinity.repositorios.RepositorioCapitulo;
import com.ujaen.tfg.mangaffinity.repositorios.RepositorioRecurso;
import com.ujaen.tfg.mangaffinity.repositorios.RepositorioUsuario;
import jakarta.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.*;
import java.util.stream.Collectors;
@Service
......@@ -376,4 +374,39 @@ public class ServicioRecursos {
return repositorioRecurso.obtenerTopRecursosUltimaSemana();
}
/**
* Añade una nueva reseña a un recurso.
* @param resena Objeto Resena con los datos de la reseña a añadir.
*/
@Transactional
public void anadirResena(Resena resena) {
if (resena.getFechaPublicacion() == null) {
resena.setFechaPublicacion(LocalDate.now());
}
// Inicializar la colección 'resenas' para evitar LazyInitializationException
Recurso recurso = resena.getRecurso();
// Forzar la inicialización de la colección de reseñas
recurso.getResenas().size(); // Hacer acceso a la colección para inicializarla
// Añadir la reseña al recurso
recurso.getResenas().add(resena);
// Realizamos el merge para asegurarnos de que el recurso (con sus reseñas) se guarda correctamente
repositorioRecurso.actualiza(recurso);
}
/**
* Obtiene las reseñas de un recurso específico, ordenadas por fecha de publicación de manera descendente.
* @param recursoId Identificador del recurso cuyo listado de reseñas se desea obtener.
* @return Lista de reseñas del recurso, ordenadas por fecha de publicación.
*/
public List<Resena> obtenerResenasDeRecurso(Long recursoId) {
return repositorioRecurso.obtenerResenasPorRecurso(recursoId)
.stream()
.sorted(Comparator.comparing(Resena::getFechaPublicacion).reversed())
.collect(Collectors.toList());
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment