refactor(diary): API methods all refactored and new nutrition charty finished

This commit is contained in:
2024-07-24 17:12:28 +03:00
parent 7535e82422
commit 0671c5d072
11 changed files with 568 additions and 443 deletions

View File

@@ -1,3 +1,5 @@
import 'dart:io';
import 'package:dio/dio.dart';
import 'package:eatvio_app/features/diary/models/diary_model.dart';
import 'package:eatvio_app/features/diary/models/portion.dart';
@@ -17,7 +19,7 @@ abstract class DiaryService {
Future<Map<String, DiaryModel>> getDiary(@Path() int id);
@GET('/diary/{id}/dailyNutritionData/')
Future<DiaryModel> getChart(@Path() String id);
Future<dynamic> getChart(@Path() int id);
@GET('/diary/product_nutritional_values/filter')
Future<Map<String, List<Product>>> getInputProduct(
@@ -58,10 +60,42 @@ abstract class DiaryService {
@Query('quantity') int quantity,
);
@POST('/diary/{diary_id}/meal/{meal_id}/photo/upload')
Future<void> uploadImage(
@Path() int diary_id,
@Path() int meal_id,
@Part() File photo,
);
@POST('/diary/product_nutritional_values/sendToModeration')
Future<Map<String, String>> sendModerationData(
@Query('name') String product_name,
@Query('energy_on_100gr') double energy_on_100gr,
@Query('proteins_on_100gr') double proteins_on_100gr,
@Query('fats_on_100gr') double fats_on_100gr,
@Query('carbohydrates_on_100gr') double carbohydrates_on_100gr,
);
@POST('/diary/{diary_id}/finishDay')
Future<void> sendFinishDay(
@Path() int diary_id,
@Query('wakeUp') String wakeup,
@Query('retire') String retire,
@Query('comment') String comment,
);
@DELETE('/diary/{diary_id}/meal/{meal_id}/portions/{portion_id}/delete')
Future<void> sendRemovePortionData(
@Path() int diary_id,
@Path() int meal_id,
@Path() int portion_id,
);
@DELETE('/diary/{diary_id}/meal/{meal_id}/photo/delete')
Future<void> sendRemovePhotoData(
@Path() int diary_id,
@Path() int meal_id,
@Query('path') String path,
@Query('id') int photo_id,
);
}

View File

@@ -74,29 +74,28 @@ class _DiaryService implements DiaryService {
}
@override
Future<DiaryModel> getChart(String id) async {
Future<dynamic> getChart(int id) async {
final _extra = <String, dynamic>{};
final queryParameters = <String, dynamic>{};
final _headers = <String, dynamic>{};
const Map<String, dynamic>? _data = null;
final _result = await _dio
.fetch<Map<String, dynamic>>(_setStreamType<DiaryModel>(Options(
final _result = await _dio.fetch(_setStreamType<dynamic>(Options(
method: 'GET',
headers: _headers,
extra: _extra,
)
.compose(
_dio.options,
'/diary/${id}/dailyNutritionData/',
queryParameters: queryParameters,
data: _data,
)
.copyWith(
baseUrl: _combineBaseUrls(
_dio.options.baseUrl,
baseUrl,
))));
final _value = DiaryModel.fromJson(_result.data!);
.compose(
_dio.options,
'/diary/${id}/dailyNutritionData/',
queryParameters: queryParameters,
data: _data,
)
.copyWith(
baseUrl: _combineBaseUrls(
_dio.options.baseUrl,
baseUrl,
))));
final _value = _result.data;
return _value;
}
@@ -291,6 +290,113 @@ class _DiaryService implements DiaryService {
return _value;
}
@override
Future<void> uploadImage(
int diary_id,
int meal_id,
File photo,
) async {
final _extra = <String, dynamic>{};
final queryParameters = <String, dynamic>{};
final _headers = <String, dynamic>{};
final _data = FormData();
_data.files.add(MapEntry(
'photo',
MultipartFile.fromFileSync(
photo.path,
filename: photo.path.split(Platform.pathSeparator).last,
),
));
await _dio.fetch<void>(_setStreamType<void>(Options(
method: 'POST',
headers: _headers,
extra: _extra,
)
.compose(
_dio.options,
'/diary/${diary_id}/meal/${meal_id}/photo/upload',
queryParameters: queryParameters,
data: _data,
)
.copyWith(
baseUrl: _combineBaseUrls(
_dio.options.baseUrl,
baseUrl,
))));
}
@override
Future<Map<String, String>> sendModerationData(
String product_name,
double energy_on_100gr,
double proteins_on_100gr,
double fats_on_100gr,
double carbohydrates_on_100gr,
) async {
final _extra = <String, dynamic>{};
final queryParameters = <String, dynamic>{
r'name': product_name,
r'energy_on_100gr': energy_on_100gr,
r'proteins_on_100gr': proteins_on_100gr,
r'fats_on_100gr': fats_on_100gr,
r'carbohydrates_on_100gr': carbohydrates_on_100gr,
};
final _headers = <String, dynamic>{};
const Map<String, dynamic>? _data = null;
final _result = await _dio.fetch<Map<String, dynamic>>(
_setStreamType<Map<String, String>>(Options(
method: 'POST',
headers: _headers,
extra: _extra,
)
.compose(
_dio.options,
'/diary/product_nutritional_values/sendToModeration',
queryParameters: queryParameters,
data: _data,
)
.copyWith(
baseUrl: _combineBaseUrls(
_dio.options.baseUrl,
baseUrl,
))));
final _value = _result.data!.cast<String, String>();
return _value;
}
@override
Future<void> sendFinishDay(
int diary_id,
String wakeup,
String retire,
String comment,
) async {
final _extra = <String, dynamic>{};
final queryParameters = <String, dynamic>{
r'wakeUp': wakeup,
r'retire': retire,
r'comment': comment,
};
final _headers = <String, dynamic>{};
const Map<String, dynamic>? _data = null;
await _dio.fetch<void>(_setStreamType<void>(Options(
method: 'POST',
headers: _headers,
extra: _extra,
)
.compose(
_dio.options,
'/diary/${diary_id}/finishDay',
queryParameters: queryParameters,
data: _data,
)
.copyWith(
baseUrl: _combineBaseUrls(
_dio.options.baseUrl,
baseUrl,
))));
}
@override
Future<void> sendRemovePortionData(
int diary_id,
@@ -319,6 +425,38 @@ class _DiaryService implements DiaryService {
))));
}
@override
Future<void> sendRemovePhotoData(
int diary_id,
int meal_id,
String path,
int photo_id,
) async {
final _extra = <String, dynamic>{};
final queryParameters = <String, dynamic>{
r'path': path,
r'id': photo_id,
};
final _headers = <String, dynamic>{};
const Map<String, dynamic>? _data = null;
await _dio.fetch<void>(_setStreamType<void>(Options(
method: 'DELETE',
headers: _headers,
extra: _extra,
)
.compose(
_dio.options,
'/diary/${diary_id}/meal/${meal_id}/photo/delete',
queryParameters: queryParameters,
data: _data,
)
.copyWith(
baseUrl: _combineBaseUrls(
_dio.options.baseUrl,
baseUrl,
))));
}
RequestOptions _setStreamType<T>(RequestOptions requestOptions) {
if (T != dynamic &&
!(requestOptions.responseType == ResponseType.bytes ||