feat(diary): Fixed a moderation send issue. Dynamic product moderation now works

This commit is contained in:
2024-03-29 12:44:22 +03:00
parent 2eaf096ade
commit 7cd867806c
3 changed files with 66 additions and 54 deletions

View File

@@ -84,6 +84,10 @@ class DiaryEditBloc extends Bloc<DiaryEditEvent, DiaryEditState> {
commentController: currentState.commentController,
mealTimeController: currentState.mealTimeController,
productNameController: currentState.productNameController,
caloriesController: currentState.caloriesController,
proteinsController: currentState.proteinsController,
fatsController: currentState.fatsController,
carbsController: currentState.carbsController,
selectedSatiety: currentState.selectedSatiety,
selectedMood: currentState.selectedMood,
portions: currentState.portions,
@@ -114,6 +118,10 @@ class DiaryEditBloc extends Bloc<DiaryEditEvent, DiaryEditState> {
TextEditingController(text: diary['comment']),
productNameController: TextEditingController(),
productQuantityController: TextEditingController(),
caloriesController: TextEditingController(),
proteinsController: TextEditingController(),
fatsController: TextEditingController(),
carbsController: TextEditingController(),
diaryId: diaryId,
diaryDate: diaryDate,
autocompleteList: [],
@@ -198,6 +206,10 @@ class DiaryEditBloc extends Bloc<DiaryEditEvent, DiaryEditState> {
TextEditingController(text: diary['comment']),
productNameController: TextEditingController(),
productQuantityController: TextEditingController(),
caloriesController: TextEditingController(),
proteinsController: TextEditingController(),
fatsController: TextEditingController(),
carbsController: TextEditingController(),
diaryId: diaryId,
diaryDate: diaryDate,
autocompleteList: [],
@@ -691,7 +703,10 @@ class DiaryEditBloc extends Bloc<DiaryEditEvent, DiaryEditState> {
currentState.token,
);
print(response);
if (response.statusCode == 200)
print("Moderation success");
else
print("Moderation error");
}
}
@@ -702,28 +717,31 @@ class DiaryEditBloc extends Bloc<DiaryEditEvent, DiaryEditState> {
String fats_on_100gr,
String carbohydrates_on_100gr,
String? token) async {
String url =
'${dotenv.env['SERVER_ROOT']!}/diary/product_nutritional_values/sendToModeration';
var serverURL = Uri.parse('${dotenv.env['SERVER_ROOT']!}');
final Uri url = Uri.parse(
'${dotenv.env['SERVER_ROOT']!}/diary/product_nutritional_values/sendToModeration');
final Uri serverURL = Uri.parse('${dotenv.env['SERVER_ROOT']!}');
String host = serverURL.host;
final Map<String, dynamic> credentials = {
final Map<String, String> credentials = {
'name': name,
'energy_on_100gr': energy_on_100gr,
'proteins_on_100gr': proteins_on_100gr,
'fats_on_100gr': fats_on_100gr,
'carbohydrates_on_100gr': carbohydrates_on_100gr,
};
var bodyBytes = utf8.encode(json.encode(credentials));
var headers = {
//'Content-Length': bodyBytes,
'Authorization': 'Bearer $token',
'Host': host,
};
var response = await http.post(
Uri.parse(url),
headers: {
'Content-Type': 'application/json',
'Content-Length': '${bodyBytes.length}',
'Authorization': 'Bearer $token',
'Host': host,
},
body: bodyBytes,
url,
headers: headers,
body: credentials,
encoding: utf8,
);
if (response.statusCode == 200) {
return response;
} else {

View File

@@ -33,6 +33,10 @@ class DiaryEditLoadedState extends DiaryEditState {
this.productQuantityController,
this.selectedMood,
this.currentMeal,
this.caloriesController,
this.fatsController,
this.proteinsController,
this.carbsController,
required this.diaryId,
required this.selectedSatiety,
required this.moderationExpanded,
@@ -53,6 +57,10 @@ class DiaryEditLoadedState extends DiaryEditState {
TextEditingController? commentController;
TextEditingController? productNameController;
TextEditingController? productQuantityController;
TextEditingController? caloriesController;
TextEditingController? fatsController;
TextEditingController? proteinsController;
TextEditingController? carbsController;
int? selectedMood;
int selectedSatiety;
int diaryId;
@@ -72,6 +80,10 @@ class DiaryEditLoadedState extends DiaryEditState {
commentController,
productNameController,
productQuantityController,
caloriesController,
fatsController,
proteinsController,
carbsController,
selectedMood,
selectedSatiety,
diaryId,
@@ -94,6 +106,10 @@ class DiaryEditLoadedState extends DiaryEditState {
TextEditingController? commentController,
TextEditingController? productNameController,
TextEditingController? productQuantityController,
TextEditingController? caloriesController,
TextEditingController? fatsController,
TextEditingController? proteinsController,
TextEditingController? carbsController,
int? selectedMood,
int? selectedSatiety,
int? diaryId,
@@ -120,6 +136,10 @@ class DiaryEditLoadedState extends DiaryEditState {
selectedSatiety: selectedSatiety ?? this.selectedSatiety,
diaryId: diaryId ?? this.diaryId,
currentMeal: currentMeal ?? this.currentMeal,
caloriesController: caloriesController ?? this.caloriesController,
fatsController: fatsController ?? this.fatsController,
proteinsController: proteinsController ?? this.proteinsController,
carbsController: carbsController ?? this.carbsController,
wakeupExpanded: wakeupExpanded ?? this.wakeupExpanded,
moderationExpanded: moderationExpanded ?? this.moderationExpanded,
moodExpanded: moodExpanded ?? this.moodExpanded);

View File

@@ -309,13 +309,13 @@ class DiaryEditScreen extends StatelessWidget {
optionsBuilder: buildOptions(_options),
fieldViewBuilder: (
BuildContext context,
TextEditingController textEditingController,
TextEditingController productEditingController,
FocusNode focusNodeName,
VoidCallback onFieldSubmitted,
) {
return CustomTextFormField(
hintText: "Введите название продукта",
controller: textEditingController,
controller: productEditingController,
focusNode: focusNodeName,
onChanged: getAutocomplete(context, focusNodeQuantity),
/*onFieldSubmitted: (String value) {
@@ -357,7 +357,7 @@ class DiaryEditScreen extends StatelessWidget {
Padding(
padding: EdgeInsets.symmetric(horizontal: 10.h),
child: GestureDetector(
onTap: () => openCaloriesDialog(context),
onTap: () => openCaloriesDialog(context, state),
child: Text("Отправить на модерацию"),
),
),
@@ -449,33 +449,7 @@ class DiaryEditScreen extends StatelessWidget {
));
}
openCaloriesDialog(BuildContext context) {
String name = '';
String energyOn100gr = '';
String proteinsOn100gr = '';
String fatsOn100gr = '';
String carbohydratesOn100gr = '';
void onNameChanged(String value) {
name = value;
}
void onEnergyChanged(String value) {
energyOn100gr = value;
}
void onProteinsChanged(String value) {
proteinsOn100gr = value;
}
void onFatsChanged(String value) {
fatsOn100gr = value;
}
void onCarbohydratesChanged(String value) {
carbohydratesOn100gr = value;
}
openCaloriesDialog(BuildContext context, DiaryEditLoadedState state) {
showDialog(
context: context,
builder: (BuildContext dialogContext) {
@@ -486,31 +460,31 @@ class DiaryEditScreen extends StatelessWidget {
children: [
CustomTextFormField(
hintText: "Название",
onChanged: onNameChanged,
controller: state.productNameController,
),
SizedBox(height: 10.v),
CustomTextFormField(
onChanged: onEnergyChanged,
hintText: "Энергетическая ценность на 100",
keyboardType: TextInputType.number,
controller: state.caloriesController,
),
SizedBox(height: 10.v),
CustomTextFormField(
hintText: "Белки на 100г",
onChanged: onProteinsChanged,
keyboardType: TextInputType.number,
controller: state.proteinsController,
),
SizedBox(height: 10.v),
CustomTextFormField(
hintText: "Жиры на 100г",
onChanged: onFatsChanged,
keyboardType: TextInputType.number,
controller: state.fatsController,
),
SizedBox(height: 10.v),
CustomTextFormField(
hintText: "Углеводы на 100г",
onChanged: onCarbohydratesChanged,
keyboardType: TextInputType.number,
controller: state.carbsController,
),
],
),
@@ -522,11 +496,11 @@ class DiaryEditScreen extends StatelessWidget {
TextButton(
onPressed: triggerModeration(
context,
name,
energyOn100gr,
proteinsOn100gr,
fatsOn100gr,
carbohydratesOn100gr,
state.productNameController!.text,
state.caloriesController!.text,
state.proteinsController!.text,
state.fatsController!.text,
state.carbsController!.text,
dialogContext),
child: Text('Отправить'),
),