|
@@ -8,52 +8,84 @@ import { ActivatedRoute } from '@angular/router';
|
|
|
@Component({
|
|
@Component({
|
|
|
selector: 'app-gain',
|
|
selector: 'app-gain',
|
|
|
templateUrl: './gain.component.html',
|
|
templateUrl: './gain.component.html',
|
|
|
- styleUrls: ['./gain.component.scss']
|
|
|
|
|
|
|
+ styleUrls: ['./gain.component.scss'],
|
|
|
})
|
|
})
|
|
|
export class GainComponent implements OnInit {
|
|
export class GainComponent implements OnInit {
|
|
|
|
|
+ token: string; // JWT token extrait de l'URL
|
|
|
|
|
+ @Input() lots: Ticket[] = []; // Liste des gains
|
|
|
|
|
+ user: User; // Informations utilisateur
|
|
|
|
|
|
|
|
- token: string;
|
|
|
|
|
-
|
|
|
|
|
- constructor(private authService : AuthService, private route: ActivatedRoute, private userService : UsersService)
|
|
|
|
|
- { }
|
|
|
|
|
-
|
|
|
|
|
- // @Input() lots;
|
|
|
|
|
- @Input() lots:Ticket[];
|
|
|
|
|
- user : User;
|
|
|
|
|
|
|
+ constructor(
|
|
|
|
|
+ private authService: AuthService,
|
|
|
|
|
+ private route: ActivatedRoute,
|
|
|
|
|
+ private userService: UsersService
|
|
|
|
|
+ ) {}
|
|
|
|
|
|
|
|
ngOnInit(): void {
|
|
ngOnInit(): void {
|
|
|
- this.getInfoUser()
|
|
|
|
|
- // Récupérer le token JWT de l'URL
|
|
|
|
|
- this.route.queryParams.subscribe(params => {
|
|
|
|
|
- this.token = params['token'];
|
|
|
|
|
- });
|
|
|
|
|
|
|
+ // Charger les informations utilisateur et initialiser les gains
|
|
|
|
|
+ this.getInfoUser();
|
|
|
|
|
|
|
|
|
|
+ // Extraire le token JWT depuis les paramètres de l'URL
|
|
|
|
|
+ this.route.queryParams.subscribe((params) => {
|
|
|
|
|
+ this.token = params['token'];
|
|
|
|
|
+ });
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- getInfoUser(){
|
|
|
|
|
- this.authService.getUserInfo().subscribe( (user) =>{ this.user = user, this.lots = user.gains})
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * Récupère les informations utilisateur depuis l'API AuthService
|
|
|
|
|
+ */
|
|
|
|
|
+ getInfoUser(): void {
|
|
|
|
|
+ this.authService.getUserInfo().subscribe(
|
|
|
|
|
+ (user) => {
|
|
|
|
|
+ this.user = user;
|
|
|
|
|
+ this.lots = user.gains || []; // Initialiser les gains à partir des données utilisateur
|
|
|
|
|
+ },
|
|
|
|
|
+ (err) => {
|
|
|
|
|
+ console.error('Erreur lors de la récupération des informations utilisateur :', err);
|
|
|
|
|
+ this.authService.openSnackBar('Impossible de charger les informations utilisateur.');
|
|
|
|
|
+ }
|
|
|
|
|
+ );
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-
|
|
|
|
|
- receiveCode($event : Ticket){
|
|
|
|
|
- let id = this.authService.userValue._id
|
|
|
|
|
- this.userService.verifyLotUser(id, $event).subscribe( (res) => {
|
|
|
|
|
- if(res) {
|
|
|
|
|
- this.lots = [];
|
|
|
|
|
- this.lots.push(res);
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * Vérifie un gain et met à jour la liste des gains
|
|
|
|
|
+ * @param $event Ticket - Le ticket à vérifier
|
|
|
|
|
+ */
|
|
|
|
|
+ receiveCode($event: Ticket): void {
|
|
|
|
|
+ const userId = this.authService.userValue._id; // ID utilisateur récupéré depuis AuthService
|
|
|
|
|
+
|
|
|
|
|
+ // Vérifier le ticket avec l'API UsersService
|
|
|
|
|
+ this.userService.verifyLotUser(userId, $event).subscribe(
|
|
|
|
|
+ (res) => {
|
|
|
|
|
+ if (res) {
|
|
|
|
|
+ // Ajouter le ticket vérifié à la liste locale
|
|
|
|
|
+ this.lots = [...this.lots, res];
|
|
|
|
|
+
|
|
|
|
|
+ // Mettre à jour les gains côté serveur
|
|
|
|
|
+ this.userService.updateUserGains(userId, this.lots).subscribe(
|
|
|
|
|
+ () => {
|
|
|
|
|
+ console.log('Gains sauvegardés avec succès dans le backend.');
|
|
|
|
|
+ this.authService.openSnackBar('Gain ajouté avec succès !');
|
|
|
|
|
+
|
|
|
|
|
+ // Recharger les informations utilisateur pour s'assurer que les gains sont à jour
|
|
|
|
|
+ this.getInfoUser();
|
|
|
|
|
+ },
|
|
|
|
|
+ (err) => {
|
|
|
|
|
+ console.error('Erreur lors de la sauvegarde des gains :', err);
|
|
|
|
|
+ this.authService.openSnackBar(
|
|
|
|
|
+ `Erreur lors de la sauvegarde des gains : ${err.error?.message || 'Erreur inconnue.'}`
|
|
|
|
|
+ );
|
|
|
|
|
+ }
|
|
|
|
|
+ );
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ (err) => {
|
|
|
|
|
+ console.error('Erreur lors de la vérification du ticket :', err);
|
|
|
|
|
+ this.authService.openSnackBar(err.error?.message || 'Erreur lors de la vérification du ticket.');
|
|
|
}
|
|
}
|
|
|
- },
|
|
|
|
|
-
|
|
|
|
|
- err => {
|
|
|
|
|
- console.log(err.error.message)
|
|
|
|
|
- this.authService.openSnackBar(err.error.message)
|
|
|
|
|
|
|
+ );
|
|
|
|
|
+
|
|
|
|
|
+ console.log('Liste des gains après ajout :', this.lots);
|
|
|
}
|
|
}
|
|
|
- );
|
|
|
|
|
- console.log(' Retour de la requete',this.lots)
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
}
|
|
}
|