Список проектов-8

This commit is contained in:
PROF25-FINAL 2025-05-27 12:11:27 +03:00
parent ebba6d66af
commit b9847560aa
6 changed files with 70 additions and 0 deletions

View File

@ -4,6 +4,7 @@ export "src/data/models/auth_model.dart";
export "src/data/models/metadata_model.dart"; export "src/data/models/metadata_model.dart";
export "src/data/models/news_model.dart"; export "src/data/models/news_model.dart";
export "src/data/models/product_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/client.dart";
export "src/data/repository/repository.dart"; export "src/data/repository/repository.dart";

View File

@ -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<String, dynamic> 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<String, dynamic> toJSON() => {
"title": title,
"typeProject": typeProject,
"user_id": userId,
"dateStart": dateStart,
"dateEnd": dateEnd,
"gender": gender,
"description_source": descriptionSource,
"category": category,
"image": image,
};
}

View File

@ -110,4 +110,15 @@ class Client extends Repository {
.map((e) => NewsModel.fromJSON(e)) .map((e) => NewsModel.fromJSON(e))
.toList(); .toList();
} }
@override
Future<List<ProjectModel>> 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();
}
} }

View File

@ -31,4 +31,6 @@ abstract class Repository {
Future<ProductModel> getProduct(String id); Future<ProductModel> getProduct(String id);
Future<List<NewsModel>> getNewsList(); Future<List<NewsModel>> getNewsList();
Future<List<ProjectModel>> getProjectList();
} }

View File

@ -97,4 +97,11 @@ class BaseUseCase {
) async { ) async {
await helper.request(() => client.getNewsList(), onResponse, onError); await helper.request(() => client.getNewsList(), onResponse, onError);
} }
Future<void> getProjectList(
Function(List<ProjectModel>) onResponse,
Function(Exception) onError,
) async {
await helper.request(() => client.getProjectList(), onResponse, onError);
}
} }

View File

@ -72,5 +72,8 @@ void main() {
test("NewsList", () async { test("NewsList", () async {
await useCase.getNewsList(onResponse, onError); await useCase.getNewsList(onResponse, onError);
}); });
test("ProjectList", () async {
await useCase.getProjectList(onResponse, onError);
});
}); });
} }