Files
eatvio_app/lib/features/feed/services/feed_service.dart
2025-01-22 15:27:10 +03:00

109 lines
3.3 KiB
Dart

import 'package:dio/dio.dart';
import 'package:eatvio_app/features/feed/models/comment_model.dart';
import 'package:eatvio_app/features/feed/models/diets_pagination_model.dart';
import 'package:eatvio_app/features/feed/models/feed_blog_post_settings_model.dart';
import 'package:eatvio_app/features/feed/models/feed_consultant_model.dart';
import 'package:eatvio_app/features/feed/models/plan_pagination_model.dart';
import 'package:eatvio_app/features/feed/models/recipes_pagination_model.dart';
import 'package:retrofit/retrofit.dart';
part 'feed_service.g.dart';
@RestApi()
abstract class FeedService {
factory FeedService(Dio dio, {String baseUrl}) = _FeedService;
@GET('/api/blogPosts/index')
Future<FeedBlogPostSettingsModel> getBlogPostList({
@Query('page') required int page,
@Query('query_search') String? query,
});
@GET('/api/recipes/index')
Future<RecipesPagination> getRecipes({
@Query('page') required int page,
@Query('filters[tags][tags.id][\$in][]') required List<int>? tags,
@Query('filters[title][\$contains]') required String? query,
});
@GET('/api/diets/index')
Future<DietsPagination> getDiets({
@Query('page') required int page,
@Query('filters[name][\$startsWith]') String? query,
@Query('filters[type][\$contains]') String? types,
@Query('filters[duration][\$eq]') int? duration,
@Query('sort') String? sorting,
});
@GET('/api/plans/index')
Future<PlanPaginationModel> getPlans({
@Query('page') required int page,
@Query('filters[name][\$startsWith]') String? query,
@Query('filters[type][\$contains]') String? types,
@Query('filters[duration][\$eq]') int? duration,
@Query('filters[min_price_of_options][\$between][0]') int? minPrice,
@Query('filters[min_price_of_options][\$between][1]') int? maxPrice,
});
@GET('/api/blogPosts/{id}/comments/show')
Future<CommentModel> getBlogPostComments({
@Path() required String id,
});
@POST('/api/blogPosts/{id}/comment/create')
Future<void> sendBlogPostComment({
@Path() required String id,
@Part() required String body,
@Part() int? parentCommentId,
});
@GET('/api/diets/{id}/comments/show')
Future<CommentModel> getDietsComments({
@Path() required String id,
});
@POST('/api/diets/{id}/comment/create')
Future<void> sendDietsComment({
@Path() required String id,
@Part() required String body,
@Part() int? parentCommentId,
});
@GET('/api/plans/{slug}/comments/show')
Future<CommentModel> getPlansComments({
@Path() required String slug,
});
@POST('/api/plans/{slug}/comment/create')
Future<void> sendPlansComment({
@Path() required String slug,
@Part() required String body,
@Part() int? parentCommentId,
});
@GET('/api/recipes/{id}/comments/show')
Future<CommentModel> getRecipesComments({
@Path() required String id,
});
@POST('/api/recipes/{id}/comment/create')
Future<void> sendRecipesComment({
@Path() required String id,
@Part() required String body,
@Part() int? parentCommentId,
});
@POST('/api/blogPosts/{id}/like')
Future<void> likeBlogPost({
@Path() required int id,
});
@POST('/api/blogPosts/{id}/unliked')
Future<void> unlikedBlogPost({
@Path() required int id,
});
@GET('/api/consultants/index')
Future<FeedConsultantPaginationModel> getConsultants();
}