import { Injectable, Inject, LOCALE_ID } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Data } from '@angular/router';
import { Observable, map } from 'rxjs';
import { Usuarios } from '../models/usuarios.model';

const RP_CHAVE: string = "usuarios";

@Injectable({
  providedIn: 'root'
})
export class UsuariosService {
  BASE_URL = "http://localhost:8080";
  httpOptions = {
    headers: new HttpHeaders({
      'Content-Type': 'application/json'
    }),
    withCredentials: true
  };

  constructor(
    private httpClient: HttpClient, @Inject(LOCALE_ID)public locale: string
  ) {}

  listarUsuarios(): Observable<Usuarios[]> {
    return this.httpClient.get<Usuarios[]>(this.BASE_URL + '/cadastros', this.httpOptions);
  }

  inserirUsuario(usuario: Usuarios): Observable<Usuarios | null> {
    return this.httpClient.post<Usuarios>(this.BASE_URL + '/cadastro/novo',usuario, this.httpOptions)
  }

  atualizarUsuario(usuario: Usuarios): Observable<Usuarios> {
    return this.httpClient.put<Usuarios>(this.BASE_URL + '/cadastros/editar', usuario, {
     responseType: 'text' as 'json'
    });
  }

  removerUsuario(id: number): Observable<any> {
    return this.httpClient.delete<Usuarios>(this.BASE_URL  + '/cadastros/' + id, this.httpOptions);
  }

  buscarPorId(id: number): Observable<Usuarios> {
    return this.httpClient.get<Usuarios>(this.BASE_URL + '/cadastros/' + id, this.httpOptions)
  }
}
