Files
Hotel-Booking/Frontend/src/features/payments/services/financialAuditService.ts
Iliyan Angelov 0fa2adeb19 update
2025-11-30 23:29:01 +02:00

66 lines
1.9 KiB
TypeScript

/**
* Service for accessing financial audit trail
*/
import apiClient from '../../../shared/services/apiClient';
export interface FinancialAuditRecord {
id: number;
action_type: string;
action_description: string;
payment_id?: number;
invoice_id?: number;
booking_id?: number;
amount?: number;
previous_amount?: number;
currency: string;
performed_by: number;
performed_by_email?: string;
metadata?: Record<string, any>;
notes?: string;
created_at: string;
}
export interface FinancialAuditFilters {
payment_id?: number;
invoice_id?: number;
booking_id?: number;
action_type?: string;
user_id?: number;
start_date?: string;
end_date?: string;
page?: number;
limit?: number;
}
const financialAuditService = {
/**
* Get financial audit trail with filters
*/
async getAuditTrail(filters: FinancialAuditFilters = {}) {
const params = new URLSearchParams();
if (filters.payment_id) params.append('payment_id', filters.payment_id.toString());
if (filters.invoice_id) params.append('invoice_id', filters.invoice_id.toString());
if (filters.booking_id) params.append('booking_id', filters.booking_id.toString());
if (filters.action_type) params.append('action_type', filters.action_type);
if (filters.user_id) params.append('user_id', filters.user_id.toString());
if (filters.start_date) params.append('start_date', filters.start_date);
if (filters.end_date) params.append('end_date', filters.end_date);
if (filters.page) params.append('page', filters.page.toString());
if (filters.limit) params.append('limit', filters.limit.toString());
const response = await apiClient.get(`/financial/audit-trail?${params.toString()}`);
return response.data;
},
/**
* Get a specific audit record
*/
async getAuditRecord(recordId: number) {
const response = await apiClient.get(`/financial/audit-trail/${recordId}`);
return response.data;
},
};
export default financialAuditService;