import 'dart:io'; import 'package:dio/dio.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() 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}/time/fill') Future fillTime({ @Path('diary') required int diary, @Path('type_no') required int typeNo, @Field() required String time, }); @POST('/api/diary/product_nutritional_values/sendToModeration') Future sendProductToModeration({ @Body() required Map data, }); }