diff --git a/scouthub-magazzino-fe/src/app/magazzino/gruppi-magazzino-api.service.ts b/scouthub-magazzino-fe/src/app/magazzino/gruppi-magazzino-api.service.ts new file mode 100644 index 0000000..fe76e88 --- /dev/null +++ b/scouthub-magazzino-fe/src/app/magazzino/gruppi-magazzino-api.service.ts @@ -0,0 +1,48 @@ +import { HttpClient } from '@angular/common/http'; +import { Injectable, inject } from '@angular/core'; +import { Observable } from 'rxjs'; + +import { environment } from '../../environments/environment'; +import { MagazzinoVoce } from './magazzino-api.service'; + +export interface GruppoMagazzino { + id: string; + orgId: string; + nome: string; + parentId: string | null; + creatoIl: string; + voci: MagazzinoVoce[]; + // Sempre vuoto sui gruppi restituiti come figli: un solo livello di nesting. + figli: GruppoMagazzino[]; +} + +export interface CreaGruppoMagazzinoInput { + nome: string; + parentId?: string | null; +} + +export interface AggiornaGruppoMagazzinoInput { + nome?: string; + parentId?: string | null; +} + +@Injectable({ providedIn: 'root' }) +export class GruppiMagazzinoApiService { + private readonly http = inject(HttpClient); + + getGruppi(): Observable { + return this.http.get(`${environment.magazzinoApiBaseUrl}/gruppi-magazzino`); + } + + creaGruppo(input: CreaGruppoMagazzinoInput): Observable { + return this.http.post(`${environment.magazzinoApiBaseUrl}/gruppi-magazzino`, input); + } + + aggiornaGruppo(id: string, input: AggiornaGruppoMagazzinoInput): Observable { + return this.http.put(`${environment.magazzinoApiBaseUrl}/gruppi-magazzino/${id}`, input); + } + + eliminaGruppo(id: string): Observable { + return this.http.delete(`${environment.magazzinoApiBaseUrl}/gruppi-magazzino/${id}`); + } +}