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/categoria/list/categoria.component.html b/src/main/webapp/app/entities/categoria/list/categoria.component.html index a268f84..b486a5d 100644 --- a/src/main/webapp/app/entities/categoria/list/categoria.component.html +++ b/src/main/webapp/app/entities/categoria/list/categoria.component.html @@ -1,6 +1,9 @@

- Categorias +
+ Categorias +

Categorice las encuestas de la aplicación

+
-
  • - +
  • +
  • -
  • -
  • -
  • - +
  • +
  • + 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 5d4bb97..afb3beb 100644 --- a/src/main/webapp/app/entities/encuesta/list/encuesta.component.ts +++ b/src/main/webapp/app/entities/encuesta/list/encuesta.component.ts @@ -100,7 +100,7 @@ export class EncuestaComponent implements OnInit, AfterViewInit { }); createAnother: Boolean = false; - selectedSurveyId: Number | null = null; + selectedSurveyId: number | null = null; constructor( protected encuestaService: EncuestaService, @@ -253,8 +253,8 @@ export class EncuestaComponent implements OnInit, AfterViewInit { } deleteSurvey(): void { - if (this.idEncuesta != null) { - this.getEncuesta(this.idEncuesta) + if (this.selectedSurveyId != null) { + this.getEncuesta(this.selectedSurveyId) .pipe( finalize(() => { const modalRef = this.modalService.open(EncuestaDeleteDialogComponent, { size: 'lg', backdrop: 'static' }); @@ -423,8 +423,13 @@ export class EncuestaComponent implements OnInit, AfterViewInit { } openSurvey(event: any): void { - const surveyId = event.target.getAttribute('data-id'); - this.router.navigate(['/encuesta', surveyId, 'edit']); + if (event === null) { + const surveyId = this.selectedSurveyId; + this.router.navigate(['/encuesta', surveyId, 'edit']); + } else { + const surveyId = event.target.dataset.id; + this.router.navigate(['/encuesta', surveyId, 'edit']); + } } selectSurvey(event: any): void { @@ -438,18 +443,10 @@ export class EncuestaComponent implements OnInit, AfterViewInit { } openPreview() { - const surveyId = this.idEncuesta; + const surveyId = this.selectedSurveyId; this.router.navigate(['/encuesta', surveyId, 'preview']); } - counter(i: number) { - return new Array(i); - } - - testMe(something: any) { - return 5 - something; - } - async openContextMenu(event: any): Promise { if (event.type === 'contextmenu') { event.preventDefault(); @@ -457,22 +454,6 @@ export class EncuestaComponent implements OnInit, AfterViewInit { document.querySelectorAll('.ds-list--entity').forEach(e => { e.classList.remove('active'); }); - this.selectedSurveyId = Number(event.target.dataset.id); - - let res = await this.encuestaService.find(this.selectedSurveyId).toPromise(); - this.selectedSurvey = res.body; - this.isPublished = this.selectedSurvey!.estado === 'DRAFT'; // QUE SE LE MUESTRE CUANDO ESTE EN DRAFT - // } - - document.getElementById('contextmenu-create--separator')!.style.display = 'block'; - document.getElementById('contextmenu-edit--separator')!.style.display = 'block'; - document.getElementById('contextmenu-delete--separator')!.style.display = 'block'; - document.getElementById('contextmenu-edit')!.style.display = 'block'; - if (this.isPublished) { - document.getElementById('contextmenu-publish')!.style.display = 'block'; //cambiar - } - document.getElementById('contextmenu-preview')!.style.display = 'block'; - //document.getElementById('contextmenu-share')!.style.display = 'block'; if ((event.target as HTMLElement).classList.contains('ds-list')) { document.getElementById('contextmenu-create--separator')!.style.display = 'block'; @@ -480,7 +461,6 @@ export class EncuestaComponent implements OnInit, AfterViewInit { document.getElementById('contextmenu-delete--separator')!.style.display = 'none'; } else if ((event.target as HTMLElement).classList.contains('ds-list--entity')) { this.selectedSurveyId = Number(event.target.dataset.id); - this.idEncuesta = Number(event.target.dataset.id); event.target.classList.add('active'); let res = await this.encuestaService.find(this.selectedSurveyId).toPromise(); @@ -495,8 +475,10 @@ export class EncuestaComponent implements OnInit, AfterViewInit { if (!this.isPublished) { document.getElementById('contextmenu-publish')!.style.display = 'block'; + document.getElementById('contextmenu-duplicate')!.style.display = 'block'; } else { document.getElementById('contextmenu-publish')!.style.display = 'none'; + document.getElementById('contextmenu-duplicate')!.style.display = 'none'; } // document.getElementById('contextmenu-share')!.style.display = 'block'; document.getElementById('contextmenu-create--separator')!.style.display = 'none'; @@ -521,4 +503,9 @@ export class EncuestaComponent implements OnInit, AfterViewInit { } }); } + + 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 3fb18da..f2e2369 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/entities/encuesta/update/encuesta-update.component.html b/src/main/webapp/app/entities/encuesta/update/encuesta-update.component.html index 6eb2590..bc0f16b 100644 --- a/src/main/webapp/app/entities/encuesta/update/encuesta-update.component.html +++ b/src/main/webapp/app/entities/encuesta/update/encuesta-update.component.html @@ -9,6 +9,7 @@ data-target="#verParametros" (click)="loadAplicationParameters()" > +   
  • Creada el día {{ encuesta!.fechaCreacion | formatShortDatetime | lowercase }}

    @@ -31,15 +32,6 @@ >   Crear pregunta - - - - - - -

    diff --git a/src/main/webapp/app/entities/encuesta/update/encuesta-update.component.ts b/src/main/webapp/app/entities/encuesta/update/encuesta-update.component.ts index c8d573d..dafb341 100644 --- a/src/main/webapp/app/entities/encuesta/update/encuesta-update.component.ts +++ b/src/main/webapp/app/entities/encuesta/update/encuesta-update.component.ts @@ -25,7 +25,7 @@ import { IEPreguntaCerrada } from 'app/entities/e-pregunta-cerrada/e-pregunta-ce import { EPreguntaCerradaService } from 'app/entities/e-pregunta-cerrada/service/e-pregunta-cerrada.service'; import { EPreguntaCerradaDeleteDialogComponent } from 'app/entities/e-pregunta-cerrada/delete/e-pregunta-cerrada-delete-dialog.component'; -import { faTimes, faPlus, faQuestion, faPollH } from '@fortawesome/free-solid-svg-icons'; +import { faTimes, faPlus, faQuestion, faPollH, faEye } from '@fortawesome/free-solid-svg-icons'; import { PreguntaCerradaTipo } from 'app/entities/enumerations/pregunta-cerrada-tipo.model'; import { EncuestaDeleteQuestionDialogComponent } from '../encuesta-delete-question-dialog/encuesta-delete-question-dialog.component'; import { EncuestaDeleteOptionDialogComponent } from '../encuesta-delete-option-dialog/encuesta-delete-option-dialog.component'; @@ -43,6 +43,7 @@ export class EncuestaUpdateComponent implements OnInit, AfterViewChecked { faPlus = faPlus; faPollH = faPollH; faQuestion = faQuestion; + faEye = faEye; isSaving = false; isSavingQuestion = false; diff --git a/src/main/webapp/app/entities/usuario-extra/list/usuario-extra.component.html b/src/main/webapp/app/entities/usuario-extra/list/usuario-extra.component.html index 3d9eb1b..a5894cb 100644 --- a/src/main/webapp/app/entities/usuario-extra/list/usuario-extra.component.html +++ b/src/main/webapp/app/entities/usuario-extra/list/usuario-extra.component.html @@ -1,6 +1,9 @@

    - Usuarios +
    + Usuarios +

    Administre los usuarios registrados en la aplicación

    +