From b9847560aaabbf29e4705c7fd776081b0c57ae0d Mon Sep 17 00:00:00 2001 From: PROF25-FINAL Date: Tue, 27 May 2025 12:11:27 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=BF=D0=B8=D1=81=D0=BE=D0=BA=20=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=D0=B5=D0=BA=D1=82=D0=BE=D0=B2-8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/matule_query.dart | 1 + lib/src/data/models/project_model.dart | 46 +++++++++++++++++++++ lib/src/data/repository/client.dart | 11 +++++ lib/src/data/repository/repository.dart | 2 + lib/src/domain/use_cases/base_use_case.dart | 7 ++++ test/matule_query_test.dart | 3 ++ 6 files changed, 70 insertions(+) create mode 100644 lib/src/data/models/project_model.dart diff --git a/lib/matule_query.dart b/lib/matule_query.dart index f0151c0..84db533 100644 --- a/lib/matule_query.dart +++ b/lib/matule_query.dart @@ -4,6 +4,7 @@ export "src/data/models/auth_model.dart"; export "src/data/models/metadata_model.dart"; export "src/data/models/news_model.dart"; export "src/data/models/product_model.dart"; +export "src/data/models/project_model.dart"; export "src/data/repository/client.dart"; export "src/data/repository/repository.dart"; diff --git a/lib/src/data/models/project_model.dart b/lib/src/data/models/project_model.dart new file mode 100644 index 0000000..b0ac5a3 --- /dev/null +++ b/lib/src/data/models/project_model.dart @@ -0,0 +1,46 @@ +class ProjectModel { + final String title; + final String typeProject; + final String userId; + final String dateStart; + final String dateEnd; + final String gender; + final String descriptionSource; + final String category; + final String image; + + ProjectModel({ + required this.title, + required this.typeProject, + required this.userId, + required this.dateStart, + required this.dateEnd, + required this.gender, + required this.descriptionSource, + required this.category, + required this.image, + }); + + ProjectModel.fromJSON(Map json) + : title = json["title"], + typeProject = json["typeProject"], + userId = json["user_id"], + dateStart = json["dateStart"], + dateEnd = json["dateEnd"], + gender = json["gender"], + descriptionSource = json["description_source"], + category = json["category"], + image = json["image"]; + + Map toJSON() => { + "title": title, + "typeProject": typeProject, + "user_id": userId, + "dateStart": dateStart, + "dateEnd": dateEnd, + "gender": gender, + "description_source": descriptionSource, + "category": category, + "image": image, + }; +} diff --git a/lib/src/data/repository/client.dart b/lib/src/data/repository/client.dart index 4846c71..7618164 100644 --- a/lib/src/data/repository/client.dart +++ b/lib/src/data/repository/client.dart @@ -110,4 +110,15 @@ class Client extends Repository { .map((e) => NewsModel.fromJSON(e)) .toList(); } + + @override + Future> getProjectList() async { + Response response = await dio.get( + "$apiUrl/collections/project/records", + options: options, + ); + return (response.data["items"] as List) + .map((e) => ProjectModel.fromJSON(e)) + .toList(); + } } diff --git a/lib/src/data/repository/repository.dart b/lib/src/data/repository/repository.dart index a0f6aad..3727f1e 100644 --- a/lib/src/data/repository/repository.dart +++ b/lib/src/data/repository/repository.dart @@ -31,4 +31,6 @@ abstract class Repository { Future getProduct(String id); Future> getNewsList(); + + Future> getProjectList(); } diff --git a/lib/src/domain/use_cases/base_use_case.dart b/lib/src/domain/use_cases/base_use_case.dart index 230ca99..f76e63e 100644 --- a/lib/src/domain/use_cases/base_use_case.dart +++ b/lib/src/domain/use_cases/base_use_case.dart @@ -97,4 +97,11 @@ class BaseUseCase { ) async { await helper.request(() => client.getNewsList(), onResponse, onError); } + + Future getProjectList( + Function(List) onResponse, + Function(Exception) onError, + ) async { + await helper.request(() => client.getProjectList(), onResponse, onError); + } } diff --git a/test/matule_query_test.dart b/test/matule_query_test.dart index 0850537..3420ac5 100644 --- a/test/matule_query_test.dart +++ b/test/matule_query_test.dart @@ -72,5 +72,8 @@ void main() { test("NewsList", () async { await useCase.getNewsList(onResponse, onError); }); + test("ProjectList", () async { + await useCase.getProjectList(onResponse, onError); + }); }); }