agregar lógica para manejo de calificación
This commit is contained in:
parent
228207c16a
commit
ae1995b482
|
@ -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>
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue