Add create survey from template
This commit is contained in:
parent
e3852a7c72
commit
1d06b6d84a
|
@ -11,10 +11,7 @@ import java.util.stream.Collectors;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
import javax.validation.constraints.NotNull;
|
import javax.validation.constraints.NotNull;
|
||||||
import org.datasurvey.domain.EPreguntaAbierta;
|
import org.datasurvey.domain.*;
|
||||||
import org.datasurvey.domain.EPreguntaCerrada;
|
|
||||||
import org.datasurvey.domain.EPreguntaCerradaOpcion;
|
|
||||||
import org.datasurvey.domain.Encuesta;
|
|
||||||
import org.datasurvey.domain.enumeration.AccesoEncuesta;
|
import org.datasurvey.domain.enumeration.AccesoEncuesta;
|
||||||
import org.datasurvey.repository.EncuestaRepository;
|
import org.datasurvey.repository.EncuestaRepository;
|
||||||
import org.datasurvey.service.*;
|
import org.datasurvey.service.*;
|
||||||
|
@ -59,6 +56,14 @@ public class EncuestaResource {
|
||||||
|
|
||||||
private final EPreguntaCerradaOpcionService ePreguntaCerradaOpcionService;
|
private final EPreguntaCerradaOpcionService ePreguntaCerradaOpcionService;
|
||||||
|
|
||||||
|
private final PlantillaService plantillaService;
|
||||||
|
|
||||||
|
private final PPreguntaCerradaService pPreguntaCerradaService;
|
||||||
|
|
||||||
|
private final PPreguntaAbiertaService pPreguntaAbiertaService;
|
||||||
|
|
||||||
|
private final PPreguntaCerradaOpcionService pPreguntaCerradaOpcionService;
|
||||||
|
|
||||||
public EncuestaResource(
|
public EncuestaResource(
|
||||||
EncuestaService encuestaService,
|
EncuestaService encuestaService,
|
||||||
EncuestaRepository encuestaRepository,
|
EncuestaRepository encuestaRepository,
|
||||||
|
@ -66,7 +71,11 @@ public class EncuestaResource {
|
||||||
MailService mailService,
|
MailService mailService,
|
||||||
EPreguntaCerradaService ePreguntaCerradaService,
|
EPreguntaCerradaService ePreguntaCerradaService,
|
||||||
EPreguntaAbiertaService ePreguntaAbiertaService,
|
EPreguntaAbiertaService ePreguntaAbiertaService,
|
||||||
EPreguntaCerradaOpcionService ePreguntaCerradaOpcionService
|
EPreguntaCerradaOpcionService ePreguntaCerradaOpcionService,
|
||||||
|
PlantillaService plantillaService,
|
||||||
|
PPreguntaCerradaService pPreguntaCerradaService,
|
||||||
|
PPreguntaAbiertaService pPreguntaAbiertaService,
|
||||||
|
PPreguntaCerradaOpcionService pPreguntaCerradaOpcionService
|
||||||
) {
|
) {
|
||||||
this.encuestaService = encuestaService;
|
this.encuestaService = encuestaService;
|
||||||
this.encuestaRepository = encuestaRepository;
|
this.encuestaRepository = encuestaRepository;
|
||||||
|
@ -75,6 +84,10 @@ public class EncuestaResource {
|
||||||
this.ePreguntaCerradaService = ePreguntaCerradaService;
|
this.ePreguntaCerradaService = ePreguntaCerradaService;
|
||||||
this.ePreguntaAbiertaService = ePreguntaAbiertaService;
|
this.ePreguntaAbiertaService = ePreguntaAbiertaService;
|
||||||
this.ePreguntaCerradaOpcionService = ePreguntaCerradaOpcionService;
|
this.ePreguntaCerradaOpcionService = ePreguntaCerradaOpcionService;
|
||||||
|
this.plantillaService = plantillaService;
|
||||||
|
this.pPreguntaCerradaService = pPreguntaCerradaService;
|
||||||
|
this.pPreguntaAbiertaService = pPreguntaAbiertaService;
|
||||||
|
this.pPreguntaCerradaOpcionService = pPreguntaCerradaOpcionService;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -97,6 +110,78 @@ public class EncuestaResource {
|
||||||
.body(result);
|
.body(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/encuestas/{plantillaId}")
|
||||||
|
public ResponseEntity<Encuesta> createEncuestaFromTemplate(
|
||||||
|
@Valid @RequestBody Encuesta encuesta,
|
||||||
|
@PathVariable(value = "plantillaId", required = false) final Long plantillaId
|
||||||
|
) throws URISyntaxException {
|
||||||
|
log.debug("REST request to save Encuesta : {}", encuesta);
|
||||||
|
if (encuesta.getId() != null) {
|
||||||
|
throw new BadRequestAlertException("A new encuesta cannot already have an ID", ENTITY_NAME, "idexists");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Copy from survey template to survey
|
||||||
|
Optional<Plantilla> plantilla = plantillaService.findOne(plantillaId);
|
||||||
|
|
||||||
|
if (plantilla.isPresent()) {
|
||||||
|
encuesta.setNombre(plantilla.get().getNombre());
|
||||||
|
encuesta.setDescripcion(plantilla.get().getDescripcion());
|
||||||
|
encuesta.setCategoria(plantilla.get().getCategoria());
|
||||||
|
|
||||||
|
Encuesta encuestaCreated = encuestaService.save(encuesta);
|
||||||
|
|
||||||
|
// Preguntas cerradas
|
||||||
|
List<PPreguntaCerrada> preguntasCerradas = pPreguntaCerradaService.findAll();
|
||||||
|
for (PPreguntaCerrada pPreguntaCerrada : preguntasCerradas) {
|
||||||
|
if (pPreguntaCerrada.getPlantilla().getId().equals(plantillaId)) {
|
||||||
|
EPreguntaCerrada newEPreguntaCerrada = new EPreguntaCerrada();
|
||||||
|
newEPreguntaCerrada.setNombre(pPreguntaCerrada.getNombre());
|
||||||
|
newEPreguntaCerrada.setTipo(pPreguntaCerrada.getTipo());
|
||||||
|
newEPreguntaCerrada.setOpcional(pPreguntaCerrada.getOpcional());
|
||||||
|
newEPreguntaCerrada.setOrden(pPreguntaCerrada.getOrden());
|
||||||
|
newEPreguntaCerrada.setEncuesta(encuestaCreated);
|
||||||
|
|
||||||
|
ePreguntaCerradaService.save(newEPreguntaCerrada);
|
||||||
|
|
||||||
|
// Opciones de preguntas cerradas
|
||||||
|
List<PPreguntaCerradaOpcion> opciones = pPreguntaCerradaOpcionService.findAll();
|
||||||
|
for (PPreguntaCerradaOpcion pPreguntaCerradaOpcion : opciones) {
|
||||||
|
if (pPreguntaCerradaOpcion.getPPreguntaCerrada().getId().equals(pPreguntaCerrada.getId())) {
|
||||||
|
EPreguntaCerradaOpcion newEPreguntaCerradaOpcion = new EPreguntaCerradaOpcion();
|
||||||
|
newEPreguntaCerradaOpcion.setNombre(pPreguntaCerradaOpcion.getNombre());
|
||||||
|
newEPreguntaCerradaOpcion.setOrden(pPreguntaCerradaOpcion.getOrden());
|
||||||
|
newEPreguntaCerradaOpcion.setCantidad(0);
|
||||||
|
newEPreguntaCerradaOpcion.setEPreguntaCerrada(newEPreguntaCerrada);
|
||||||
|
|
||||||
|
ePreguntaCerradaOpcionService.save(newEPreguntaCerradaOpcion);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Preguntas abiertas
|
||||||
|
List<PPreguntaAbierta> preguntasAbiertas = pPreguntaAbiertaService.findAll();
|
||||||
|
for (PPreguntaAbierta pPreguntaAbierta : preguntasAbiertas) {
|
||||||
|
if (pPreguntaAbierta.getPlantilla().getId().equals(plantillaId)) {
|
||||||
|
EPreguntaAbierta newEPreguntaAbierta = new EPreguntaAbierta();
|
||||||
|
newEPreguntaAbierta.setNombre(pPreguntaAbierta.getNombre());
|
||||||
|
newEPreguntaAbierta.setOpcional(pPreguntaAbierta.getOpcional());
|
||||||
|
newEPreguntaAbierta.setOrden(pPreguntaAbierta.getOrden());
|
||||||
|
newEPreguntaAbierta.setEncuesta(encuestaCreated);
|
||||||
|
|
||||||
|
ePreguntaAbiertaService.save(newEPreguntaAbierta);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ResponseEntity
|
||||||
|
.created(new URI("/api/encuestas/" + encuestaCreated.getId()))
|
||||||
|
.headers(HeaderUtil.createEntityCreationAlert(applicationName, true, ENTITY_NAME, encuestaCreated.getId().toString()))
|
||||||
|
.body(encuestaCreated);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ResponseEntity.ok().body(null);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@code PUT /encuestas/:id} : Updates an existing encuesta.
|
* {@code PUT /encuestas/:id} : Updates an existing encuesta.
|
||||||
*
|
*
|
||||||
|
|
|
@ -317,7 +317,11 @@ export class EncuestaComponent implements OnInit, AfterViewInit {
|
||||||
if (encuesta.id !== undefined) {
|
if (encuesta.id !== undefined) {
|
||||||
this.subscribeToSaveResponse(this.encuestaService.update(encuesta));
|
this.subscribeToSaveResponse(this.encuestaService.update(encuesta));
|
||||||
} else {
|
} else {
|
||||||
this.subscribeToSaveResponse(this.encuestaService.create(encuesta));
|
// TMP CREATE SURVEY FROM TEMPLATE
|
||||||
|
const templateId: Number = 20;
|
||||||
|
|
||||||
|
// this.subscribeToSaveResponse(this.encuestaService.create(encuesta));
|
||||||
|
this.subscribeToSaveResponse(this.encuestaService.createFromTemplate(encuesta, templateId));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -26,6 +26,13 @@ export class EncuestaService {
|
||||||
.pipe(map((res: EntityResponseType) => this.convertDateFromServer(res)));
|
.pipe(map((res: EntityResponseType) => this.convertDateFromServer(res)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
createFromTemplate(encuesta: IEncuesta, plantillaId: Number): Observable<EntityResponseType> {
|
||||||
|
const copy = this.convertDateFromClient(encuesta);
|
||||||
|
return this.http
|
||||||
|
.post<IEncuesta>(`${this.resourceUrl}/${plantillaId}`, copy, { observe: 'response' })
|
||||||
|
.pipe(map((res: EntityResponseType) => this.convertDateFromServer(res)));
|
||||||
|
}
|
||||||
|
|
||||||
//update para publicar
|
//update para publicar
|
||||||
update(encuesta: IEncuesta): Observable<EntityResponseType> {
|
update(encuesta: IEncuesta): Observable<EntityResponseType> {
|
||||||
const copy = this.convertDateFromClient(encuesta);
|
const copy = this.convertDateFromClient(encuesta);
|
||||||
|
|
|
@ -102,3 +102,4 @@
|
||||||
@import 'paper-dashboard/datasurvey-home';
|
@import 'paper-dashboard/datasurvey-home';
|
||||||
@import 'paper-dashboard/datasurvey-filter';
|
@import 'paper-dashboard/datasurvey-filter';
|
||||||
@import 'paper-dashboard/datasurvey-survey';
|
@import 'paper-dashboard/datasurvey-survey';
|
||||||
|
@import 'paper-dashboard/datasurvey-switch';
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
.ds-switch {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
|
||||||
|
& input {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
& label {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
font-size: 0.8rem;
|
||||||
|
color: #757d94;
|
||||||
|
margin: 0;
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
top: 2px !important;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
&::after {
|
||||||
|
top: 3.5px !important;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -34,7 +34,8 @@
|
||||||
"ePreguntaAbierta": "Pregunta Abierta",
|
"ePreguntaAbierta": "Pregunta Abierta",
|
||||||
"ePreguntaCerrada": "Pregunta Cerrada",
|
"ePreguntaCerrada": "Pregunta Cerrada",
|
||||||
"categoria": "Categoría",
|
"categoria": "Categoría",
|
||||||
"usuarioExtra": "Correo Usuario"
|
"usuarioExtra": "Correo Usuario",
|
||||||
|
"plantilla": "Plantilla"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue