Commit afe73c22 by Rubén Ramírez

feat: [RecursosController]: Métodos creados para pasar a entity o dto para las…

feat: [RecursosController]: Métodos creados para pasar a entity o dto para las reseñas en el controlador
parent 67990eb3
......@@ -4,8 +4,10 @@ import com.ujaen.tfg.mangaffinity.entidades.*;
import com.ujaen.tfg.mangaffinity.excepciones.CapituloNoExiste;
import com.ujaen.tfg.mangaffinity.excepciones.RecursoNoExiste;
import com.ujaen.tfg.mangaffinity.excepciones.RecursoYaExiste;
import com.ujaen.tfg.mangaffinity.excepciones.UsuarioNoExiste;
import com.ujaen.tfg.mangaffinity.rest.DTO.*;
import com.ujaen.tfg.mangaffinity.servicios.ServicioRecursos;
import com.ujaen.tfg.mangaffinity.servicios.ServicioUsuarios;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
......@@ -26,6 +28,9 @@ public class RecursosController {
private ServicioRecursos servicioRecursos;
@Autowired
private ServicioUsuarios servicioUsuarios;
@Autowired
private Mapper mapper;
/**
......@@ -438,4 +443,51 @@ public class RecursosController {
return ResponseEntity.ok(dtoRecursosTop);
}
/**
* Añade una nueva reseña a un recurso específico.
*
* Devuelve:
* - 201 CREATED si la reseña se añade correctamente.
* - 404 NOT FOUND si el recurso o el usuario no existen.
* - 500 INTERNAL SERVER ERROR en caso de error inesperado.
*/
@PostMapping("/{recursoId}/resenas")
public ResponseEntity<Void> anadirResena(@PathVariable Long recursoId, @RequestBody DTOResena dtoResena) {
try {
Recurso recurso = servicioRecursos.buscarRecursoPorId(recursoId);
Usuario usuario = servicioUsuarios.buscaUsuario(dtoResena.getUsuarioId());
Resena resena = mapper.entity(dtoResena, usuario, recurso);
servicioRecursos.anadirResena(resena);
return ResponseEntity.status(HttpStatus.CREATED).build();
} catch (RecursoNoExiste | UsuarioNoExiste e) {
return ResponseEntity.status(HttpStatus.NOT_FOUND).build();
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
}
}
/**
* Obtiene la lista de reseñas de un recurso específico.
*
* Devuelve:
* - 200 OK con la lista de reseñas si existen.
* - 204 NO CONTENT si el recurso no tiene reseñas.
* - 500 INTERNAL SERVER ERROR en caso de error inesperado.
*/
@GetMapping("/{recursoId}/resenas")
public ResponseEntity<List<DTOResena>> obtenerResenasDeRecurso(@PathVariable Long recursoId) {
try {
List<Resena> resenas = servicioRecursos.obtenerResenasDeRecurso(recursoId);
if (resenas.isEmpty()) {
return ResponseEntity.noContent().build();
}
return ResponseEntity.ok(mapper.dtoListaResenas(resenas));
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
}
}
}
\ No newline at end of file
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