import {inject, Injectable} from '@angular/core'; import {environment} from "../../environments/environment"; import {HttpClient, HttpParams} from "@angular/common/http"; import {Observable} from "rxjs"; import { CreatePlayerModel, DismissPlayerInformationModel, PlayerModel, PlayerMvpModel, UpdatePlayerModel } from "../models/player.model"; import {ExcelImportResponseModel} from "../models/excelImportResponse.model"; import {PagedResponseModel} from "../models/pagedResponse.model"; @Injectable({ providedIn: 'root' }) export class PlayerService { private readonly _serviceUrl = environment.apiBaseUrl + 'Players/'; private readonly _httpClient: HttpClient = inject(HttpClient); public getPlayer(playerId: string): Observable { return this._httpClient.get(this._serviceUrl + playerId); } public getAlliancePlayer(allianceId: string): Observable { return this._httpClient.get(this._serviceUrl + 'Alliance/' + allianceId); } public getDismissedPlayers(allianceId: string, pageNumber: number, pageSize: number): Observable> { let params = new HttpParams(); params = params.append('pageNumber', pageNumber); params = params.append('pageSize', pageSize); return this._httpClient.get>(this._serviceUrl + 'Alliance/dismiss/' + allianceId, {params: params}); } public getDismissPlayerInformation(playerId: string): Observable { return this._httpClient.get(this._serviceUrl + 'DismissInformation/' + playerId); } public getAllianceMvpPlayers(allianceId: string, playerType: string): Observable { let params = new HttpParams(); params = params.append("allianceId", allianceId); params = params.append("playerType", playerType); return this._httpClient.get(this._serviceUrl + 'Mvp', {params: params}); } public updatePlayer(playerId: string, player: UpdatePlayerModel): Observable { return this._httpClient.put(this._serviceUrl + playerId, player); } public dismissPlayer(playerId: string, reason: string): Observable { const dismissRequest = { id: playerId, dismissalReason: reason }; return this._httpClient.put(this._serviceUrl + playerId + '/dismiss', dismissRequest); } public reactivePlayer(playerId: string): Observable { const reactiveRequest = { id: playerId, }; return this._httpClient.put(this._serviceUrl + playerId + '/reactive', reactiveRequest); } public insertPlayer(player: CreatePlayerModel): Observable { return this._httpClient.post(this._serviceUrl, player); } public uploadPlayerFromExcel(allianceId: string, excelFile: File): Observable { const formData = new FormData(); formData.append('excelFile', excelFile); formData.append('allianceId', allianceId); return this._httpClient.post(this._serviceUrl + 'ExcelImport', formData); } public deletePlayer(playerId: string): Observable { return this._httpClient.delete(this._serviceUrl + playerId); } }