From ae1995b4829750ed406424e3398913d91178d971 Mon Sep 17 00:00:00 2001 From: Eduardo Quiros Date: Fri, 13 Aug 2021 01:36:27 -0600 Subject: [PATCH] =?UTF-8?q?agregar=20l=C3=B3gica=20para=20manejo=20de=20ca?= =?UTF-8?q?lificaci=C3=B3n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../encuesta/complete/complete.component.html | 4 +-- .../encuesta/complete/complete.component.ts | 31 +++++++++++++++---- 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/src/main/webapp/app/entities/encuesta/complete/complete.component.html b/src/main/webapp/app/entities/encuesta/complete/complete.component.html index 815fed0..b9b3560 100644 --- a/src/main/webapp/app/entities/encuesta/complete/complete.component.html +++ b/src/main/webapp/app/entities/encuesta/complete/complete.component.html @@ -169,9 +169,9 @@

Calificación

- diff --git a/src/main/webapp/app/entities/encuesta/complete/complete.component.ts b/src/main/webapp/app/entities/encuesta/complete/complete.component.ts index e1988a9..1ee1f99 100644 --- a/src/main/webapp/app/entities/encuesta/complete/complete.component.ts +++ b/src/main/webapp/app/entities/encuesta/complete/complete.component.ts @@ -39,7 +39,11 @@ export class EncuestaCompleteComponent implements OnInit { selectedSingleOptions: any; selectedMultiOptions: any; error: boolean; - rating?: Number; + calificacion: number; + stars: number[] = [1, 2, 3, 4, 5]; + cantidadCalificaciones: number = 0; + avgCalificacion: number = 0; + sumCalificacion: number = 0; constructor( protected activatedRoute: ActivatedRoute, @@ -56,13 +60,16 @@ export class EncuestaCompleteComponent implements OnInit { this.selectedSingleOptions = {}; this.selectedMultiOptions = []; this.error = false; - this.calificacion = 4; + this.calificacion = 0; } ngOnInit(): void { this.activatedRoute.data.subscribe(({ encuesta }) => { if (encuesta) { this.encuesta = encuesta; + this.avgCalificacion = parseInt(this.encuesta!.calificacion!.toString().split('.')[0]); + this.cantidadCalificaciones = parseInt(this.encuesta!.calificacion!.toString().split('.')[1]); + this.sumCalificacion = this.avgCalificacion * this.cantidadCalificaciones; } this.isLocked = this.verifyPassword(); if (this.isLocked) { @@ -179,17 +186,29 @@ export class EncuestaCompleteComponent implements OnInit { } finish(): void { + this.updateEncuestaRating(); this.getOpenQuestionAnswers(); this.registerOpenQuestionAnswers(); this.updateClosedOptionsCount(); } + updateEncuestaRating() { + if (this.calificacion !== 0) { + const newSumCalificacion = this.sumCalificacion + this.calificacion; + const newCantidadCalificacion = this.cantidadCalificaciones + 1; + const newAvgCalificacion = newSumCalificacion / newCantidadCalificacion; + const newRating = this.joinRatingValues(newAvgCalificacion, newCantidadCalificacion); + this.encuesta!.calificacion = Number(newRating); + this.encuestaService.updateSurvey(this.encuesta!); + } + } + updateClosedOptionsCount() { for (let key in this.selectedSingleOptions) { - this.subscribeToSaveResponse(this.ePreguntaCerradaOpcionService.updateCount(this.selectedSingleOptions[key])); + this.ePreguntaCerradaOpcionService.updateCount(this.selectedSingleOptions[key]); } this.selectedMultiOptions.forEach((option: any) => { - this.subscribeToSaveResponse(this.ePreguntaCerradaOpcionService.updateCount(option)); + this.ePreguntaCerradaOpcionService.updateCount(option); }); } @@ -199,7 +218,7 @@ export class EncuestaCompleteComponent implements OnInit { return p.id == id; }); let newRespuesta = new EPreguntaAbiertaRespuesta(0, this.selectedOpenOptions[id], pregunta); - this.subscribeToSaveResponse(this.ePreguntaAbiertaRespuestaService.create(newRespuesta)); + this.ePreguntaAbiertaRespuestaService.create(newRespuesta); } } @@ -229,7 +248,7 @@ export class EncuestaCompleteComponent implements OnInit { }); } - joinRatingValues(totalValue: Number, ratingCount: Number): Number { + joinRatingValues(totalValue: number, ratingCount: number): Number { const result = totalValue.toString() + '.' + ratingCount.toString(); return parseFloat(result); }