diff --git a/src/main/java/org/datasurvey/web/rest/EncuestaResource.java b/src/main/java/org/datasurvey/web/rest/EncuestaResource.java index 992ae8f..5744a97 100644 --- a/src/main/java/org/datasurvey/web/rest/EncuestaResource.java +++ b/src/main/java/org/datasurvey/web/rest/EncuestaResource.java @@ -11,10 +11,7 @@ import java.util.stream.Collectors; import java.util.stream.Stream; import javax.validation.Valid; import javax.validation.constraints.NotNull; -import org.datasurvey.domain.EPreguntaAbierta; -import org.datasurvey.domain.EPreguntaCerrada; -import org.datasurvey.domain.EPreguntaCerradaOpcion; -import org.datasurvey.domain.Encuesta; +import org.datasurvey.domain.*; import org.datasurvey.domain.enumeration.AccesoEncuesta; import org.datasurvey.repository.EncuestaRepository; import org.datasurvey.service.*; @@ -59,6 +56,14 @@ public class EncuestaResource { private final EPreguntaCerradaOpcionService ePreguntaCerradaOpcionService; + private final PlantillaService plantillaService; + + private final PPreguntaCerradaService pPreguntaCerradaService; + + private final PPreguntaAbiertaService pPreguntaAbiertaService; + + private final PPreguntaCerradaOpcionService pPreguntaCerradaOpcionService; + public EncuestaResource( EncuestaService encuestaService, EncuestaRepository encuestaRepository, @@ -66,7 +71,11 @@ public class EncuestaResource { MailService mailService, EPreguntaCerradaService ePreguntaCerradaService, EPreguntaAbiertaService ePreguntaAbiertaService, - EPreguntaCerradaOpcionService ePreguntaCerradaOpcionService + EPreguntaCerradaOpcionService ePreguntaCerradaOpcionService, + PlantillaService plantillaService, + PPreguntaCerradaService pPreguntaCerradaService, + PPreguntaAbiertaService pPreguntaAbiertaService, + PPreguntaCerradaOpcionService pPreguntaCerradaOpcionService ) { this.encuestaService = encuestaService; this.encuestaRepository = encuestaRepository; @@ -75,6 +84,10 @@ public class EncuestaResource { this.ePreguntaCerradaService = ePreguntaCerradaService; this.ePreguntaAbiertaService = ePreguntaAbiertaService; this.ePreguntaCerradaOpcionService = ePreguntaCerradaOpcionService; + this.plantillaService = plantillaService; + this.pPreguntaCerradaService = pPreguntaCerradaService; + this.pPreguntaAbiertaService = pPreguntaAbiertaService; + this.pPreguntaCerradaOpcionService = pPreguntaCerradaOpcionService; } /** @@ -97,6 +110,78 @@ public class EncuestaResource { .body(result); } + @PostMapping("/encuestas/{plantillaId}") + public ResponseEntity 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 = 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 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 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 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. * 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 f22fa92..5880e0d 100644 --- a/src/main/webapp/app/entities/encuesta/list/encuesta.component.ts +++ b/src/main/webapp/app/entities/encuesta/list/encuesta.component.ts @@ -317,7 +317,11 @@ export class EncuestaComponent implements OnInit, AfterViewInit { if (encuesta.id !== undefined) { this.subscribeToSaveResponse(this.encuestaService.update(encuesta)); } 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)); } } 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 8e241c3..3d854c5 100644 --- a/src/main/webapp/app/entities/encuesta/service/encuesta.service.ts +++ b/src/main/webapp/app/entities/encuesta/service/encuesta.service.ts @@ -26,6 +26,13 @@ export class EncuestaService { .pipe(map((res: EntityResponseType) => this.convertDateFromServer(res))); } + createFromTemplate(encuesta: IEncuesta, plantillaId: Number): Observable { + const copy = this.convertDateFromClient(encuesta); + return this.http + .post(`${this.resourceUrl}/${plantillaId}`, copy, { observe: 'response' }) + .pipe(map((res: EntityResponseType) => this.convertDateFromServer(res))); + } + //update para publicar update(encuesta: IEncuesta): Observable { const copy = this.convertDateFromClient(encuesta); diff --git a/src/main/webapp/content/scss/paper-dashboard.scss b/src/main/webapp/content/scss/paper-dashboard.scss index 711d10e..6d31820 100644 --- a/src/main/webapp/content/scss/paper-dashboard.scss +++ b/src/main/webapp/content/scss/paper-dashboard.scss @@ -102,3 +102,4 @@ @import 'paper-dashboard/datasurvey-home'; @import 'paper-dashboard/datasurvey-filter'; @import 'paper-dashboard/datasurvey-survey'; +@import 'paper-dashboard/datasurvey-switch'; diff --git a/src/main/webapp/content/scss/paper-dashboard/_datasurvey-switch.scss b/src/main/webapp/content/scss/paper-dashboard/_datasurvey-switch.scss new file mode 100644 index 0000000..5c27ff8 --- /dev/null +++ b/src/main/webapp/content/scss/paper-dashboard/_datasurvey-switch.scss @@ -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; + } + } +} diff --git a/src/main/webapp/i18n/es/encuesta.json b/src/main/webapp/i18n/es/encuesta.json index 37fb2fe..0cc0e50 100644 --- a/src/main/webapp/i18n/es/encuesta.json +++ b/src/main/webapp/i18n/es/encuesta.json @@ -34,7 +34,8 @@ "ePreguntaAbierta": "Pregunta Abierta", "ePreguntaCerrada": "Pregunta Cerrada", "categoria": "Categoría", - "usuarioExtra": "Correo Usuario" + "usuarioExtra": "Correo Usuario", + "plantilla": "Plantilla" } } }