import "../config/api_config.dart"; import "../models/bible_verse.dart"; import "api_client.dart"; import "mock_data.dart"; class BibleVerseService { final ApiClient _client; BibleVerseService(this._client); Future> fetchVerses({bool activeOnly = false}) async { if (ApiConfig.useMockData) { final items = List.from(MockDataStore.bibleVerses); if (activeOnly) { return items.where((item) => item.active).toList(); } return items; } final query = activeOnly ? {"active": "true"} : null; final data = await _client.getList(ApiConfig.bibleVerses, query: query); return data .map((item) => BibleVerse.fromJson(item as Map)) .toList(); } Future createVerse(BibleVerse verse) async { if (ApiConfig.useMockData) { final created = BibleVerse( id: "bible-${DateTime.now().millisecondsSinceEpoch}", text: verse.text, reference: verse.reference, date: verse.date, active: verse.active, ); MockDataStore.bibleVerses.add(created); return created; } final data = await _client.post(ApiConfig.bibleVerses, verse.toJson()); return BibleVerse.fromJson(data); } Future updateVerse(BibleVerse verse) async { if (ApiConfig.useMockData) { final index = MockDataStore.bibleVerses.indexWhere( (item) => item.id == verse.id, ); if (index != -1) { MockDataStore.bibleVerses[index] = verse; } return verse; } final data = await _client.put( "${ApiConfig.bibleVerses}/${verse.id}", verse.toJson(), ); return BibleVerse.fromJson(data); } Future deleteVerse(String id) async { if (ApiConfig.useMockData) { MockDataStore.bibleVerses.removeWhere((item) => item.id == id); return; } await _client.delete("${ApiConfig.bibleVerses}/$id"); } }