From 6e7264b813a0854a33e533e111860289339c0420 Mon Sep 17 00:00:00 2001 From: Pablo Bonilla Date: Mon, 26 Jul 2021 14:40:21 -0600 Subject: [PATCH] Add duplicate survey --- .../datasurvey/web/rest/EncuestaResource.java | 68 +++++++++++++++++++ .../encuesta/list/encuesta.component.ts | 5 +- .../encuesta/service/encuesta.service.ts | 4 ++ .../app/layouts/sidebar/sidebar.constants.ts | 12 ++-- 4 files changed, 81 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/datasurvey/web/rest/EncuestaResource.java b/src/main/java/org/datasurvey/web/rest/EncuestaResource.java index e7825d3..cf7e272 100644 --- a/src/main/java/org/datasurvey/web/rest/EncuestaResource.java +++ b/src/main/java/org/datasurvey/web/rest/EncuestaResource.java @@ -2,6 +2,7 @@ package org.datasurvey.web.rest; import java.net.URI; import java.net.URISyntaxException; +import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.List; import java.util.Objects; @@ -306,4 +307,71 @@ public class EncuestaResource { mailService.sendEncuestaDeleted(encuesta.getUsuarioExtra()); return ResponseEntity.noContent().build(); } + + @GetMapping("/encuestas/duplicate/{id}") + public ResponseEntity getAllEncuestas(@PathVariable Long id) { + Optional encuesta = encuestaService.findOne(id); + Encuesta newEncuesta = new Encuesta(); + + if (encuesta.isPresent()) { + // Encuesta + newEncuesta.setNombre(encuesta.get().getNombre()); + newEncuesta.setDescripcion(encuesta.get().getDescripcion()); + newEncuesta.setFechaCreacion(ZonedDateTime.now()); + newEncuesta.setCalificacion(5d); + newEncuesta.setAcceso(encuesta.get().getAcceso()); + newEncuesta.setEstado(encuesta.get().getEstado()); + newEncuesta.setCategoria(encuesta.get().getCategoria()); + newEncuesta.setUsuarioExtra(encuesta.get().getUsuarioExtra()); + + Encuesta encuestaCreated = encuestaService.save(newEncuesta); + + // Preguntas cerradas + List preguntasCerradas = ePreguntaCerradaService.findAll(); + for (EPreguntaCerrada ePreguntaCerrada : preguntasCerradas) { + if (ePreguntaCerrada.getEncuesta().getId().equals(id)) { + EPreguntaCerrada newEPreguntaCerrada = new EPreguntaCerrada(); + newEPreguntaCerrada.setNombre(ePreguntaCerrada.getNombre()); + newEPreguntaCerrada.setTipo(ePreguntaCerrada.getTipo()); + newEPreguntaCerrada.setOpcional(ePreguntaCerrada.getOpcional()); + newEPreguntaCerrada.setOrden(ePreguntaCerrada.getOrden()); + newEPreguntaCerrada.setEncuesta(encuestaCreated); + + ePreguntaCerradaService.save(newEPreguntaCerrada); + + // Opciones de preguntas cerradas + List opciones = ePreguntaCerradaOpcionService.findAll(); + for (EPreguntaCerradaOpcion ePreguntaCerradaOpcion : opciones) { + if (ePreguntaCerradaOpcion.getEPreguntaCerrada().getId().equals(ePreguntaCerrada.getId())) { + EPreguntaCerradaOpcion newEPreguntaCerradaOpcion = new EPreguntaCerradaOpcion(); + newEPreguntaCerradaOpcion.setNombre(ePreguntaCerradaOpcion.getNombre()); + newEPreguntaCerradaOpcion.setOrden(ePreguntaCerradaOpcion.getOrden()); + newEPreguntaCerradaOpcion.setCantidad(0); + newEPreguntaCerradaOpcion.setEPreguntaCerrada(newEPreguntaCerrada); + + ePreguntaCerradaOpcionService.save(newEPreguntaCerradaOpcion); + } + } + } + } + + // Preguntas abiertas + List preguntasAbiertas = ePreguntaAbiertaService.findAll(); + for (EPreguntaAbierta ePreguntaAbierta : preguntasAbiertas) { + if (ePreguntaAbierta.getEncuesta().getId().equals(id)) { + EPreguntaAbierta newEPreguntaAbierta = new EPreguntaAbierta(); + newEPreguntaAbierta.setNombre(ePreguntaAbierta.getNombre()); + newEPreguntaAbierta.setOpcional(ePreguntaAbierta.getOpcional()); + newEPreguntaAbierta.setOrden(ePreguntaAbierta.getOrden()); + newEPreguntaAbierta.setEncuesta(encuestaCreated); + + ePreguntaAbiertaService.save(newEPreguntaAbierta); + } + } + + return ResponseEntity.ok().body(encuestaCreated); + } + + return ResponseEntity.ok().body(null); + } } diff --git a/src/main/webapp/app/entities/encuesta/list/encuesta.component.ts b/src/main/webapp/app/entities/encuesta/list/encuesta.component.ts index abc8fe8..afb3beb 100644 --- a/src/main/webapp/app/entities/encuesta/list/encuesta.component.ts +++ b/src/main/webapp/app/entities/encuesta/list/encuesta.component.ts @@ -504,7 +504,8 @@ export class EncuestaComponent implements OnInit, AfterViewInit { }); } - duplicateSurvey(): void { - console.log(this.selectedSurveyId); + async duplicateSurvey(): Promise { + const res = await this.encuestaService.duplicate(this.selectedSurveyId!).toPromise(); + this.loadAll(); } } diff --git a/src/main/webapp/app/entities/encuesta/service/encuesta.service.ts b/src/main/webapp/app/entities/encuesta/service/encuesta.service.ts index 2e8dce2..fa1716d 100644 --- a/src/main/webapp/app/entities/encuesta/service/encuesta.service.ts +++ b/src/main/webapp/app/entities/encuesta/service/encuesta.service.ts @@ -61,6 +61,10 @@ export class EncuestaService { .pipe(map((res: EntityResponseType) => this.convertDateFromServer(res))); } + duplicate(id: number): Observable { + return this.http.get(`${this.resourceUrl}/duplicate/${id}`, { observe: 'response' }); + } + publishEncuesta(encuesta: IEncuesta): Observable { //const copy = this.convertDateFromClient(encuesta); return this.http.put(`${this.resourceUrl}/publish/${getEncuestaIdentifier(encuesta) as number}`, encuesta, { diff --git a/src/main/webapp/app/layouts/sidebar/sidebar.constants.ts b/src/main/webapp/app/layouts/sidebar/sidebar.constants.ts index d75730d..8d46c5c 100644 --- a/src/main/webapp/app/layouts/sidebar/sidebar.constants.ts +++ b/src/main/webapp/app/layouts/sidebar/sidebar.constants.ts @@ -16,12 +16,12 @@ export interface ChildrenItems { } export const ADMIN_ROUTES: RouteInfo[] = [ - { - path: '/dashboard', - title: 'Dashboard', - type: 'link', - icontype: 'nc-icon nc-chart-bar-32', - }, + // { + // path: '/dashboard', + // title: 'Dashboard', + // type: 'link', + // icontype: 'nc-icon nc-chart-bar-32', + // }, { path: '/encuesta', title: 'Encuestas',