import { Injectable } from '@angular/core';
import { PasajeroAuth } from '../interfaces/pasajero.interface';
import { Observable } from 'rxjs';
import { HttpClient } from '@angular/common/http';

@Injectable({
  providedIn: 'root'
})
export class AuthPasajerosService {

  private baseUrl: string = "http://localhost:8080/pasajeros-auth";

  private correo: string='';
  private codigo: string='';
  private _pasajeroAuth: PasajeroAuth | undefined;
  pasajerosAuth: PasajeroAuth[] = [];

  constructor(private http: HttpClient) { 
    this.getPasajerosAuth().subscribe(
      res => {
        this.pasajerosAuth = res;
      }
    )
  }

  get auth(): PasajeroAuth {
    return {...this._pasajeroAuth!}
  }

  verificarAuth(): Observable<boolean> | boolean{
    if(!localStorage.getItem('correo')){
      return false;
    }
    return true;
  }

  login(correo: string, codigo: string): PasajeroAuth{
    this.pasajerosAuth.filter(data =>{
      if (data.correo==correo && data.codigo==codigo) {
        this.correo=data.correo;
        this.codigo=data.codigo;
        this._pasajeroAuth = data;
        localStorage.setItem('correo', data.correo);
        localStorage.setItem('rol', data.rol);
        localStorage.setItem('id', data.pasajeros[0].id.toPrecision());
      }
    });
    return this._pasajeroAuth!;
  }

  logout(){
    localStorage.removeItem('correo');
    localStorage.removeItem('rol');
    localStorage.removeItem('id');
    this._pasajeroAuth = undefined;
  }

  public getPasajeroRole(){
    return localStorage.getItem('rol');
  }

  getPasajerosAuth(): Observable<any[]>{
    return this.http.get<any[]>(`${ this.baseUrl }/listar`);
  }

  addPasajeroAuth(query:any): Observable<any> {
    return this.http.post(this.baseUrl+"/agregar",query);
  }
}
