From 07cd3484f50c2d5eedb10675836f3dcc6cb410a9 Mon Sep 17 00:00:00 2001 From: Pablo Bonilla Date: Sun, 25 Jul 2021 14:25:45 -0600 Subject: [PATCH 1/8] Add survey list validations for empty and stateful surveys --- .../update/encuesta-update.component.html | 154 ++++++++++-------- 1 file changed, 84 insertions(+), 70 deletions(-) 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 8565e93..8b2c80b 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 @@ -33,85 +33,99 @@ -
+ + +
-
-
-
- {{ i + 1 }}. {{ ePregunta.nombre }} - -
-
- Pregunta de respuesta {{ 'dataSurveyApp.PreguntaCerradaTipo.SINGLE' | translate | lowercase }} - {{ ePregunta.opcional ? '(opcional)' : '' }} - Pregunta de respuesta {{ 'dataSurveyApp.PreguntaCerradaTipo.MULTIPLE' | translate | lowercase }} - {{ ePregunta.opcional ? '(opcional)' : '' }} - Pregunta de respuesta abierta {{ ePregunta.opcional ? '(opcional)' : '' }} -
- - - - -
- - - -
-
-
-
-
+ +

Encuesta en progreso

+

No puede modificar la encuesta debido a que esta ya está en progreso.

+
+ +

Encuesta finalizada

+

No puede modificar la encuesta debido a que esta ya ha concluido.

+
+ +

Encuesta vacía

+

Inicie creando preguntas y opciones para su encuesta.

+
+ +
+
+
+ {{ i + 1 }}. {{ ePregunta.nombre }} - Añadir opción
- -
- +
+ Pregunta de respuesta {{ 'dataSurveyApp.PreguntaCerradaTipo.SINGLE' | translate | lowercase }} + {{ ePregunta.opcional ? '(opcional)' : '' }} + Pregunta de respuesta {{ 'dataSurveyApp.PreguntaCerradaTipo.MULTIPLE' | translate | lowercase }} + {{ ePregunta.opcional ? '(opcional)' : '' }} + Pregunta de respuesta abierta {{ ePregunta.opcional ? '(opcional)' : '' }} +
+ + + + +
+ + + +
+
+
+
+
+ + Añadir opción +
+
+
+ +
-
+
From 0201e121df72f76f1b941291d94a190dd869f37f Mon Sep 17 00:00:00 2001 From: Pablo Bonilla Date: Sun, 25 Jul 2021 16:41:40 -0600 Subject: [PATCH 4/8] Fix context menu and delete survey bug (email) --- .../datasurvey/web/rest/EncuestaResource.java | 25 +++++++++ .../encuesta-delete-dialog.component.ts | 6 +- .../encuesta-publish-dialog.component.ts | 2 +- .../encuesta/list/encuesta.component.html | 15 ++--- .../encuesta/list/encuesta.component.ts | 55 +++++++++---------- .../encuesta/service/encuesta.service.ts | 7 +++ 6 files changed, 67 insertions(+), 43 deletions(-) diff --git a/src/main/java/org/datasurvey/web/rest/EncuestaResource.java b/src/main/java/org/datasurvey/web/rest/EncuestaResource.java index e3e4b11..0218659 100644 --- a/src/main/java/org/datasurvey/web/rest/EncuestaResource.java +++ b/src/main/java/org/datasurvey/web/rest/EncuestaResource.java @@ -125,6 +125,31 @@ public class EncuestaResource { Encuesta result = encuestaService.save(encuesta); + return ResponseEntity + .ok() + .headers(HeaderUtil.createEntityUpdateAlert(applicationName, true, ENTITY_NAME, encuesta.getId().toString())) + .body(result); + } + + @PutMapping("/encuestas/publish/{id}") + public ResponseEntity publishEncuesta( + @PathVariable(value = "id", required = false) final Long id, + @Valid @RequestBody Encuesta encuesta + ) throws URISyntaxException { + log.debug("REST request to update Encuesta : {}, {}", id, encuesta); + if (encuesta.getId() == null) { + throw new BadRequestAlertException("Invalid id", ENTITY_NAME, "idnull"); + } + if (!Objects.equals(id, encuesta.getId())) { + throw new BadRequestAlertException("Invalid ID", ENTITY_NAME, "idinvalid"); + } + + if (!encuestaRepository.existsById(id)) { + throw new BadRequestAlertException("Entity not found", ENTITY_NAME, "idnotfound"); + } + + Encuesta result = encuestaService.save(encuesta); + if (result.getAcceso().equals(AccesoEncuesta.PRIVATE)) { mailService.sendPublishedPrivateMail(result.getUsuarioExtra(), result.getContrasenna()); } else { diff --git a/src/main/webapp/app/entities/encuesta/delete/encuesta-delete-dialog.component.ts b/src/main/webapp/app/entities/encuesta/delete/encuesta-delete-dialog.component.ts index 713e0bb..f13f3bd 100644 --- a/src/main/webapp/app/entities/encuesta/delete/encuesta-delete-dialog.component.ts +++ b/src/main/webapp/app/entities/encuesta/delete/encuesta-delete-dialog.component.ts @@ -16,9 +16,9 @@ export class EncuestaDeleteDialogComponent { this.activeModal.dismiss(); } - confirmDelete(encuest: IEncuesta): void { - encuest.estado = EstadoEncuesta.DELETED; - this.encuestaService.deleteEncuesta(encuest).subscribe(() => { + confirmDelete(encuesta: IEncuesta): void { + encuesta.estado = EstadoEncuesta.DELETED; + this.encuestaService.deleteEncuesta(encuesta).subscribe(() => { this.activeModal.close('deleted'); }); } diff --git a/src/main/webapp/app/entities/encuesta/encuesta-publish-dialog/encuesta-publish-dialog.component.ts b/src/main/webapp/app/entities/encuesta/encuesta-publish-dialog/encuesta-publish-dialog.component.ts index dae745d..c71c99a 100644 --- a/src/main/webapp/app/entities/encuesta/encuesta-publish-dialog/encuesta-publish-dialog.component.ts +++ b/src/main/webapp/app/entities/encuesta/encuesta-publish-dialog/encuesta-publish-dialog.component.ts @@ -30,7 +30,7 @@ export class EncuestaPublishDialogComponent implements OnInit { encuesta.contrasenna = this.generatePassword(); } - this.encuestaService.update(encuesta).subscribe(() => { + this.encuestaService.publishEncuesta(encuesta).subscribe(() => { this.activeModal.close('published'); }); } diff --git a/src/main/webapp/app/entities/encuesta/list/encuesta.component.html b/src/main/webapp/app/entities/encuesta/list/encuesta.component.html index 4083896..d8edcee 100644 --- a/src/main/webapp/app/entities/encuesta/list/encuesta.component.html +++ b/src/main/webapp/app/entities/encuesta/list/encuesta.component.html @@ -85,14 +85,8 @@
    -
  • -
  • @@ -112,15 +106,14 @@ (click)="publish()" data-toggle="modal" data-target="#publicarEncuesta" - *ngIf="isPublished" > Publicar -
  • +
  • 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 510efd8..801584c 100644 --- a/src/main/webapp/app/entities/encuesta/list/encuesta.component.ts +++ b/src/main/webapp/app/entities/encuesta/list/encuesta.component.ts @@ -58,7 +58,7 @@ export class EncuestaComponent implements OnInit, AfterViewInit { faPlus = faPlus; faStar = faStar; faUpload = faUpload; - isPublished = false; + isPublished: Boolean = false; successPublished = false; account: Account | null = null; usuarioExtra: UsuarioExtra | null = null; @@ -73,7 +73,6 @@ export class EncuestaComponent implements OnInit, AfterViewInit { usuarioExtrasSharedCollection: IUsuarioExtra[] = []; userSharedCollection: IUser[] = []; - selectedIdSurvey: number | null = null; encuestaencontrada: IEncuesta | null = null; public searchString: string; @@ -98,7 +97,7 @@ export class EncuestaComponent implements OnInit, AfterViewInit { }); createAnother: Boolean = false; - selectedSurveyId: Number = 0; + selectedSurveyId: number | null = null; constructor( protected encuestaService: EncuestaService, @@ -251,8 +250,8 @@ export class EncuestaComponent implements OnInit, AfterViewInit { } deleteSurvey(): void { - if (this.selectedIdSurvey != null) { - this.getEncuesta(this.selectedIdSurvey) + if (this.selectedSurveyId != null) { + this.getEncuesta(this.selectedSurveyId) .pipe( finalize(() => { const modalRef = this.modalService.open(EncuestaDeleteDialogComponent, { size: 'lg', backdrop: 'static' }); @@ -443,38 +442,38 @@ export class EncuestaComponent implements OnInit, AfterViewInit { } async openContextMenu(event: any): Promise { - document.querySelectorAll('.ds-list--entity').forEach(e => { - e.classList.remove('active'); - }); - if (event.type === 'contextmenu') { event.preventDefault(); - this.selectedSurveyId = 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'; - document.getElementById('contextmenu-duplicate')!.style.display = 'block'; - - if (this.isPublished) { - document.getElementById('contextmenu-publish')!.style.display = 'block'; //cambiar - } - document.getElementById('contextmenu-share')!.style.display = 'block'; + if (event.target === null) return; + document.querySelectorAll('.ds-list--entity').forEach(e => { + e.classList.remove('active'); + }); if ((event.target as HTMLElement).classList.contains('ds-list')) { + document.getElementById('contextmenu-create--separator')!.style.display = 'block'; document.getElementById('contextmenu-edit--separator')!.style.display = 'none'; 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); event.target.classList.add('active'); - document.getElementById('contextmenu-create--separator')!.style.display = 'none'; - this.selectedIdSurvey = Number(event.target.dataset.id); - //this.selectedSurvey = event.target.dataset.encuesta; + let res = await this.encuestaService.find(this.selectedSurveyId).toPromise(); + this.selectedSurvey = res.body; + this.isPublished = this.selectedSurvey!.estado === 'ACTIVE' || this.selectedSurvey!.estado === 'FINISHED'; // QUE SE LE MUESTRE CUANDO ESTE EN DRAFT + + document.getElementById('contextmenu-create--separator')!.style.display = 'none'; + document.getElementById('contextmenu-edit--separator')!.style.display = 'block'; + document.getElementById('contextmenu-delete--separator')!.style.display = 'block'; + document.getElementById('contextmenu-edit')!.style.display = 'block'; + document.getElementById('contextmenu-duplicate')!.style.display = 'block'; + + if (!this.isPublished) { + document.getElementById('contextmenu-publish')!.style.display = 'block'; + } else { + document.getElementById('contextmenu-publish')!.style.display = 'none'; + } + // document.getElementById('contextmenu-share')!.style.display = 'block'; + document.getElementById('contextmenu-create--separator')!.style.display = 'none'; } document.getElementById('contextmenu')!.style.top = event.layerY + 'px'; 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 430f8ea..a68c387 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,13 @@ export class EncuestaService { return this.http.get(`${this.resourceUrl}/${id}`); } + publishEncuesta(encuesta: IEncuesta): Observable { + //const copy = this.convertDateFromClient(encuesta); + return this.http.put(`${this.resourceUrl}/publish/${getEncuestaIdentifier(encuesta) as number}`, encuesta, { + observe: 'response', + }); + } + deleteEncuesta(encuesta: IEncuesta): Observable { //const copy = this.convertDateFromClient(encuesta); return this.http.put(`${this.resourceUrl}/${getEncuestaIdentifier(encuesta) as number}`, encuesta, { observe: 'response' }); From d65bd8b8ba8ad641381fb2a6a3deecb61da2fcb0 Mon Sep 17 00:00:00 2001 From: Pablo Bonilla Date: Sun, 25 Jul 2021 17:58:59 -0600 Subject: [PATCH 5/8] Add information modal for survey parameters --- .../encuesta-publish-dialog.component.ts | 2 - .../encuesta/list/encuesta.component.ts | 1 + .../update/encuesta-update.component.html | 369 +++--------------- .../update/encuesta-update.component.ts | 17 +- .../paper-dashboard/_datasurvey-global.scss | 19 + 5 files changed, 86 insertions(+), 322 deletions(-) diff --git a/src/main/webapp/app/entities/encuesta/encuesta-publish-dialog/encuesta-publish-dialog.component.ts b/src/main/webapp/app/entities/encuesta/encuesta-publish-dialog/encuesta-publish-dialog.component.ts index c71c99a..b7202cb 100644 --- a/src/main/webapp/app/entities/encuesta/encuesta-publish-dialog/encuesta-publish-dialog.component.ts +++ b/src/main/webapp/app/entities/encuesta/encuesta-publish-dialog/encuesta-publish-dialog.component.ts @@ -21,7 +21,6 @@ export class EncuestaPublishDialogComponent implements OnInit { } confirmPublish(encuesta: IEncuesta): void { - debugger; if (encuesta.estado === 'DRAFT') { encuesta.estado = EstadoEncuesta.ACTIVE; } @@ -36,7 +35,6 @@ export class EncuestaPublishDialogComponent implements OnInit { } generatePassword(): string { - debugger; const alpha = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; let password = ''; 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 801584c..43d7965 100644 --- a/src/main/webapp/app/entities/encuesta/list/encuesta.component.ts +++ b/src/main/webapp/app/entities/encuesta/list/encuesta.component.ts @@ -450,6 +450,7 @@ export class EncuestaComponent implements OnInit, AfterViewInit { }); if ((event.target as HTMLElement).classList.contains('ds-list')) { + document; document.getElementById('contextmenu-create--separator')!.style.display = 'block'; document.getElementById('contextmenu-edit--separator')!.style.display = 'none'; document.getElementById('contextmenu-delete--separator')!.style.display = 'none'; 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 a412e41..8a60ecd 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 @@ -1,6 +1,16 @@

    -

    {{ encuesta!.nombre }}

    +
    +

    {{ encuesta!.nombre }}

    +    +
    +

    Creada el día {{ encuesta!.fechaCreacion | formatShortDatetime | lowercase }}

    @@ -12,7 +22,7 @@
    - -

  • @@ -409,265 +359,48 @@ - + --> +
+ + 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 f7787b4..3ecf0fe 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,11 +25,14 @@ 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 } from '@fortawesome/free-solid-svg-icons'; +import { faTimes, faPlus, faQuestion } 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'; +import { ParametroAplicacionService } from './../../parametro-aplicacion/service/parametro-aplicacion.service'; +import { IParametroAplicacion } from './../../parametro-aplicacion/parametro-aplicacion.model'; + @Component({ selector: 'jhi-encuesta-update', templateUrl: './encuesta-update.component.html', @@ -37,6 +40,7 @@ import { EncuestaDeleteOptionDialogComponent } from '../encuesta-delete-option-d export class EncuestaUpdateComponent implements OnInit, AfterViewChecked { faTimes = faTimes; faPlus = faPlus; + faQuestion = faQuestion; isSaving = false; isSavingQuestion = false; @@ -79,6 +83,7 @@ export class EncuestaUpdateComponent implements OnInit, AfterViewChecked { ePreguntas?: any[]; ePreguntasOpciones?: any[]; encuesta: Encuesta | null = null; + parametrosAplicacion?: IParametroAplicacion | null = null; isLoading = false; @@ -95,7 +100,8 @@ export class EncuestaUpdateComponent implements OnInit, AfterViewChecked { protected modalService: NgbModal, protected ePreguntaCerradaService: EPreguntaCerradaService, protected ePreguntaCerradaOpcionService: EPreguntaCerradaOpcionService, - protected ePreguntaAbiertaService: EPreguntaAbiertaService + protected ePreguntaAbiertaService: EPreguntaAbiertaService, + protected parametroAplicacionService: ParametroAplicacionService ) {} loadAll(): void { @@ -123,6 +129,12 @@ export class EncuestaUpdateComponent implements OnInit, AfterViewChecked { ); } + async loadAplicationParameters(): Promise { + const params = await this.parametroAplicacionService.find(1).toPromise(); + this.parametrosAplicacion = params.body; + console.log(this.parametrosAplicacion); + } + ngOnInit(): void { this.activatedRoute.data.subscribe(({ encuesta }) => { if (encuesta.id === undefined) { @@ -134,6 +146,7 @@ export class EncuestaUpdateComponent implements OnInit, AfterViewChecked { } else { this.encuesta = encuesta; this.loadAll(); + this.loadAplicationParameters(); } // this.updateForm(encuesta); diff --git a/src/main/webapp/content/scss/paper-dashboard/_datasurvey-global.scss b/src/main/webapp/content/scss/paper-dashboard/_datasurvey-global.scss index da1c023..db81bbd 100644 --- a/src/main/webapp/content/scss/paper-dashboard/_datasurvey-global.scss +++ b/src/main/webapp/content/scss/paper-dashboard/_datasurvey-global.scss @@ -19,3 +19,22 @@ p { margin: 0 !important; } + +.ds-info--icon { + border-radius: 50%; + background-color: #f1f5f9; + cursor: pointer; + transition: background-color 0.2s ease-in-out; + width: 20px; + height: 20px; + font-size: 0.7rem; + color: #313747; + pointer-events: visible !important; + display: flex; + align-items: center; + justify-content: center; + + &:hover { + background-color: #e3e6e9; + } +} From a4badf7b7e542a4903483c12440c8327c1115a17 Mon Sep 17 00:00:00 2001 From: Eduardo Quiros Date: Sun, 25 Jul 2021 20:40:32 -0600 Subject: [PATCH 6/8] =?UTF-8?q?corregir=20tildado=20de=20'fecha=20creaci?= =?UTF-8?q?=C3=B3n'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../webapp/app/entities/encuesta/list/encuesta.component.html | 2 +- src/main/webapp/i18n/es/encuesta.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/webapp/app/entities/encuesta/list/encuesta.component.html b/src/main/webapp/app/entities/encuesta/list/encuesta.component.html index d8edcee..cb0d994 100644 --- a/src/main/webapp/app/entities/encuesta/list/encuesta.component.html +++ b/src/main/webapp/app/entities/encuesta/list/encuesta.component.html @@ -294,7 +294,7 @@ Nombre - Fecha Creacion + Fecha Creación Acceso Estado Categoria diff --git a/src/main/webapp/i18n/es/encuesta.json b/src/main/webapp/i18n/es/encuesta.json index cd755ab..bd2a3c2 100644 --- a/src/main/webapp/i18n/es/encuesta.json +++ b/src/main/webapp/i18n/es/encuesta.json @@ -22,7 +22,7 @@ "id": "ID", "nombre": "Nombre", "descripcion": "Descripcion", - "fechaCreacion": "Fecha Creacion", + "fechaCreacion": "Fecha Creación", "fechaPublicacion": "Fecha Publicacion", "fechaFinalizar": "Fecha Finalizar", "fechaFinalizada": "Fecha Finalizada", From 7e52f105f8cb035e4c2d5ea6a285b16e0dff3e5e Mon Sep 17 00:00:00 2001 From: Eduardo Quiros Date: Sun, 25 Jul 2021 20:43:09 -0600 Subject: [PATCH 7/8] agregar default.nix --- default.nix | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 default.nix diff --git a/default.nix b/default.nix new file mode 100644 index 0000000..75a5849 --- /dev/null +++ b/default.nix @@ -0,0 +1,11 @@ +with import { }; +mkShell { + nativeBuildInputs = [ + bashInteractive + maven + ]; + buildInputs = [ + openjdk11 + nodejs-14_x + ]; +} From fd2391f68ddfd2954663331a07c8e34e87143ef6 Mon Sep 17 00:00:00 2001 From: Eduardo Quiros Date: Sun, 25 Jul 2021 22:19:27 -0600 Subject: [PATCH 8/8] notificar al usuario cuando un admin elimina su encuesta --- .../org/datasurvey/service/MailService.java | 5 + .../datasurvey/web/rest/EncuestaResource.java | 7 + .../resources/i18n/messages_es.properties | 6 + .../templates/mail/encuestaDeletedEmail.html | 310 ++++++++++++++++++ .../encuesta-delete-dialog.component.ts | 6 + .../encuesta/service/encuesta.service.ts | 4 + 6 files changed, 338 insertions(+) create mode 100644 src/main/resources/templates/mail/encuestaDeletedEmail.html diff --git a/src/main/java/org/datasurvey/service/MailService.java b/src/main/java/org/datasurvey/service/MailService.java index a14a8e8..23ee9fe 100644 --- a/src/main/java/org/datasurvey/service/MailService.java +++ b/src/main/java/org/datasurvey/service/MailService.java @@ -158,4 +158,9 @@ public class MailService { log.debug("Sending reactivated account mail to '{}'", user.getUser().getEmail()); sendEmailFromTemplate(user.getUser(), "mail/encuestaPublicaEmail", "email.public.title"); } + + public void sendEncuestaDeleted(UsuarioExtra user) { + log.debug("Sending encuesta deletion notification mail to '{}'", user.getUser().getEmail()); + sendEmailFromTemplate(user.getUser(), "mail/encuestaDeletedEmail", "email.encuestaDeleted.title"); + } } diff --git a/src/main/java/org/datasurvey/web/rest/EncuestaResource.java b/src/main/java/org/datasurvey/web/rest/EncuestaResource.java index 0218659..e7825d3 100644 --- a/src/main/java/org/datasurvey/web/rest/EncuestaResource.java +++ b/src/main/java/org/datasurvey/web/rest/EncuestaResource.java @@ -299,4 +299,11 @@ public class EncuestaResource { .headers(HeaderUtil.createEntityDeletionAlert(applicationName, true, ENTITY_NAME, id.toString())) .build(); } + + @DeleteMapping("encuestas/notify/{id}") + public ResponseEntity notifyEncuestaDeleted(@PathVariable Long id, @Valid @RequestBody Encuesta encuesta) { + log.debug("REST request to notify {} of deleted Encuesta", encuesta.getUsuarioExtra().getUser().getEmail()); + mailService.sendEncuestaDeleted(encuesta.getUsuarioExtra()); + return ResponseEntity.noContent().build(); + } } diff --git a/src/main/resources/i18n/messages_es.properties b/src/main/resources/i18n/messages_es.properties index 7c205b5..f38805c 100644 --- a/src/main/resources/i18n/messages_es.properties +++ b/src/main/resources/i18n/messages_es.properties @@ -52,3 +52,9 @@ email.private.title=Su encuesta ha sido publicada de manera privada email.private.greeting=¡Felicidades {0}! email.private.text1=Su encuesta ha sdo publicada de manera privada. Su contraseña de acceso es: {0} email.private.text2=Saludos, + +#DeletedEncuesta +email.encuestaDeleted.title=Su encuesta ha sido eliminada +email.encuestaDeleted.greeting=Estimado {0} +email.encuestaDeleted.text1=Su encuesta ha sido eliminada por un administrador +email.encuestaDeleted.text2=Saludos, diff --git a/src/main/resources/templates/mail/encuestaDeletedEmail.html b/src/main/resources/templates/mail/encuestaDeletedEmail.html new file mode 100644 index 0000000..207f19a --- /dev/null +++ b/src/main/resources/templates/mail/encuestaDeletedEmail.html @@ -0,0 +1,310 @@ + + + + + + + + + + + Encuesta Eliminada + + + + + + + +
+
+ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌  +
+ +
+ + diff --git a/src/main/webapp/app/entities/encuesta/delete/encuesta-delete-dialog.component.ts b/src/main/webapp/app/entities/encuesta/delete/encuesta-delete-dialog.component.ts index f13f3bd..2c28a4d 100644 --- a/src/main/webapp/app/entities/encuesta/delete/encuesta-delete-dialog.component.ts +++ b/src/main/webapp/app/entities/encuesta/delete/encuesta-delete-dialog.component.ts @@ -3,12 +3,14 @@ import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'; import { IEncuesta } from '../encuesta.model'; import { EncuestaService } from '../service/encuesta.service'; import { EstadoEncuesta } from 'app/entities/enumerations/estado-encuesta.model'; +import { IUsuarioExtra } from 'app/entities/usuario-extra/usuario-extra.model'; @Component({ templateUrl: './encuesta-delete-dialog.component.html', }) export class EncuestaDeleteDialogComponent { encuesta?: IEncuesta; + usuarioExtra?: IUsuarioExtra; constructor(protected encuestaService: EncuestaService, protected activeModal: NgbActiveModal) {} @@ -21,5 +23,9 @@ export class EncuestaDeleteDialogComponent { this.encuestaService.deleteEncuesta(encuesta).subscribe(() => { this.activeModal.close('deleted'); }); + if (encuesta.usuarioExtra != undefined) { + const userEmail = encuesta.usuarioExtra!.user!.login; + this.encuestaService.deletedNotification(userEmail!); + } } } 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 a68c387..ccf077f 100644 --- a/src/main/webapp/app/entities/encuesta/service/encuesta.service.ts +++ b/src/main/webapp/app/entities/encuesta/service/encuesta.service.ts @@ -84,6 +84,10 @@ export class EncuestaService { return this.http.delete(`${this.resourceUrl}/${id}`, { observe: 'response' }); } + deletedNotification(email: string): Observable> { + return this.http.delete(`${this.resourceUrl}/${email}`, { observe: 'response' }); + } + addEncuestaToCollectionIfMissing(encuestaCollection: IEncuesta[], ...encuestasToCheck: (IEncuesta | null | undefined)[]): IEncuesta[] { const encuestas: IEncuesta[] = encuestasToCheck.filter(isPresent); if (encuestas.length > 0) {