fix(plans, recipes): added new end points for plans and recipes creation

This commit is contained in:
Username1548
2025-05-19 21:23:13 +07:00
parent cffa48d2ca
commit b942168167
13 changed files with 460 additions and 193 deletions

View File

@@ -1,4 +1,9 @@
import 'dart:developer';
import 'dart:io';
import 'package:dio/dio.dart';
import 'package:eatvio_app/core/const.dart';
import 'package:eatvio_app/core/image_compressing/image_compress_utility.dart';
import 'package:eatvio_app/features/create_plan/presentation/cubit/create_plan_state.dart';
import 'package:eatvio_app/features/create_plan/repositories/create_plan_repository.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
@@ -386,17 +391,63 @@ class CreatePlanCubit extends Cubit<CreatePlanState> {
}
Future<void> publishPlan() async {
if (validateAllFields()) {
emit(state.copyWith(isLoading: true));
final planModel = await state.planData.toCreationJson();
final plan = await createPlanRepository.createPlan(model: planModel);
if (state.planData.options[1].short.isNotEmpty) {
final options = state.planData.toOptionsCreationJson();
await createPlanRepository.createPacketOptions(slug: plan.slug, model: options);
} else {
final option = state.planData.toOptionCreationJson();
await createPlanRepository.createPacketOption(slug: plan.slug, model: option);
try {
if (validateAllFields()) {
emit(state.copyWith(isLoading: true));
final planMap = <String, dynamic>{};
planMap.addAll({
'name': state.planData.name,
'duration': state.planData.duration,
'state': 'active',
'description_md': state.planData.details,
'type[slim]': state.planData.type[0] ? '1' : '0',
'type[fit]': state.planData.type[1] ? '1' : '0',
'type[wellness]': state.planData.type[2] ? '1' : '0',
'type[behavior]': state.planData.type[3] ? '1' : '0',
'image': state.planData.image != null
? await MultipartFile.fromFile((await ImageCompressUtility.compressFile(File(state.planData.image!.path))).path,
filename: state.planData.image!.name)
: null
});
if (state.planData.options[1].short.isNotEmpty) {
planMap.addAll({
'packets_count': 3,
'packet1_options': {
'short': state.planData.options[0].short,
'price': int.parse((state.planData.options[0].price as double).toStringAsFixed(0)),
'description_md': state.planData.options[0].description,
'items': Map.fromIterable(state.planData.options[0].items),
},
'packet2_options': {
'short': state.planData.options[1].short,
'price': int.parse((state.planData.options[1].price as double).toStringAsFixed(0)),
'description_md': state.planData.options[1].description,
'items': Map.fromIterable(state.planData.options[1].items),
},
'packet3_options': {
'short': state.planData.options[2].short,
'price': int.parse((state.planData.options[2].price as double).toStringAsFixed(0)),
'description_md': state.planData.options[2].description,
'items': Map.fromIterable(state.planData.options[2].items),
},
});
} else {
planMap.addAll({
'packets_count': 1,
'packet1_options': {
'short': state.planData.options[0].short,
'price': int.parse((state.planData.options[0].price as double).toStringAsFixed(0)),
'description_md': state.planData.options[0].description,
'items': Map.fromIterable(state.planData.options[0].items),
},
});
}
await createPlanRepository.createPlan(model: planMap);
emit(state.copyWith(isLoading: false, planCreated: true));
}
} catch (e) {
log(e.toString());
emit(state.copyWith(isLoading: false, planCreated: true));
}
}