agregar lógica para manejo de calificación

This commit is contained in:
Eduardo Quiros 2021-08-13 01:36:27 -06:00
parent 228207c16a
commit ae1995b482
No known key found for this signature in database
GPG Key ID: B77F36C3F12720B4
2 changed files with 27 additions and 8 deletions

View File

@ -169,9 +169,9 @@
<div class="mb-5">
<p class="ds-subtitle">Calificación</p>
<div>
<fa-icon *ngFor="let i of [].constructor(encuesta.calificacion)" class="entity-icon--star" [icon]="faStar"></fa-icon
<fa-icon *ngFor="let i of [].constructor(this.avgCalificacion)" class="entity-icon--star" [icon]="faStar"></fa-icon
><fa-icon
*ngFor="let i of [].constructor(5 - encuesta.calificacion!)"
*ngFor="let i of [].constructor(5 - this.avgCalificacion)"
class="entity-icon--star--off"
[icon]="faStar"
></fa-icon>

View File

@ -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);
}