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 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<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.
 | 
			
		||||
     *
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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));
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -26,6 +26,13 @@ export class EncuestaService {
 | 
			
		|||
      .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(encuesta: IEncuesta): Observable<EntityResponseType> {
 | 
			
		||||
    const copy = this.convertDateFromClient(encuesta);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -102,3 +102,4 @@
 | 
			
		|||
@import 'paper-dashboard/datasurvey-home';
 | 
			
		||||
@import 'paper-dashboard/datasurvey-filter';
 | 
			
		||||
@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",
 | 
			
		||||
      "ePreguntaCerrada": "Pregunta Cerrada",
 | 
			
		||||
      "categoria": "Categoría",
 | 
			
		||||
      "usuarioExtra": "Correo Usuario"
 | 
			
		||||
      "usuarioExtra": "Correo Usuario",
 | 
			
		||||
      "plantilla": "Plantilla"
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue