import 'dart:io'; import 'package:dio/dio.dart'; import 'package:ebroker/Ui/screens/widgets/adaptive_image_picker.dart'; import 'package:ebroker/data/model/data_output.dart'; import 'package:ebroker/exports/main_export.dart'; import 'package:ebroker/utils/api.dart'; import '../model/project_model.dart'; class ProjectRepository { createProject(Map projectPayload) async { try { Map multipartedData = _multipartImages(projectPayload); // multipartedData['image']=multipartedData['main_image']; var images = projectPayload['gallery_images']; multipartedData.remove("gallery_images"); Map galleryImages = {}; if (images != null) { galleryImages = ((images as MultiValue).value).fold({}, (previousValue, element) { if (element.value is! String) { previousValue.addAll({ "gallery_images[${previousValue.length}]": MultipartFile.fromFileSync((element.value as File).path) }); } return previousValue; }); } multipartedData.addAll(galleryImages); print(galleryImages); Map map = await Api.post(url: Api.postProject, parameter: multipartedData); print("PRINT MAP $map"); return map; } catch (e, st) { print(":E $st"); // throw e; } } Future> getMyProjects({required int offset}) async { Map result = await Api.get( url: Api.getProjects, queryParameters: {"userid": HiveUtils.getUserId(), "offset": offset}); List list = (result['data'] as List).map((e) => ProjectModel.fromMap(e)).toList(); return DataOutput(total: result['total'] ?? 0, modelList: list); } Future> getProjects({int? offset}) async { Map result = await Api.get( url: Api.getProjects, queryParameters: {"offset": offset}); List list = (result['data'] as List).map((e) => ProjectModel.fromMap(e)).toList(); return DataOutput(total: result['total'] ?? 0, modelList: list); } Map _multipartImages(Map data) { return data.map((key, value) { if (value is FileValue) { return MapEntry(key, MultipartFile.fromFileSync(value.value.path)); } if (value is MultiValue && key != "gallery_images") { List images = value.value.map((image) { if (image is FileValue) { return MultipartFile.fromFileSync(image.value.path); } }).toList(); return MapEntry(key, images); } if (value is List) { List files = value.map((e) => MultipartFile.fromFileSync(e.path)).toList(); return MapEntry(key, files); } if (value is Map) { var v = _multipartImages(value); return MapEntry(key, v); } if (value is List) { List list = value.map((e) { if (e is Map) { return _multipartImages(e); } return {}; }).toList(); return MapEntry(key, list); } return MapEntry(key, value); }); } }