Commit 675e0851 by Rubén Ramírez

feat: [UsuariosController]: Añadida la función para obtener las recoemndaciones

parent 5292b214
package com.ujaen.tfg.mangaffinity.rest; package com.ujaen.tfg.mangaffinity.rest;
import com.ujaen.tfg.mangaffinity.entidades.BibliotecaPersonal; import com.ujaen.tfg.mangaffinity.entidades.BibliotecaPersonal;
import com.ujaen.tfg.mangaffinity.entidades.Recurso;
import com.ujaen.tfg.mangaffinity.entidades.Usuario; import com.ujaen.tfg.mangaffinity.entidades.Usuario;
import com.ujaen.tfg.mangaffinity.excepciones.NombreUsuarioYaCogido; import com.ujaen.tfg.mangaffinity.excepciones.NombreUsuarioYaCogido;
import com.ujaen.tfg.mangaffinity.excepciones.UsuarioNoExiste; import com.ujaen.tfg.mangaffinity.excepciones.UsuarioNoExiste;
import com.ujaen.tfg.mangaffinity.excepciones.UsuarioYaRegistrado; import com.ujaen.tfg.mangaffinity.excepciones.UsuarioYaRegistrado;
import com.ujaen.tfg.mangaffinity.rest.DTO.*; import com.ujaen.tfg.mangaffinity.rest.DTO.*;
import com.ujaen.tfg.mangaffinity.servicios.ServicioRecursos;
import com.ujaen.tfg.mangaffinity.servicios.ServicioUsuarios; import com.ujaen.tfg.mangaffinity.servicios.ServicioUsuarios;
import jakarta.validation.ConstraintViolationException; import jakarta.validation.ConstraintViolationException;
import jakarta.validation.Valid; import jakarta.validation.Valid;
...@@ -13,7 +15,11 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -13,7 +15,11 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.Base64;
import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;
@RestController @RestController
@RequestMapping("/usuarios") @RequestMapping("/usuarios")
...@@ -21,6 +27,8 @@ public class UsuariosController { ...@@ -21,6 +27,8 @@ public class UsuariosController {
@Autowired @Autowired
private ServicioUsuarios servicioUsuarios; private ServicioUsuarios servicioUsuarios;
@Autowired
private ServicioRecursos servicioRecursos;
@Autowired @Autowired
private Mapper mapper; private Mapper mapper;
...@@ -142,4 +150,29 @@ public class UsuariosController { ...@@ -142,4 +150,29 @@ public class UsuariosController {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("error inesperado"); return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("error inesperado");
} }
} }
@GetMapping("/{usuarioId}/recomendaciones")
public ResponseEntity<List<DTORecurso>> obtenerRecomendaciones(@PathVariable Long usuarioId) {
try {
List<Recurso> recomendados = servicioRecursos.obtenerRecomendacionesParaUsuario(usuarioId);
List<DTORecurso> dto = recomendados.stream()
.map(r -> new DTORecurso(
r.getId(),
r.getTitulo(),
r.getDescripcion(),
r.getFechaPublicacion(),
r.getAutor(),
(r.getFoto() != null) ? "data:image/jpeg;base64," +
Base64.getEncoder().encodeToString(r.getFoto()) : null,
r.getGeneros(),
r.getMediaEstrellas()
))
.collect(Collectors.toList());
return ResponseEntity.ok(dto);
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
}
}
} }
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