import 'package:flutter_riverpod/flutter_riverpod.dart'; import '../../core/network/api_client.dart'; import '../../app.dart'; import '../../shared/models/pagination_model.dart'; import 'expense_application_model.dart'; final expenseApplicationApiProvider = Provider( (ref) => ExpenseApplicationApi(ref.read(apiClientProvider)), ); class ExpenseApplicationApi { final ApiClient _client; ExpenseApplicationApi(this._client); Future> fetchList({ String status = '', int page = 1, int size = 20, }) async { final response = await _client.get>( '/expense-apply/list', queryParameters: {'status': status, 'page': page, 'size': size}, ); final data = response.data!; final list = (data['list'] as List) .map((e) => ExpenseApplicationModel.fromJson(e as Map)) .toList(); return PaginatedData( list: list, page: data['page'] as int, size: data['size'] as int, total: data['total'] as int, ); } Future fetchDetail(String id) async { final response = await _client.get>( '/expense-apply/detail/$id', ); return ExpenseApplicationModel.fromJson(response.data!); } Future submit(ExpenseApplicationModel model) async { await _client.post('/expense-apply/submit', data: model.toJson()); } Future saveDraft(ExpenseApplicationModel model) async { await _client.put('/expense-apply/draft', data: model.toJson()); } }