Skip to content
Snippets Groups Projects
Commit 907cd44b authored by josborg's avatar josborg
Browse files

Filtro por Asignatura

parent f37484f7
No related branches found
No related tags found
No related merge requests found
......@@ -4,6 +4,15 @@
<div class="bg-white rounded-lg shadow-sm p-5">
<div class="container py-5">
<div class="row row mb-4">
<fieldset class="form-group row mt-2">
<label class="control-label">Asignatura</label>
<select class="form-control" name="miselectAsignatura" [(ngModel)]="asignatura">
<option [value]="i" *ngFor="let item of asignaturas; let i = index">{{item}}</option>
</select>
</fieldset>
<div>
<button class="btn btn-primary mb-2 ml-3" (click)="asignaturaFilter()">filtrar</button>
</div>
<table class="table table-borderless">
<thead>
<tr>
......@@ -12,7 +21,7 @@
<th scope="col">Name</th>
</tr>
</thead>
<tbody *ngFor="let encuesta of encuestas; let i = index">
<tbody *ngFor="let encuesta of encuestasFilter; let i = index">
<tr>
<td>{{encuesta.id}}</td>
<td>{{encuesta.code}}</td>
......
......@@ -6,6 +6,7 @@ import { Opcion } from '../shared/api-encuestas/app.opciones-model';
import { ClienteApiOrdersService } from '../shared/api-encuestas/cliente-api-encuestas.service';
import { DataOrdersService } from '../shared/api-encuestas/data-encuestas.service';
import { ClienteApiOAutchService } from '../shared/api-oauth/cliente-api-auth.service';
import { Link } from '../shared/api-encuestas/app.links-model';
@Component({
selector: 'app-encuestas-listar',
......@@ -16,6 +17,10 @@ export class EncuestasListarComponent implements OnInit {
encuestas: Array<Encuesta> = [];
encuestasFilter: Array<Encuesta> = [];
asignatura: number = 0;
asignaturas: Array<string> = ["Todas"];
links: Array<Link> = [];
id: string = "";
operacion: string = "";
idEncuesta:Number = 0;
......@@ -78,6 +83,9 @@ export class EncuestasListarComponent implements OnInit {
resp => {
if (resp.status < 400) { // Si no hay error en la respuesta
this.encuestas = resp.body as Encuesta[]; // Se obtiene la lista de users desde la respuesta
this.encuestas.forEach(encuesta => {
this.getLinks(encuesta.code);
});
} else {
this.datos.cambiarMostrarMensaje(true);
this.datos.cambiarMensaje("Error al acceder a los datos");
......@@ -95,6 +103,10 @@ export class EncuestasListarComponent implements OnInit {
resp => {
if (resp.status < 400) { // Si no hay error en la respuesta
this.encuestas = resp.body as Encuesta[]; // Se obtiene la lista de users desde la respuesta
this.encuestasFilter = this.encuestas;
this.encuestas.forEach(encuesta => {
this.getLinks(encuesta.code);
});
} else {
this.datos.cambiarMostrarMensaje(true);
this.datos.cambiarMensaje("Error al acceder a los datos");
......@@ -107,6 +119,21 @@ export class EncuestasListarComponent implements OnInit {
)
}
getLinks(code:string){
this.clienteApiRest.getLinksByCode(code).subscribe(
resp => {
console.log(resp.body as Link[])
var links = resp.body as Link[]
links.forEach(link => {
this.links.push(link)
if(!this.asignaturas.includes(link.guildName)){
this.asignaturas.push(link.guildName)
}
});
}
)
}
deleteEncuesta(id:Number){
this.clienteApiRest.deleteOrder(id).subscribe(
resp =>{//Actualizar
......@@ -119,4 +146,22 @@ export class EncuestasListarComponent implements OnInit {
this.router.navigate(['client/encuestas/'+this.operacion+'/'+this.id+'/soluciones'])
}
asignaturaFilter(){
this.encuestasFilter = []
if(this.asignatura == 0){
this.encuestasFilter = this.encuestas;
}else{
var links = this.links.filter(f => f.guildName == this.asignaturas[this.asignatura])
console.log(links)
links.forEach(link => {
var encuesta = this.encuestas.find(e => e.code == link.code)
if(encuesta != undefined && !this.encuestasFilter.includes(encuesta)){
this.encuestasFilter.push(encuesta)
}
console.log(this.encuestasFilter)
});
}
}
}
export interface Link {
guild: number,
code: string,
guildName: string
}
\ No newline at end of file
......@@ -3,6 +3,7 @@ import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import { Data } from './app.data';
import { Encuesta } from './app.encuestas-model';
import { Link } from './app.links-model';
import { Pregunta } from './app.preguntas-model';
import { Solucion } from './app.soluciones-model';
......@@ -117,6 +118,13 @@ export class ClienteApiOrdersService {
}
getLinksByCode(code: string){
let url = ClienteApiOrdersService.BASE_URI + "link/" + code;
return this.http.get<Link[]>(url, { observe: "response"});
}
canContest(id:string, idUser:string, username: string){
let url = ClienteApiOrdersService.BASE_URI + "contestar";
let payload: Data = {idEncuesta: id, idUser: idUser, username: username};
......
......@@ -57,7 +57,7 @@ public abstract class MessageListener {
&& isRol(eventMessage, "Profesor") && !Global.redir.isEmpty()){
//String obj = new RestTemplate().getForObject("http://localhost:8080/users?email=", String.class);
Link link = new Link(eventMessage.getGuild().block().getId().asLong(),content[1]);
Link link = new Link(eventMessage.getGuild().block().getId().asLong(),content[1],eventMessage.getGuild().block().getName());
Gson g = new Gson();
System.out.println(g.toJson(link));
......
......@@ -5,12 +5,14 @@ public class Link {
Long guild;
String code;
String guildName;
public Link(){}
public Link(Long guild, String code){
public Link(Long guild, String code, String guildName){
this.guild = guild;
this.code = code;
this.guildName = guildName;
}
public Long getGuild() {
......@@ -25,5 +27,10 @@ public class Link {
public void setCode(String code) {
this.code = code;
}
public String getGuildName() {
return guildName;
}
public void setGuildName(String guildName) {
this.guildName = guildName;
}
}
\ No newline at end of file
......@@ -644,13 +644,36 @@ public class EncuestaController {
}
}
/**
* Devuelve una lista de los links de una encuaesta, permitinedo conocer en que servidores está publicada una encuasta
* @param code
* @return
*/
@GetMapping(produces = MediaType.APPLICATION_JSON_VALUE, value = "/link/{code}")
public List<Link> getLinks(@PathVariable String code) {
try {
//Gurdar que la encuesta con codigo code a sido pulicada en el servidor guild
List<Link> links = linkRepository.findByCode(code);
return links;
} catch (Exception e) {
// Se deja esta parte comentada como alternativa a la gestion de errores
// propuesta
// throw new ResponseStatusException(HttpStatus.UNPROCESSABLE_ENTITY, "Error al
// crear el nuevo registro.");
// Se usa este sistema de gestión de errores porque es mas sencillo hacer que el
// cliente reciba el mensaje de error
e.printStackTrace();
throw new EncuestaException("Error al crear el nuevo registro.");
}
}
@PostMapping(consumes = MediaType.APPLICATION_JSON_VALUE, value = "/link")
public String newLink(@RequestBody Link link) {
try {
//Gurdar que la encuesta con codigo code a sido pulicada en el servidor guild
linkRepository.saveAndFlush(link);
return "guild: " + link.getCode() + " " + link.getGuild();
return "guild: " + link.getCode() + ":" + link.getGuild() + ":" + link.getGuildName();
} catch (Exception e) {
// Se deja esta parte comentada como alternativa a la gestion de errores
......
......@@ -41,7 +41,7 @@ public class Encuesta {
private Long created_at;
@OneToMany(mappedBy = "encuesta", fetch = FetchType.EAGER, cascade = CascadeType.MERGE)
private List<Pregunta> preguntas;//OJO
private List<Pregunta> preguntas;
@Size(max = 50) // si no se pone esta anotación lo creo por defecto con size=255
private String inicio;
......
......@@ -10,14 +10,16 @@ public class Link {
Long guild;
String code;
String guildName;
@Id
String id = (code+"-"+guild);
public Link(){}
public Link(Long guild, String code){
public Link(Long guild, String code, String guildName){
this.guild = guild;
this.code = code;
this.guildName = guildName;
this.id = (code+"-"+guild);
}
......@@ -36,4 +38,11 @@ public class Link {
this.id = (code+"-"+guild);
}
public String getGuildName() {
return guildName;
}
public void setGuildName(String guildName) {
this.guildName = guildName;
}
}
\ 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