import { HttpClient, HttpParams } from "@angular/common/http"; import { Injectable, inject } from "@angular/core"; import { STATE_ENDPOINTS } from "../../end-points/state/state.endpoints" import { Observable } from "rxjs"; import { DataTableQuery, DataTableResult } from "../../../shared/components/data-table/data-table.types"; import { CreateStateRequest, StateDto, StateLookupDto, UpdateStateRequest } from "../../models/state/state.model"; @Injectable({ providedIn: 'root' }) export class StateService { private readonly http = inject(HttpClient); getStateDataTable(query: DataTableQuery, countryId: string): Observable> { return this.http.post>(`${STATE_ENDPOINTS.dataTable}`, query, { params: new HttpParams().set('countryId', countryId) }); } createState(request: CreateStateRequest): Observable { return this.http.post(STATE_ENDPOINTS.create, request); } updateState(id: string, request: UpdateStateRequest): Observable { return this.http.put(STATE_ENDPOINTS.update(id), request); } getStateById(id: string): Observable { return this.http.get(STATE_ENDPOINTS.getById(id)); } autocomplete(countryId: string, term = '', limit = 50): Observable { return this.http.get(STATE_ENDPOINTS.autocomplete, { params: new HttpParams() .set('countryId', countryId) .set('term', term) .set('limit', limit) }); } }