import { HttpClient, httpResource, HttpParams } from '@angular/common/http'; import { inject, Injectable, Signal } from '@angular/core'; import { Observable } from 'rxjs/internal/Observable'; import { catchError } from 'rxjs/operators'; import { ErrorLoggerService } from '../core/error-logger.service'; import { ClosingStock } from './closing-stock'; const url = '/api/closing-stock'; @Injectable({ providedIn: 'root', }) export class ClosingStockService { private http = inject(HttpClient); private log = inject(ErrorLoggerService); list(date: Signal, costCentre: Signal) { return httpResource(() => { const listUrl = date() === null ? url : `${url}/${date()}`; const params: Record = {}; const costCentre_val = costCentre(); if (costCentre_val !== null) params['d'] = costCentre_val; return { url: listUrl, params }; }); } save(closingStock: ClosingStock): Observable { return this.http .post(url, closingStock) .pipe(catchError(this.log.handleError('ClosingStockService', 'save'))) as Observable; } post(date: string, costCentre: string): Observable { const options = { params: new HttpParams().set('d', costCentre) }; return this.http .post(`${url}/${date}`, {}, options) .pipe(catchError(this.log.handleError('ClosingStockService', 'Post Voucher'))) as Observable; } delete(date: string, costCentre: string): Observable { const options = { params: new HttpParams().set('d', costCentre) }; return this.http .delete(`${url}/${date}`, options) .pipe(catchError(this.log.handleError('ClosingStockService', 'Delete Voucher'))) as Observable; } }