Commit c8cf46e8 by Rubén Ramírez

fix: [BibliotecaPersonal]: Correcciones a la hora de trabajar con la biblioteca personal

parent 98cb4fc1
...@@ -2,6 +2,7 @@ package com.ujaen.tfg.mangaffinity.repositorios; ...@@ -2,6 +2,7 @@ package com.ujaen.tfg.mangaffinity.repositorios;
import com.ujaen.tfg.mangaffinity.entidades.BibliotecaPersonalRecurso; import com.ujaen.tfg.mangaffinity.entidades.BibliotecaPersonalRecurso;
import com.ujaen.tfg.mangaffinity.entidades.Categoria; import com.ujaen.tfg.mangaffinity.entidades.Categoria;
import com.ujaen.tfg.mangaffinity.excepciones.RecursoSinCategoria;
import jakarta.persistence.EntityManager; import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext; import jakarta.persistence.PersistenceContext;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
...@@ -38,10 +39,15 @@ public class RepositorioBibliotecaPersonalRecurso { ...@@ -38,10 +39,15 @@ public class RepositorioBibliotecaPersonalRecurso {
public void actualizarCategoriaRecurso(Long bibliotecaPersonalId, Long recursoId, Categoria nuevaCategoria) { public void actualizarCategoriaRecurso(Long bibliotecaPersonalId, Long recursoId, Categoria nuevaCategoria) {
em.createQuery("UPDATE BibliotecaPersonalRecurso bpr SET bpr.categoria = :nuevaCategoria WHERE bpr.bibliotecaPersonal.id = :bibliotecaPersonalId AND bpr.recurso.id = :recursoId") int updated = em.createQuery("UPDATE BibliotecaPersonalRecurso bpr SET bpr.categoria = :nuevaCategoria WHERE bpr.bibliotecaPersonal.id = :bibliotecaPersonalId AND bpr.recurso.id = :recursoId")
.setParameter("nuevaCategoria", nuevaCategoria) .setParameter("nuevaCategoria", nuevaCategoria)
.setParameter("bibliotecaPersonalId", bibliotecaPersonalId) .setParameter("bibliotecaPersonalId", bibliotecaPersonalId)
.setParameter("recursoId", recursoId) .setParameter("recursoId", recursoId)
.executeUpdate(); .executeUpdate();
if (updated == 0) {
throw new RecursoSinCategoria();
}
} }
} }
...@@ -66,57 +66,49 @@ public class BibliotecaPersonalController { ...@@ -66,57 +66,49 @@ public class BibliotecaPersonalController {
} }
} }
@PutMapping("/{usuarioId}/recursos/{recursoId}/categoria")
public ResponseEntity<String> modificarCategoriaDeRecurso(
@GetMapping("/{usuarioId}/recursos/categoria/{categoria}") @PathVariable Long usuarioId,
public ResponseEntity<List<DTORecursoEnBiblioteca>> listarRecursosPorCategoria(@PathVariable Long usuarioId, @PathVariable Categoria categoria) { @PathVariable Long recursoId,
@RequestBody DTORecursoEnBiblioteca dtoRecurso) {
try { try {
BibliotecaPersonal biblioteca = servicioUsuarios.obtenerBibliotecaDeUsuario(usuarioId); BibliotecaPersonal biblioteca = servicioUsuarios.obtenerBibliotecaDeUsuario(usuarioId);
if (biblioteca == null) { if (biblioteca == null) {
return ResponseEntity.status(HttpStatus.NOT_FOUND).build(); return ResponseEntity.status(HttpStatus.NOT_FOUND).build();
} }
List<BibliotecaPersonalRecurso> recursos = servicioBibliotecaPersonal.listarPorCategoria(biblioteca.getId(), categoria); boolean existe = servicioBibliotecaPersonal.listarPorCategoria(biblioteca.getId(), dtoRecurso.getCategoria())
List<DTORecursoEnBiblioteca> dtoRecursos = recursos.stream() .stream()
.map(bpr -> new DTORecursoEnBiblioteca(bpr.getRecurso().getId(), bpr.getRecurso().getTitulo(), bpr.getCategoria())) .anyMatch(bpr -> bpr.getRecurso().getId().equals(recursoId));
.collect(Collectors.toList());
return ResponseEntity.ok(dtoRecursos);
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
}
}
@DeleteMapping("/{usuarioId}/recursos/{recursoId}") if (!existe) {
public ResponseEntity<String> eliminarRecursoDeBiblioteca(
@PathVariable Long usuarioId, @PathVariable Long recursoId) {
try {
BibliotecaPersonal biblioteca = servicioUsuarios.obtenerBibliotecaDeUsuario(usuarioId);
if (biblioteca == null) {
return ResponseEntity.status(HttpStatus.NOT_FOUND).build(); return ResponseEntity.status(HttpStatus.NOT_FOUND).build();
} }
servicioBibliotecaPersonal.eliminarRecurso(biblioteca.getId(), recursoId); servicioBibliotecaPersonal.modificarCategoria(biblioteca.getId(), recursoId, dtoRecurso.getCategoria());
return ResponseEntity.status(HttpStatus.OK).build(); return ResponseEntity.status(HttpStatus.OK).build();
} catch (Exception e) { } catch (Exception e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build(); return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
} }
} }
@PutMapping("/{usuarioId}/recursos/{recursoId}/categoria") @GetMapping("/{usuarioId}/recursos/categoria/{categoria}")
public ResponseEntity<String> modificarCategoriaDeRecurso( public ResponseEntity<List<DTORecursoEnBiblioteca>> listarRecursosPorCategoria(
@PathVariable Long usuarioId, @PathVariable Long recursoId, @RequestBody DTORecursoEnBiblioteca dtoRecurso) { @PathVariable Long usuarioId, @PathVariable Categoria categoria) {
try { try {
BibliotecaPersonal biblioteca = servicioUsuarios.obtenerBibliotecaDeUsuario(usuarioId); BibliotecaPersonal biblioteca = servicioUsuarios.obtenerBibliotecaDeUsuario(usuarioId);
if (biblioteca == null) { if (biblioteca == null) {
return ResponseEntity.status(HttpStatus.NOT_FOUND).build(); return ResponseEntity.status(HttpStatus.NOT_FOUND).build();
} }
servicioBibliotecaPersonal.modificarCategoria(biblioteca.getId(), recursoId, dtoRecurso.getCategoria()); List<BibliotecaPersonalRecurso> recursos = servicioBibliotecaPersonal.listarPorCategoria(biblioteca.getId(), categoria);
return ResponseEntity.status(HttpStatus.OK).build(); List<DTORecursoEnBiblioteca> dtoRecursos = recursos.stream()
.map(bpr -> new DTORecursoEnBiblioteca(bpr.getRecurso().getId(), bpr.getRecurso().getTitulo(), bpr.getCategoria()))
.collect(Collectors.toList());
return ResponseEntity.ok(dtoRecursos);
} catch (Exception e) { } catch (Exception e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build(); return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
} }
} }
} }
...@@ -30,14 +30,8 @@ public class ServicioBibliotecaPersonal { ...@@ -30,14 +30,8 @@ public class ServicioBibliotecaPersonal {
} }
@Transactional @Transactional
public void eliminarRecurso(Long bibliotecaPersonalId, Long recursoId) {
repositorioBibliotecaPersonalRecurso.eliminarRecursoDeBiblioteca(bibliotecaPersonalId, recursoId);
}
// Modificar la categoría de un recurso
@Transactional
public void modificarCategoria(Long bibliotecaPersonalId, Long recursoId, Categoria nuevaCategoria) { public void modificarCategoria(Long bibliotecaPersonalId, Long recursoId, Categoria nuevaCategoria) {
repositorioBibliotecaPersonalRecurso.actualizarCategoriaRecurso(bibliotecaPersonalId, recursoId, nuevaCategoria); repositorioBibliotecaPersonalRecurso.actualizarCategoriaRecurso(bibliotecaPersonalId, recursoId, nuevaCategoria);
} }
} }
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