Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | 1x 5x 5x 5x 1x 1x 1x 1x 1x | import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
import { environment } from '../config/environment';
import { AuthService } from './auth.service';
import {
Participation,
ParticipationRequest,
ParticipationResponse,
ClaimPrizeRequest
} from '../models';
@Injectable({
providedIn: 'root'
})
export class ParticipationService {
private readonly API_URL = `${environment.apiUrl}/participations`;
constructor(
private http: HttpClient,
private authService: AuthService
) {}
/**
* Participer au jeu avec un code
*/
participate(request: ParticipationRequest): Observable<ParticipationResponse> {
return this.http.post<ParticipationResponse>(this.API_URL, request, {
headers: this.authService.getAuthHeaders()
});
}
/**
* Lister les participations d'un utilisateur
*/
getParticipationsByUser(userId: number): Observable<Participation[]> {
return this.http.get<{status: string; data: Participation[]}>(this.API_URL, {
params: { userId: userId.toString() },
headers: this.authService.getAuthHeaders()
}).pipe(
// Extraire le tableau data de la réponse
map(response => response.data || [])
);
}
/**
* Valider la remise d'un lot
*/
claimPrize(participationId: number, request: ClaimPrizeRequest): Observable<any> {
return this.http.post(`${this.API_URL}/${participationId}/claim`, request, {
headers: this.authService.getAuthHeaders()
});
}
/**
* Supprimer une participation
*/
deleteParticipation(id: number): Observable<any> {
return this.http.delete(`${this.API_URL}/${id}`, {
headers: this.authService.getAuthHeaders()
});
}
}
|