import { Injectable } from "@angular/core"; import { HttpClient, HttpHeaders } from "@angular/common/http"; import { Observable } from "rxjs"; const httpOptions = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) }; @Injectable({ providedIn: "root", }) export class BuildingService { private readonly apiBaseURL = 'https://kapi.absys.ninja/hemat'; private readonly apiKey = 'j2yaYvPSQcsEEmHh3NEobfiXyyXmmnHT'; private readonly headers = new HttpHeaders({ "Content-Type": "application/json", "x-api-key": this.apiKey, }); loadDataIcon = null; constructor(private http: HttpClient) {} private get(endpoint: string, params: any = {}): Observable { const url = `${this.apiBaseURL}/${endpoint}`; return this.http.get(url, { headers: this.headers, params }); } private post(endpoint: string, data: any): Observable { const url = `${this.apiBaseURL}/${endpoint}`; return this.http.post(url, data, { headers: this.headers }); } private put(endpoint: string, data: any): Observable { const url = `${this.apiBaseURL}/${endpoint}`; return this.http.put(url, data, { headers: this.headers }); } private delete(endpoint: string, params: any = {}): Observable { const url = `${this.apiBaseURL}/${endpoint}`; return this.http.delete(url, { headers: this.headers, params }); } postLogin(data: any): Observable { return this.post('users/login', data); } listBuilding(): Observable { return this.get('building/dashboard/list'); } getRoomByBuildingId(buildingId: string): Observable { return this.get('room-building/list/byIds', { buildingId }); } getDeviceById(deviceId: string): Observable { return this.get(`devices/${deviceId}`); } getMasterListData(): Observable { return this.get('header-param/list'); } getMasterData(page: number = 1, limit: number = 100): Observable { return this.get('header-param', { page, limit }); } getMasterDataListFloor(buildingId: string): Observable { return this.get('header-detail-param/list', { headerId: 6, building_id: buildingId }); } getMasterBuildingData(page: number = 1, limit: number = 100): Observable { return this.get('building', { page, limit }); } getBuildingList(): Observable { return this.get('building/list'); } getListRoomData(): Observable { return this.get('room/list'); } getListRoomDataUnmap(): Observable { return this.get('room/list/unmap'); } getListFloorDataUnmap(id: any): Observable { return this.get('header-detail-param/list/unmap-room-building', { headerId: id }); } getMasterRoomData(page: number = 1, limit: number = 100): Observable { return this.get('room', { page, limit }); } getCostManagement(page: number = 1, limit: number = 100): Observable { return this.get('cost_management', { page, limit, building_id: 4, periode: '2024-06' }); } postHeaderDetailParam(data: any): Observable { return this.post('header-detail-param', data); } putHeaderDetailParam(data: any, id: string): Observable { return this.put(`header-detail-param/${id}`, data); } deleteHeaderDetailParam(id: string): Observable { return this.delete(`header-detail-param/${id}`); } postMasterBuildingParam(data: any): Observable { return this.post('building', data); } putMasterBuildingParam(data: any, id: string): Observable { return this.put(`building/${id}`, data); } deleteMasterBuildingParam(id: string): Observable { return this.delete(`building/${id}`); } postMasterRoomParam(data: any): Observable { return this.post('room', data); } putMasterRoomParam(data: any, id: string): Observable { return this.put(`room/${id}`, data); } deleteRoom(id: string): Observable { return this.delete(`room/${id}`); } postBatchBuilding(data: any): Observable { return this.post('room-building/post-batch/room', data); } getBuildingRoomList(page: number = 1, limit: number = 1000): Observable { return this.get('room-building', { page, limit }); } putBuildingRoom(data: any, id: string): Observable { return this.put(`room-building/${id}`, data); } putDevice(data: any, id: string): Observable { return this.put(`devices/${id}`, data); } getRoomBuildingById(roomBuildingId: string): Observable { return this.get(`room-building/${roomBuildingId}`); } deleteRoomBuilding(id: string): Observable { return this.delete(`room-building/${id}`); } getIconData(): Observable { return this.http.get(this.loadDataIcon, httpOptions); } }