import 'dart:io'; import 'package:dio/dio.dart'; import 'package:eatvio_app/features/diary/models/consultant_comment_model.dart'; import 'package:eatvio_app/features/diary/models/consultant_review_model.dart'; import 'package:eatvio_app/features/diary/models/create_day_model.dart'; import 'package:eatvio_app/features/diary/models/diary_day_model.dart'; import 'package:eatvio_app/features/diary/models/finish_diary_day_model.dart'; import 'package:eatvio_app/features/diary/models/nutrition_model.dart'; import 'package:eatvio_app/features/glossary/models/glossary_model.dart'; import 'package:retrofit/retrofit.dart'; part 'diary_service.g.dart'; @RestApi() abstract class DiaryService { factory DiaryService(Dio dio, {String baseUrl}) = _DiaryService; @GET('/api/diary/index/{date}') Future> getDiaryIndexByDate({@Path('date') required String date}); @GET('/api/diary/{diary}/show') Future getDiaryDay({@Path('diary') required int diary}); @GET('/api/diary/{diary}/dailyNutritionData') Future getNutrition({@Path('diary') required int diary}); @POST('/api/diary/{diary}/meals/{type_no}/photo/upload') @MultiPart() Future uploadPhotoOfMeal({@Path('diary') required int diary, @Path('type_no') required int typeNo, @Part(name: 'photo') required File photo}); @DELETE('/api/diary/{diary}/meals/{type_no}/photo/{user_attachment}/delete') Future deletePhotoOfMeal({ @Path('diary') required int diaryId, @Path('type_no') required int typeNo, @Path('user_attachment') required int userAttachment, }); @POST('/api/diary/{diary}/meals/{type_no}/portion/create') Future addProductToMeal({ @Path('diary') required int diary, @Path('type_no') required int typeNo, @Part(name: 'product_name') required String productName, @Part(name: 'portion') required String portion, @Part(name: 'quantity') required int quantity, @Part(name: 'product_nutritional_value_id') int? productNutritionalValueId, }); @PUT('/api/diary/{diary}/meals/{type_no}/portions/{portionModel}/update') Future updateProductInMeal({ @Path('diary') required int diary, @Path('type_no') required int typeNo, @Path('portionModel') required int portionModel, @Body() required Map productInMeal, }); @POST('/api/diary/{diary}/meals/{type_no}/{portionModel}/mark_eaten') Future markEaten({@Path('diary') required int diary, @Path('type_no') required int typeNo, @Path('portionModel') required int portionModel}); @POST('/api/diary/{diary}/meals/{type_no}/{portionModel}/unmark_eaten') Future unmarkEaten({@Path('diary') required int diary, @Path('type_no') required int typeNo, @Path('portionModel') required int portionModel}); @POST('/api/diary/{diary}/meals/{type_no}/portions/{portionModel}/restore') Future restore({@Path('diary') required int diary, @Path('type_no') required int typeNo, @Path('portionModel') required int portionModel}); @DELETE('/api/diary/{diary}/meals/{type_no}/portions/{portionModel}/delete') Future deleteProductFromMeal({ @Path('diary') required int diary, @Path('type_no') required int typeNo, @Path('portionModel') required int portionModel, }); @POST('/api/diary/{diary}/finishDay') Future finishDiaryDay({@Path('diary') required int diary, @Body(nullToAbsent: true) required FinishDiaryDayModel finishDiaryDayModel}); @POST('/api/diary/{diary}/meals/{type_no}/satiety/fill') Future fillSatiety({@Path('diary') required int diary, @Path('type_no') required int typeNo, @Field() required int satiety}); @POST('/api/diary/{diary}/meals/{type_no}/mood/fill') Future fillMood({@Path('diary') required int diary, @Path('type_no') required int typeNo, @Field() required int mood}); @POST('/api/diary/{diary}/meals/{type_no}/time/fill') Future fillTime({@Path('diary') required int diary, @Path('type_no') required int typeNo, @Field() required String time}); @POST('/api/diary/{diary}/wakeUp/fill') Future fillWakeup({@Path('diary') required int diary, @Field() required String wakeUp}); @POST('/api/diary/{diary}/retire/fill') Future fillRetire({@Path('diary') required int diary, @Field() required String retire}); @POST('/api/diary/product_nutritional_values/sendToModeration') Future sendProductToModeration({@Body() required Map data}); @POST('/api/diary/{id}/consultant/comment') Future commentUserDay({@Path('id') required int id, @Body() required ConsultantCommentModel body}); @GET('/api/chosen_plans/{planId}/{diaryId}/comments/show') Future getDiaryComments({@Path() required int planId, @Path() required int diaryId}); @POST('/api/diary/{diaryId}/consultant/comment/view') Future viewCommentOfDiaryDayByConsultant({@Path() required int diaryId}); @GET('/api/glossaries/index') Future getGlossariesIndex({@Queries() Map? filters}); @POST('/api/v2/diary/create/day') Future createDay({@Body() required CreateDayModel body}); @GET('/api/v2/diary/index/{day?}') Future getDiaryDayV2({@Query('day') required String day}); }