From 0d43286d845994c54731650dea37aca836baaf69 Mon Sep 17 00:00:00 2001 From: x2Skyz Date: Sun, 23 Nov 2025 18:43:10 +0700 Subject: [PATCH] -state --- .../services/state/budget-state.service.ts | 32 +++++++++++++++++++ .../services/state/project-state.service.ts | 32 +++++++++++++++++++ .../services/state/report-state.service.ts | 22 +++++++++++++ 3 files changed, 86 insertions(+) create mode 100644 ng-ttc-frontend/src/app/services/state/budget-state.service.ts create mode 100644 ng-ttc-frontend/src/app/services/state/project-state.service.ts create mode 100644 ng-ttc-frontend/src/app/services/state/report-state.service.ts diff --git a/ng-ttc-frontend/src/app/services/state/budget-state.service.ts b/ng-ttc-frontend/src/app/services/state/budget-state.service.ts new file mode 100644 index 0000000..855412a --- /dev/null +++ b/ng-ttc-frontend/src/app/services/state/budget-state.service.ts @@ -0,0 +1,32 @@ +import { Injectable } from '@angular/core'; +import { BehaviorSubject, Observable } from 'rxjs'; +import { IBudgetExpenseResponse, IBudgetAddResponse } from '../../interfaces/dashboard.interface'; + +@Injectable({ + providedIn: 'root' +}) +export class BudgetStateService { + private budgetExpenseState = new BehaviorSubject(null); + private budgetAddState = new BehaviorSubject(null); + + getBudgetExpenseState(): Observable { + return this.budgetExpenseState.asObservable(); + } + + setBudgetExpenseState(budgetExpense: IBudgetExpenseResponse): void { + this.budgetExpenseState.next(budgetExpense); + } + + getBudgetAddState(): Observable { + return this.budgetAddState.asObservable(); + } + + setBudgetAddState(budgetAdd: IBudgetAddResponse): void { + this.budgetAddState.next(budgetAdd); + } + + clearState(): void { + this.budgetExpenseState.next(null); + this.budgetAddState.next(null); + } +} diff --git a/ng-ttc-frontend/src/app/services/state/project-state.service.ts b/ng-ttc-frontend/src/app/services/state/project-state.service.ts new file mode 100644 index 0000000..205f10d --- /dev/null +++ b/ng-ttc-frontend/src/app/services/state/project-state.service.ts @@ -0,0 +1,32 @@ +import { Injectable } from '@angular/core'; +import { BehaviorSubject, Observable } from 'rxjs'; +import { IProjectSearchResponse, ITransactionSearchResponse } from '../../interfaces/dashboard.interface'; + +@Injectable({ + providedIn: 'root' +}) +export class ProjectStateService { + private projectState = new BehaviorSubject(null); + private transactionState = new BehaviorSubject(null); + + getProjectState(): Observable { + return this.projectState.asObservable(); + } + + setProjectState(project: IProjectSearchResponse): void { + this.projectState.next(project); + } + + getTransactionState(): Observable { + return this.transactionState.asObservable(); + } + + setTransactionState(transaction: ITransactionSearchResponse): void { + this.transactionState.next(transaction); + } + + clearState(): void { + this.projectState.next(null); + this.transactionState.next(null); + } +} diff --git a/ng-ttc-frontend/src/app/services/state/report-state.service.ts b/ng-ttc-frontend/src/app/services/state/report-state.service.ts new file mode 100644 index 0000000..007d33f --- /dev/null +++ b/ng-ttc-frontend/src/app/services/state/report-state.service.ts @@ -0,0 +1,22 @@ +import { Injectable } from '@angular/core'; +import { BehaviorSubject, Observable } from 'rxjs'; +import { IReportResponse } from '../../interfaces/dashboard.interface'; + +@Injectable({ + providedIn: 'root' +}) +export class ReportStateService { + private reportState = new BehaviorSubject(null); + + getReportState(): Observable { + return this.reportState.asObservable(); + } + + setReportState(report: IReportResponse): void { + this.reportState.next(report); + } + + clearState(): void { + this.reportState.next(null); + } +}