forked from eatvio/eatvio_app
223 lines
5.2 KiB
Dart
223 lines
5.2 KiB
Dart
import 'dart:io';
|
|
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/diary/models/product_moderation_model.dart';
|
|
import 'package:eatvio_app/features/diary/services/diary_service.dart';
|
|
import 'package:eatvio_app/features/glossary/models/glossary_model.dart';
|
|
|
|
class DiaryRepository {
|
|
final DiaryService diaryService;
|
|
|
|
DiaryRepository({
|
|
required this.diaryService,
|
|
});
|
|
|
|
Future<DiaryDayModel> getDiaryByDate(String date) async {
|
|
try {
|
|
return (await getDiaryIndexByDate(date)).last;
|
|
} catch (e) {
|
|
rethrow;
|
|
}
|
|
}
|
|
|
|
Future<List<DiaryDayModel>> getDiaryIndexByDate(String date) async {
|
|
return (await diaryService.getDiaryIndexByDate(date: date));
|
|
}
|
|
|
|
Future<NutritionDataModel> getNutritionData(int index) async {
|
|
return await diaryService.getNutrition(diary: index);
|
|
}
|
|
|
|
Future<void> addPortionToMeal({
|
|
required int diaryId,
|
|
required int mealId,
|
|
required String productName,
|
|
required String portion,
|
|
required int quantity,
|
|
int? productNutritionalValueId,
|
|
}) async {
|
|
return await diaryService.addProductToMeal(
|
|
diary: diaryId,
|
|
typeNo: mealId,
|
|
productName: productName,
|
|
portion: portion,
|
|
quantity: quantity,
|
|
productNutritionalValueId: productNutritionalValueId,
|
|
);
|
|
}
|
|
|
|
Future<void> updateProductInMeal({
|
|
required int diaryId,
|
|
required int mealId,
|
|
required int portionId,
|
|
required String productName,
|
|
required String portion,
|
|
required int quantity,
|
|
int? productNutritionalValueId,
|
|
required PortionState portionState,
|
|
}) async {
|
|
Map<String, Object?> data = ProductInMeal(
|
|
productName: productName,
|
|
portion: portion,
|
|
quantity: quantity,
|
|
).toJson();
|
|
data['product_nutritional_value_id'] = productNutritionalValueId;
|
|
data['state'] = portionState.name;
|
|
return await diaryService.updateProductInMeal(
|
|
diary: diaryId,
|
|
typeNo: mealId,
|
|
portionModel: portionId,
|
|
productInMeal: data,
|
|
);
|
|
}
|
|
|
|
Future<void> markEaten({
|
|
required int diaryId,
|
|
required int mealId,
|
|
required int portionId,
|
|
}) async {
|
|
return await diaryService.markEaten(
|
|
diary: diaryId,
|
|
typeNo: mealId,
|
|
portionModel: portionId,
|
|
);
|
|
}
|
|
|
|
Future<void> unmarkEaten({
|
|
required int diaryId,
|
|
required int mealId,
|
|
required int portionId,
|
|
}) async {
|
|
return await diaryService.unmarkEaten(
|
|
diary: diaryId,
|
|
typeNo: mealId,
|
|
portionModel: portionId,
|
|
);
|
|
}
|
|
|
|
Future<void> restore({
|
|
required int diaryId,
|
|
required int mealId,
|
|
required int portionId,
|
|
}) async {
|
|
return await diaryService.restore(
|
|
diary: diaryId,
|
|
typeNo: mealId,
|
|
portionModel: portionId,
|
|
);
|
|
}
|
|
|
|
Future<void> deleteProductFromMeal({
|
|
required int diaryId,
|
|
required int mealId,
|
|
required int portionId,
|
|
}) async {
|
|
return await diaryService.deleteProductFromMeal(
|
|
diary: diaryId,
|
|
typeNo: mealId,
|
|
portionModel: 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(
|
|
diary: diaryId,
|
|
typeNo: 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,
|
|
typeNo: mealId,
|
|
userAttachment: photo.id,
|
|
);
|
|
} catch (e) {
|
|
rethrow;
|
|
}
|
|
}
|
|
|
|
Future<void> finishDiaryDay({
|
|
required int diaryId,
|
|
required String wakeUp,
|
|
required String retire,
|
|
required String comment,
|
|
}) async {
|
|
return await diaryService.finishDiaryDay(
|
|
diary: diaryId,
|
|
finishDiaryDayModel: FinishDiaryDayModel(
|
|
wakeUp: wakeUp,
|
|
retire: retire,
|
|
comment: comment,
|
|
),
|
|
);
|
|
}
|
|
|
|
Future<GlossaryModerationModel> 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 mealId,
|
|
required int satiety,
|
|
}) async {
|
|
try {
|
|
return await diaryService.fillSatiety(
|
|
diary: diaryId,
|
|
typeNo: mealId,
|
|
satiety: satiety,
|
|
);
|
|
} catch (e) {
|
|
rethrow;
|
|
}
|
|
}
|
|
|
|
Future<void> fillTime({
|
|
required int diaryId,
|
|
required int mealId,
|
|
required String time,
|
|
}) async {
|
|
try {
|
|
return await diaryService.fillTime(
|
|
diary: diaryId,
|
|
typeNo: mealId,
|
|
time: time,
|
|
);
|
|
} catch (e) {
|
|
rethrow;
|
|
}
|
|
}
|
|
}
|