Add duplicate survey

This commit is contained in:
Pablo Bonilla 2021-07-26 14:40:21 -06:00
parent 3695c037b2
commit 6e7264b813
No known key found for this signature in database
GPG Key ID: 46877262B8DE47E2
4 changed files with 81 additions and 8 deletions

View File

@ -2,6 +2,7 @@ package org.datasurvey.web.rest;
import java.net.URI; import java.net.URI;
import java.net.URISyntaxException; import java.net.URISyntaxException;
import java.time.ZonedDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
@ -306,4 +307,71 @@ public class EncuestaResource {
mailService.sendEncuestaDeleted(encuesta.getUsuarioExtra()); mailService.sendEncuestaDeleted(encuesta.getUsuarioExtra());
return ResponseEntity.noContent().build(); return ResponseEntity.noContent().build();
} }
@GetMapping("/encuestas/duplicate/{id}")
public ResponseEntity<Encuesta> getAllEncuestas(@PathVariable Long id) {
Optional<Encuesta> 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<EPreguntaCerrada> 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<EPreguntaCerradaOpcion> 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<EPreguntaAbierta> 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);
}
} }

View File

@ -504,7 +504,8 @@ export class EncuestaComponent implements OnInit, AfterViewInit {
}); });
} }
duplicateSurvey(): void { async duplicateSurvey(): Promise<void> {
console.log(this.selectedSurveyId); const res = await this.encuestaService.duplicate(this.selectedSurveyId!).toPromise();
this.loadAll();
} }
} }

View File

@ -61,6 +61,10 @@ export class EncuestaService {
.pipe(map((res: EntityResponseType) => this.convertDateFromServer(res))); .pipe(map((res: EntityResponseType) => this.convertDateFromServer(res)));
} }
duplicate(id: number): Observable<EntityResponseType> {
return this.http.get<any>(`${this.resourceUrl}/duplicate/${id}`, { observe: 'response' });
}
publishEncuesta(encuesta: IEncuesta): Observable<EntityResponseType> { publishEncuesta(encuesta: IEncuesta): Observable<EntityResponseType> {
//const copy = this.convertDateFromClient(encuesta); //const copy = this.convertDateFromClient(encuesta);
return this.http.put<IEncuesta>(`${this.resourceUrl}/publish/${getEncuestaIdentifier(encuesta) as number}`, encuesta, { return this.http.put<IEncuesta>(`${this.resourceUrl}/publish/${getEncuestaIdentifier(encuesta) as number}`, encuesta, {

View File

@ -16,12 +16,12 @@ export interface ChildrenItems {
} }
export const ADMIN_ROUTES: RouteInfo[] = [ export const ADMIN_ROUTES: RouteInfo[] = [
{ // {
path: '/dashboard', // path: '/dashboard',
title: 'Dashboard', // title: 'Dashboard',
type: 'link', // type: 'link',
icontype: 'nc-icon nc-chart-bar-32', // icontype: 'nc-icon nc-chart-bar-32',
}, // },
{ {
path: '/encuesta', path: '/encuesta',
title: 'Encuestas', title: 'Encuestas',