From 2a29dc91953296226f26aa40e6712ea1241aec4c Mon Sep 17 00:00:00 2001 From: Amritanshu Date: Tue, 18 Aug 2026 13:13:11 +0000 Subject: [PATCH] cdsa --- bookie/src/app/sales/bills/voucher.service.ts | 1 - .../discount/customer-discounts.service.ts | 25 +++++++---------- .../app/sales/discount/discount.component.ts | 27 ++++++++++--------- .../tables-dialog.component.html | 2 +- .../tables-dialog/tables-dialog.component.ts | 6 ++--- bookie/src/app/tables/table.service.ts | 18 ++++++++----- 6 files changed, 40 insertions(+), 39 deletions(-) diff --git a/bookie/src/app/sales/bills/voucher.service.ts b/bookie/src/app/sales/bills/voucher.service.ts index a673758..cdc0ec9 100644 --- a/bookie/src/app/sales/bills/voucher.service.ts +++ b/bookie/src/app/sales/bills/voucher.service.ts @@ -53,7 +53,6 @@ export class VoucherService { getFromBill(billId: Signal): HttpResourceRef { return httpResource(() => { const id = billId(); - console.log(id); return id ? `${url}/from-bill/${id}` : undefined; }); } diff --git a/bookie/src/app/sales/discount/customer-discounts.service.ts b/bookie/src/app/sales/discount/customer-discounts.service.ts index 963ded8..0d4720e 100644 --- a/bookie/src/app/sales/discount/customer-discounts.service.ts +++ b/bookie/src/app/sales/discount/customer-discounts.service.ts @@ -1,30 +1,25 @@ -import { HttpClient, httpResource, HttpResourceRef } from '@angular/common/http'; -import { Injectable, inject } from '@angular/core'; -import { Observable } from 'rxjs'; -import { catchError } from 'rxjs/operators'; +import { httpResource, HttpResourceRef } from '@angular/common/http'; +import { Injectable, inject, Injector } from '@angular/core'; -import { ErrorLoggerService } from '../../core/error-logger.service'; import { DiscountItem } from './discount-item'; const url = '/api/customer-discounts'; -const serviceName = 'CustomerService'; @Injectable({ providedIn: 'root', }) export class CustomerDiscountsService { - private http = inject(HttpClient); - private log = inject(ErrorLoggerService); + private injector = inject(Injector); list(id: string | undefined): HttpResourceRef { - return httpResource(() => (id === undefined ? url : `${url}/${id}`)); + return httpResource(() => (id === undefined ? url : `${url}/${id}`), { + injector: this.injector, + }); } - listForDiscount(): Observable<{ name: string; discount: number; discountLimit: number }[]> { - return this.http - .get<{ name: string; discount: number; discountLimit: number }[]>(`${url}/for-discount`) - .pipe(catchError(this.log.handleError(serviceName, 'list'))) as Observable< - { name: string; discount: number; discountLimit: number }[] - >; + listForDiscount(): HttpResourceRef<{ name: string; discount: number; discountLimit: number }[] | undefined> { + return httpResource<{ name: string; discount: number; discountLimit: number }[]>(() => `${url}/for-discount`, { + injector: this.injector, + }); } } diff --git a/bookie/src/app/sales/discount/discount.component.ts b/bookie/src/app/sales/discount/discount.component.ts index a8bb9fe..f8f7351 100644 --- a/bookie/src/app/sales/discount/discount.component.ts +++ b/bookie/src/app/sales/discount/discount.component.ts @@ -1,6 +1,7 @@ import { CdkScrollableModule } from '@angular/cdk/scrolling'; import { PercentPipe } from '@angular/common'; -import { Component, inject, signal, computed } from '@angular/core'; +import { HttpResourceRef } from '@angular/common/http'; +import { Component, inject, signal, computed, effect } from '@angular/core'; import { form, FormField } from '@angular/forms/signals'; import { MatButtonModule } from '@angular/material/button'; import { MAT_DIALOG_DATA, MatDialogRef, MatDialogModule } from '@angular/material/dialog'; @@ -8,7 +9,6 @@ import { MatFormFieldModule } from '@angular/material/form-field'; import { MatInputModule } from '@angular/material/input'; import { MatTableModule } from '@angular/material/table'; import { round } from 'mathjs'; -import { Observable } from 'rxjs'; import { DiscountItem } from './discount-item'; @@ -36,7 +36,7 @@ export interface DiscountFormData { }) export class DiscountComponent { dialogRef = inject>(MatDialogRef); - data = inject>(MAT_DIALOG_DATA); + data = inject>(MAT_DIALOG_DATA); list = signal([]); formModel = signal({ @@ -50,15 +50,18 @@ export class DiscountComponent { displayedColumns = ['name', 'discount']; constructor() { - this.data.subscribe((list: DiscountItem[]) => { - this.list.set(list); - this.formModel.update((f) => ({ - ...f, - discounts: list.map((x) => ({ - name: x.name, - discount: x.discount * 100, - })), - })); + effect(() => { + const list = this.data.value(); + if (list) { + this.list.set(list); + this.formModel.update((f) => ({ + ...f, + discounts: list.map((x) => ({ + name: x.name, + discount: x.discount * 100, + })), + })); + } }); } diff --git a/bookie/src/app/sales/tables-dialog/tables-dialog.component.html b/bookie/src/app/sales/tables-dialog/tables-dialog.component.html index 292fa99..9611065 100644 --- a/bookie/src/app/sales/tables-dialog/tables-dialog.component.html +++ b/bookie/src/app/sales/tables-dialog/tables-dialog.component.html @@ -1,7 +1,7 @@

Tables

- @for (table of list | async; track table) { + @for (table of list.value(); track table) { >(MatDialogRef); data = inject<{ - list: Observable; + list: HttpResourceRef; canChooseRunning: boolean; }>(MAT_DIALOG_DATA); - list: Observable; + list: HttpResourceRef; canChooseRunning: boolean; selected: Table | null; diff --git a/bookie/src/app/tables/table.service.ts b/bookie/src/app/tables/table.service.ts index 26d03f0..f274f36 100644 --- a/bookie/src/app/tables/table.service.ts +++ b/bookie/src/app/tables/table.service.ts @@ -1,5 +1,5 @@ import { HttpClient, HttpHeaders, httpResource, HttpResourceRef } from '@angular/common/http'; -import { Injectable, Signal, inject } from '@angular/core'; +import { Injectable, Signal, inject, Injector } from '@angular/core'; import { Observable } from 'rxjs'; import { catchError } from 'rxjs/operators'; @@ -18,20 +18,24 @@ const serviceName = 'TableService'; export class TableService { private http = inject(HttpClient); private log = inject(ErrorLoggerService); + private injector = inject(Injector); get(id: Signal | string | null): HttpResourceRef { - return httpResource
(() => { - const idVal = typeof id === 'function' ? id() : id; - return idVal === null || idVal === undefined ? url : `${url}/${idVal}`; - }); + return httpResource
( + () => { + const idVal = typeof id === 'function' ? id() : id; + return idVal === null || idVal === undefined ? url : `${url}/${idVal}`; + }, + { injector: this.injector }, + ); } list(): HttpResourceRef { - return httpResource(() => `${url}/list`); + return httpResource(() => `${url}/list`, { injector: this.injector }); } running(): HttpResourceRef { - return httpResource(() => `${url}/running`); + return httpResource(() => `${url}/running`, { injector: this.injector }); } save(tables: Table): Observable
{