This commit is contained in:
2026-02-13 15:53:22 +01:00
commit 25271189b5
639 changed files with 49083 additions and 0 deletions

View File

@@ -0,0 +1,64 @@
import 'dart:convert';
import 'package:hiddingsel_app/appflow/model/represented_organisations.dart';
import '../../../services/network.dart';
import '../../model/articles.dart';
import 'package:http/http.dart';
class WordpressController {
static const String _baseUrl = 'www.hiddingsel.de';
static const String _path = 'wp-json/wp/v2/posts';
static const String _parameterPage = 'page';
static const String _parameterPerPage = 'per_page';
static const String _parameterSearch = 'search';
static const String _parameterCategories = 'categories';
static const String _parameterEmbed = '_embed';
static const int _httpCodeKeineWeiterenArticel = 400;
static Future<List<ArticleModel>> getArticles(int page, int itemCount) =>
BaseService.getSaveFromServer(
() => _getArticles(page, itemCount),
List<ArticleModel>.empty()
);
static Future<List<ArticleModel>> searchArticles(int page, int itemCount, String searchWord) =>
BaseService.getSaveFromServer(
() => _getArticles(page, itemCount, searchWord: searchWord),
List<ArticleModel>.empty()
);
static Future<List<ArticleModel>> getArticlesFromOrganisations(int page, int itemCount, List<RepresentedOrganisationModel> organisations) =>
BaseService.getSaveFromServer(
() => _getArticles(page, itemCount, organisations: organisations),
List<ArticleModel>.empty()
);
static Future<List<ArticleModel>> _getArticles(int page, int itemCount, {String? searchWord, List<RepresentedOrganisationModel>? organisations}) async {
final parameters = <String, dynamic> {
_parameterPage: (page + 1).toString(),
_parameterPerPage: itemCount.toString(),
_parameterSearch: searchWord,
_parameterCategories: organisations?.map((e) => e.wordpressId).join(','),
_parameterEmbed: null,
};
if(searchWord?.isEmpty ?? true) {
parameters.remove(_parameterSearch);
}
if(organisations?.isEmpty ?? true) {
parameters.remove(_parameterCategories);
}
final uri = Uri.https(_baseUrl, _path, parameters);
final response = await get(uri);
if (response.statusCode == _httpCodeKeineWeiterenArticel) {
return [];
}
final jsonData = json.decode(response.body);
return jsonData.map((article) => ArticleModel.fromWordpressJson(article)).cast<ArticleModel>().toList();
}
}