import { HttpClient, httpResource } from '@angular/common/http'; import { inject, Injectable, Signal } from '@angular/core'; import { Observable } from 'rxjs'; import { catchError } from 'rxjs/operators'; import { ErrorLoggerService } from '../core/error-logger.service'; import { Voucher } from '../core/voucher'; import { ExecuteResponse, ImportRequest, MappingUpdate, MappingEntry, PreviewResponse } from './sales-import'; const url = '/api/sales-import'; @Injectable({ providedIn: 'root', }) export class SalesImportService { private http = inject(HttpClient); private log = inject(ErrorLoggerService); voucher(id: Signal) { return httpResource(() => { const id_ = id(); return id_ === null ? undefined : `${url}/voucher/${id_}`; }); } preview(request: ImportRequest): Observable { return this.http .post(`${url}/preview`, request) .pipe(catchError(this.log.handleError('SalesImportService', 'preview'))) as Observable; } execute(request: ImportRequest): Observable { return this.http .post(`${url}/execute`, request) .pipe(catchError(this.log.handleError('SalesImportService', 'execute'))) as Observable; } saveMapping(mapping: MappingUpdate): Observable { return this.http .put(`${url}/mapping`, mapping) .pipe(catchError(this.log.handleError('SalesImportService', 'saveMapping'))) as Observable; } }