Files
eatvio_app/lib/features/diary/repositories/diary_repository.dart
2024-11-22 15:27:51 +03:00

155 lines
3.7 KiB
Dart

import 'dart:io';
import 'package:eatvio_app/features/diary/models/diary_day_model.dart';
import 'package:eatvio_app/features/diary/models/nutrition_model.dart';
import 'package:eatvio_app/features/diary/models/product_moderation_model.dart';
import 'package:eatvio_app/features/diary/services/diary_service.dart';
class DiaryRepository {
final DiaryService diaryService;
DiaryRepository({
required this.diaryService,
});
Future<DiaryDayModel> getDiaryByDate(String date) async {
return (await getDiaryIndexByDate(date)).last;
}
Future<List<DiaryDayModel>> getDiaryIndexByDate(String date) async {
return (await diaryService.getDiaryIndexByDate(date: date));
}
Future<NutritionDataModel> getNutritionData(int index) async {
return await diaryService.getNutrition(index: index);
}
Future<void> addPortionToMeal({
required int diaryId,
required int mealId,
required String productName,
required String portion,
required int quantity,
}) async {
return await diaryService.addProductToMeal(
diaryId: diaryId,
mealId: mealId,
productName: productName,
portion: portion,
quantity: quantity,
);
}
Future<void> updateProductInMeal({
required int diaryId,
required int mealId,
required int portionId,
required String productName,
required String portion,
required int quantity,
}) async {
return await diaryService.updateProductInMeal(
diaryId: diaryId,
mealId: mealId,
portionId: portionId,
productInMeal: ProductInMeal(
productName: productName,
portion: portion,
quantity: quantity,
),
);
}
Future<void> deleteProductFromMeal({
required int diaryId,
required int mealId,
required int portionId,
}) async {
return await diaryService.deleteProductFromMeal(
diaryId: diaryId,
mealId: mealId,
portionId: portionId,
);
}
Future<void> uploadPhotos({
required int diaryId,
required int mealId,
required List<File> files,
}) async {
try {
for (int i = 0; i < files.length; i++) {
await diaryService.uploadPhotoOfMeal(
diaryId: diaryId,
mealId: mealId,
photo: files[i],
);
}
} catch (e) {
rethrow;
}
}
Future<void> deletePhoto({
required int diaryId,
required int mealId,
required DiaryPhotoModel photo,
}) async {
try {
await diaryService.deletePhotoOfMeal(
diaryId: diaryId,
mealId: mealId,
id: photo.id,
path: photo.path,
);
} catch (e) {
rethrow;
}
}
Future<void> finishDiaryDay({
required int diaryId,
required String wakeUp,
required String retire,
required String comment,
}) async {
return await diaryService.finishDiaryDay(
diaryId: diaryId,
// finishDiaryDayModel: FinishDiaryDayModel(
// wakeUp: wakeUp,
// retire: retire,
// comment: comment,
// ),
);
}
Future<void> sendProductToModeration({
required String name,
required double energy,
required double proteins,
required double fats,
required double carbohydrates,
}) async {
return await diaryService.sendProductToModeration(
data: ProductModerationModel(
name: name,
energy: energy,
proteins: proteins,
fats: fats,
carbohydrates: carbohydrates,
).toJson(),
);
}
Future<void> fillSatiety({
required int diaryId,
required int meal,
required int satiety,
}) async {
try {
return await diaryService.fillSatiety(diaryId: diaryId, meal: meal, satiety: satiety);
} catch (e) {
rethrow;
}
}
}