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"> <div class="mb-5">
<p class="ds-subtitle">Calificación</p> <p class="ds-subtitle">Calificación</p>
<div> <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 ><fa-icon
*ngFor="let i of [].constructor(5 - encuesta.calificacion!)" *ngFor="let i of [].constructor(5 - this.avgCalificacion)"
class="entity-icon--star--off" class="entity-icon--star--off"
[icon]="faStar" [icon]="faStar"
></fa-icon> ></fa-icon>

View File

@ -39,7 +39,11 @@ export class EncuestaCompleteComponent implements OnInit {
selectedSingleOptions: any; selectedSingleOptions: any;
selectedMultiOptions: any; selectedMultiOptions: any;
error: boolean; error: boolean;
rating?: Number; calificacion: number;
stars: number[] = [1, 2, 3, 4, 5];
cantidadCalificaciones: number = 0;
avgCalificacion: number = 0;
sumCalificacion: number = 0;
constructor( constructor(
protected activatedRoute: ActivatedRoute, protected activatedRoute: ActivatedRoute,
@ -56,13 +60,16 @@ export class EncuestaCompleteComponent implements OnInit {
this.selectedSingleOptions = {}; this.selectedSingleOptions = {};
this.selectedMultiOptions = []; this.selectedMultiOptions = [];
this.error = false; this.error = false;
this.calificacion = 4; this.calificacion = 0;
} }
ngOnInit(): void { ngOnInit(): void {
this.activatedRoute.data.subscribe(({ encuesta }) => { this.activatedRoute.data.subscribe(({ encuesta }) => {
if (encuesta) { if (encuesta) {
this.encuesta = 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(); this.isLocked = this.verifyPassword();
if (this.isLocked) { if (this.isLocked) {
@ -179,17 +186,29 @@ export class EncuestaCompleteComponent implements OnInit {
} }
finish(): void { finish(): void {
this.updateEncuestaRating();
this.getOpenQuestionAnswers(); this.getOpenQuestionAnswers();
this.registerOpenQuestionAnswers(); this.registerOpenQuestionAnswers();
this.updateClosedOptionsCount(); 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() { updateClosedOptionsCount() {
for (let key in this.selectedSingleOptions) { 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.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; return p.id == id;
}); });
let newRespuesta = new EPreguntaAbiertaRespuesta(0, this.selectedOpenOptions[id], pregunta); 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(); const result = totalValue.toString() + '.' + ratingCount.toString();
return parseFloat(result); return parseFloat(result);
} }