import { Injectable } from "@angular/core";
import { HttpClient, HttpHeaders } from "@angular/common/http";
import { Observable } from "rxjs";

const BASE_URL = 'https://kapi.absys.ninja/hemat';

@Injectable({
  providedIn: "root",
})
export class CostManagementService {
  constructor(private http: HttpClient) {}

  getCostManagement(id, period, category): Observable<any> {
    const endpoint = `/cost_management`;
    const params = new URLSearchParams({
      page: "1",
      limit: "100",
      building_id: id,
      periode: period,
    });
    if (category) {
      params.append("category_id", category);
    }
    const url = `${BASE_URL}${endpoint}?${params.toString()}`;
    const headers = new HttpHeaders({
      "Content-Type": "application/json",
      "x-api-key": "j2yaYvPSQcsEEmHh3NEobfiXyyXmmnHT",
    });
    return this.http.get<any>(url, { headers });
  }

  getCompWaterElectCost(id): Observable<any> {
    const endpoint = `/cost_management/card/comp-water-elect-cost`;
    const url = `${BASE_URL}${endpoint}?building_id=${id}`;
    const headers = new HttpHeaders({
      "Content-Type": "application/json",
      "x-api-key": "j2yaYvPSQcsEEmHh3NEobfiXyyXmmnHT",
    });
    return this.http.get<any>(url, { headers });
  }

  getCompPrevMonthCost(id): Observable<any> {
    const endpoint = `/cost_management/card/comp-prev-month-cost`;
    const url = `${BASE_URL}${endpoint}?building_id=${id}`;
    const headers = new HttpHeaders({
      "Content-Type": "application/json",
      "x-api-key": "j2yaYvPSQcsEEmHh3NEobfiXyyXmmnHT",
    });
    return this.http.get<any>(url, { headers });
  }

  getCompActEstCost(id): Observable<any> {
    const endpoint = `/cost_management/card/comp-act-est-cost`;
    const url = `${BASE_URL}${endpoint}?building_id=${id}`;
    const headers = new HttpHeaders({
      "Content-Type": "application/json",
      "x-api-key": "j2yaYvPSQcsEEmHh3NEobfiXyyXmmnHT",
    });
    return this.http.get<any>(url, { headers });
  }

  getSyncCost(data: any): Observable<any> {
    const endpoint = `/cost_management/cost/sync`;
    const url = `${BASE_URL}${endpoint}`;
    const headers = new HttpHeaders({
      "Content-Type": "application/json",
      "x-api-key": "j2yaYvPSQcsEEmHh3NEobfiXyyXmmnHT",
    });
    return this.http.post<any>(url, data, { headers });
  }

  getRealCostByBuildingId(id: any, period: any): Observable<any> {
    const endpoint = `/real-cost/get/byBuildingId`;
    const url = `${BASE_URL}${endpoint}?building_id=${id}&periode=${period}`;
    const headers = new HttpHeaders({
      "Content-Type": "application/json",
      "x-api-key": "j2yaYvPSQcsEEmHh3NEobfiXyyXmmnHT",
    });
    return this.http.get<any>(url, { headers });
  }

  putRealCost(data: any, id: any): Observable<any> {
    const endpoint = `/real-cost`;
    const url = `${BASE_URL}${endpoint}/${id}`;
    const headers = new HttpHeaders({
      'Content-Type': 'application/json',
      'x-api-key': 'j2yaYvPSQcsEEmHh3NEobfiXyyXmmnHT'
    });
    return this.http.put<any>(url, data, { headers });
  }

  getBUildingById(id: any): Observable<any> {
    const endpoint = `/building`;
    const url = `${BASE_URL}${endpoint}/${id}`;
    const headers = new HttpHeaders({
      'Content-Type': 'application/json',
      'x-api-key': 'j2yaYvPSQcsEEmHh3NEobfiXyyXmmnHT'
    });
    return this.http.get<any>(url, { headers });
  }
}
