/** * Copyright since 2025 Mifos Initiative * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ import { Injectable, inject } from '@angular/core'; import { HttpClient, HttpParams } from '@angular/common/http'; import { Observable } from 'rxjs'; /** HTTP service for Cashier Deposit Request maker-checker workflow. */ @Injectable({ providedIn: 'root' }) export class CashierDepositService { private http = inject(HttpClient); submit(data: any): Observable { return this.http.post('/cashier/deposit-requests', data); } update(id: number, data: any): Observable { return this.http.put(`/cashier/deposit-requests/${id}`, data); } getMyRequests(status?: string, offset = 0, limit = 20, fromDate?: string, toDate?: string): Observable { let params = new HttpParams().set('offset', String(offset)).set('limit', String(limit)); if (status) params = params.set('status', status); if (fromDate) params = params.set('fromDate', fromDate); if (toDate) params = params.set('toDate', toDate); return this.http.get('/cashier/deposit-requests/my', { params }); } getPendingRequests(status = 'PENDING', offset = 0, limit = 20, fromDate?: string, toDate?: string): Observable { let params = new HttpParams().set('status', status).set('offset', String(offset)).set('limit', String(limit)); if (fromDate) params = params.set('fromDate', fromDate); if (toDate) params = params.set('toDate', toDate); return this.http.get('/cashier/deposit-requests', { params }); } getById(id: number): Observable { return this.http.get(`/cashier/deposit-requests/${id}`); } approve(id: number): Observable { return this.http.post(`/cashier/deposit-requests/${id}/approve`, {}); } reject(id: number, reason: string): Observable { return this.http.post(`/cashier/deposit-requests/${id}/reject`, { reason }); } }