Skip to content
Snippets Groups Projects
Commit 9a52150b authored by josborg's avatar josborg
Browse files

Back end devuelve encuestas y soluciones por id de usuario profesor o alumno

parent 50d4ec3a
No related branches found
No related tags found
No related merge requests found
......@@ -21,6 +21,7 @@ export class EncuestasEditarComponent implements OnInit {
newEncuesta = {
id: 0,
name: "",
creator: "",
code: "",
descripcion: "",
createdAt: this.dateFormat(new Date(Date.now() + (1000 * 60 * 60 * 2))),//OJOOOOOOOOOO
......@@ -121,6 +122,10 @@ export class EncuestasEditarComponent implements OnInit {
// Agrega un nuevo pedido
addEncuesta(){
var userId = localStorage.getItem('userId');
if(userId != null){
this.encuesta.creator = userId;
}
this.clienteApiRest.addOrder(this.encuesta).subscribe(
resp => {
if (resp.status < 400) { // Si no hay error en la operacion por parte del servicio
......
......@@ -3,6 +3,7 @@ import { Pregunta } from "./app.preguntas-model";
export interface Encuesta {
id: Number,// Numero que idintifica al encuasta
creator:string,
name: String,// Titilo de la enciasta
code: String,// Codigo afabético en mayusculas que identifica a cada encuasta
createdAt: string,//Fecha de creacion de la encuasta
......
......@@ -92,12 +92,12 @@ export class ClienteApiOrdersService {
}
getSoluciones(id: Number){
let url = ClienteApiOrdersService.BASE_URI + "soluciones/" + id;
let url = ClienteApiOrdersService.BASE_URI + id + "/soluciones";
return this.http.get<Solucion[]>(url, { observe: 'response' });
}
getSolucionesUser(id: string){
let url = ClienteApiOrdersService.BASE_URI + "usuarios/" + id;
let url = ClienteApiOrdersService.BASE_URI + "usuarios/" + id + "/soluciones";
return this.http.get<Solucion[]>(url, { observe: 'response' });
}
......
......@@ -8,7 +8,9 @@ import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;
//import java.util.Optional;
import java.util.stream.Stream;
import javax.print.DocFlavor.STRING;
import javax.sound.sampled.AudioFormat.Encoding;
......@@ -135,7 +137,7 @@ public class EncuestaController {
* @return
*/
@GetMapping(produces = MediaType.APPLICATION_JSON_VALUE, value = { "/{id}" })
public Encuesta getEncuestaById(@PathVariable int id) {
public Encuesta getEncuestaById(@PathVariable Integer id) {
Encuesta encuesta = encuestaRepository.findById(id).orElseThrow(() -> new EncuestaException("Sin resultado"));
List<Pregunta> preguntas = preguntaRepository.findByEncuestaId(id);
System.out.println("Preguntas size: "+ preguntas.size());
......@@ -151,7 +153,7 @@ public class EncuestaController {
}
@GetMapping(produces = MediaType.APPLICATION_JSON_VALUE, value = { "/{id}/full" })
public Encuesta getEncuestaByIdFull(@PathVariable int id) {
public Encuesta getEncuestaByIdFull(@PathVariable Integer id) {
Encuesta encuesta = encuestaRepository.findById(id).orElseThrow(() -> new EncuestaException("Sin resultado"));
List<Pregunta> preguntas = preguntaRepository.findByEncuestaId(id);
System.out.println("Preguntas size: "+ preguntas.size());
......@@ -409,7 +411,7 @@ public class EncuestaController {
* @param id
* @return
*/
@GetMapping(produces = MediaType.APPLICATION_JSON_VALUE, value = "/soluciones/{id}")
@GetMapping(produces = MediaType.APPLICATION_JSON_VALUE, value = "/{id}/soluciones")
public List<Solucion> getSolucionesByIdEncuesta(@PathVariable Integer id) {
Encuesta encuesta = encuestaRepository.findById(id).get();
List<Solucion> soluciones = solucionRepository.findByIdEncuesta(id);
......@@ -437,7 +439,7 @@ public class EncuestaController {
* @param id
* @return
*/
@GetMapping(produces = MediaType.APPLICATION_JSON_VALUE, value = "/usuarios/{id}")
@GetMapping(produces = MediaType.APPLICATION_JSON_VALUE, value = "/usuarios/{id}/soluciones")
public List<Solucion> getSolucionesByIdusuario(@PathVariable Long id) {
List<Solucion> soluciones = solucionRepository.findByUserId(id);
System.out.println("id: " + id + ", size: " + soluciones.size());
......@@ -462,7 +464,7 @@ public class EncuestaController {
* @param id
* @return
*/
@GetMapping(produces = MediaType.APPLICATION_JSON_VALUE, value = "/profesores/{id}")
@GetMapping(produces = MediaType.APPLICATION_JSON_VALUE, value = "/profesores/{id}/soluciones")
public List<Solucion> getSolucionesByIdProfesor(@PathVariable Long id) {
System.out.println("/profesores/{id} : /api/bot");
......@@ -495,6 +497,67 @@ public class EncuestaController {
return soluciones;
}
/**
* Devuelve una lista de las soluciones que se han enviado de una encuasta con
* id param{id} mediante una peticion GET:/encuestas/usuarios/{id}
*
* @param id
* @return
*/
@GetMapping(produces = MediaType.APPLICATION_JSON_VALUE, value = "/usuarios/{id}")
public List<Encuesta> getEncuestasByIdUsuario(@PathVariable Long id) {
String resultAsJsonStr = new RestTemplate().postForObject("http://api-discord:8081/api/bot/",
"{\"user\":"+id+"}", String.class);
System.out.println(resultAsJsonStr);
JsonParser parser = new JsonParser();
JsonElement guildsUsersElement = parser.parse(resultAsJsonStr);
JsonArray guildUserJsonArray = guildsUsersElement.getAsJsonArray();
System.out.println("guildUserJsonArray: "+guildUserJsonArray.toString());
ArrayList<String> codes = new ArrayList<>();
List<Encuesta> encuestas = new ArrayList<>();
for (JsonElement jsonElement : guildUserJsonArray) {
System.out.println("jsonElement: "+jsonElement);
List<Link> links = linkRepository.findByGuild(jsonElement.getAsLong());
for(Link link : links){
System.out.println("link: "+link.getCode());
if(!codes.contains(link.getCode())){
Encuesta e = getEncuestaByIdFull(Integer.valueOf(getIdByCode(link.getCode())));
//if(!e.getStatus().equals(Estado.FINALIZADA)){
// e = getEncuestaById(Integer.valueOf(getIdByCode(link.getCode())));
//}
encuestas.add(e);
codes.add(link.getCode());
}
}
}
return encuestas;
}
/**
* Devuelve una lista de las soluciones que se han enviado de una encuasta con
* id param{id} mediante una peticion GET:/encuestas/usuarios/{id}
*
* @param id
* @return
*/
@GetMapping(produces = MediaType.APPLICATION_JSON_VALUE, value = "/profesores/{id}")
public List<Encuesta> getEncuestasByIdProfesor(@PathVariable Long id) {
List<Encuesta> encuestasCreador = encuestaRepository.findByCreator(id);
List<Encuesta> encuestasProfesor = getEncuestasByIdUsuario(id);
//elimina duplicados.
List<Encuesta> listFinal = Stream.concat(encuestasCreador.stream(), encuestasProfesor.stream())
.distinct()
.collect(Collectors.toList());
return listFinal;
}
/* @GetMapping(produces = MediaType.APPLICATION_JSON_VALUE, value = "/{id}/soluciones/{rank}")//MAL
public List<Solucion> getRespuestaByIdEncuesta(@PathVariable Integer id, @PathVariable Integer rank) {
List<Solucion> soluciones = solucionRepository.findAll();
......@@ -502,7 +565,7 @@ public class EncuestaController {
return soluciones;
}*/
@DeleteMapping("/{id}/soluciones")
@DeleteMapping("/soluciones/{id}")
public String deleteSolucion(@PathVariable Integer id) {
try {
if (encuestaRepository.existsById(id)) {
......
......@@ -24,6 +24,7 @@ public class Encuesta {
@Id
@GeneratedValue
private Integer id;
private Long creator;
@Size(max = 50) // si no se pone esta anotación lo creo por defecto con size=255
private String name;
@Size(max = 10) // si no se pone esta anotación lo creo por defecto con size=255
......@@ -48,8 +49,9 @@ public class Encuesta {
this.created_at = LocalDate.now().toString();
}
Encuesta(String name, Estado status, String code, String inicio, String fin,
Encuesta(Long creator, String name, Estado status, String code, String inicio, String fin,
List<Pregunta> preguntas, Integer maxTiempo) {
this.creator = creator;
this.name = name;
this.code = code;
this.status = status;
......@@ -61,6 +63,14 @@ public class Encuesta {
this.maxTiempo = maxTiempo;
}
public Long getCreator() {
return this.creator;
}
public void setCreator(Long creator) {
this.creator = creator;
}
public Integer getId() {
return this.id;
}
......
package com.uva.surveys.repository;
import java.util.List;
import java.util.Optional;
import com.uva.surveys.model.Encuesta;
......@@ -9,4 +10,5 @@ import org.springframework.data.jpa.repository.JpaRepository;
public interface EncuestaRepository extends JpaRepository<Encuesta, Integer> {
boolean existsByCode(String code);
Optional<Encuesta> findByCode(String code);
List<Encuesta> findByCreator(Long creator);
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment