import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { Router } from '@angular/router';
import { Observable } from 'rxjs';
import { environment } from 'src/environments/environment';
import { Membre } from '../models/membre';
import { TokenService } from './token.service';

@Injectable({
  providedIn: 'root'
})
export class MembreService {
  apiUrl: string;
  tokenKey: string;

  constructor(private http: HttpClient, private tokenService: TokenService, private router: Router) {
    this.apiUrl = environment.apiUrl;
    this.tokenKey = environment.tokenKey;
   }

   getMembres(): Observable<any> {
    return this.http.get(`${this.apiUrl}/membres/all`);
  }

  getMembresByTeamId(): Observable<any> | void{
    const teamId = this.tokenService.getCurrentTeamId();
    if (teamId){
    return this.http.get(`${this.apiUrl}/membres/team/${teamId}`);
    }else {
      this.router.navigate(['accueil']);
    }

  }

  getMembreId(id: any): Observable<any> {
    return this.http.get(`${this.apiUrl}/membres/` + id);
  }

  addMembre(membre: Membre): Observable<any> | void{
    const teamId = this.tokenService.getCurrentTeamId();
    if (teamId){
    return this.http.post(`${this.apiUrl}/membres/add/${teamId}`, membre);
    }else {
      this.router.navigate(['accueil']);
    }
  }

  deleteMembre(membre: Membre): Observable<any>{
    return this.http.delete(`${this.apiUrl}/membres/delete/${membre.id}`, {responseType: "text"});
  }

  updateMembre(membre: Membre): Observable<any> | void {
    const teamId = this.tokenService.getCurrentTeamId();
    if (teamId){
    return this.http.put(`${this.apiUrl}/membres/update/${teamId}/${membre.id}`, membre);
  }else {
      this.router.navigate(['accueil']);
    }
}

//récupère l'identifiant du membre, ainsi que le lien de son humeur
//"numero" est l'indice de l'humeur dans le tableau des humeurs
updateHumeur(numero : any) : Observable<any> | void {
  const userId = this.tokenService.getCurrentMembreId();
  if (userId){
  return this.http.put(`${this.apiUrl}/membres/update/smiley/${userId}`, numero);
}else {
    this.router.navigate(['accueil']);
  }
}





}


