import 'dart:io'; import 'package:dio/dio.dart'; import 'package:farm_tpf/custom_model/CropPlot.dart'; import 'package:farm_tpf/custom_model/Device.dart'; import 'package:farm_tpf/custom_model/user.dart'; import 'package:farm_tpf/custom_model/user_request.dart'; import 'package:farm_tpf/data/api/app_exception.dart'; import 'package:farm_tpf/data/api/dio_provider.dart'; import 'package:farm_tpf/data/api/rest_client.dart'; import 'package:farm_tpf/models/PagedResult.dart'; import 'package:farm_tpf/models/Supply.dart'; import 'package:farm_tpf/models/index.dart'; import 'package:farm_tpf/utils/const_common.dart'; class Repository { final dio = DioProvider.instance(); Future> getActionTypes() { final client = RestClient(dio); return client.getActionTypes(); } Future getPlotDetail(int cropId, {int page, int size}) { final client = RestClient(dio); return client.getCropDetail(cropId, page: page, size: size); } Future getPlotDetailByCode(String cropCode, {int page, int size}) { final client = RestClient(dio); return client.getCropDetailByCode(cropCode, page: page, size: size); } Future> getPlots({int page, int size, String searchString}) { final client = RestClient(dio); return client.getPlots(page: page, size: size, query: searchString); } Future updatePlot(TbCropDTO tbCropDTO) { final client = RestClient(dio); return client.updateCrop(tbCropDTO); } Future signInWithCredentials(String username, String password) { final client = RestClient(dio); return client.login(UserRequest(username: username, password: password)); } Future> getInfinityList(String url, {int page = 0, int size = 20}) async { var initUrl = "/api/activities/latest-env-by-activity-type/1/2"; var url = ConstCommon.baseUrl + initUrl + "?page=$page&paged=true&size=$size"; var response = await dio.get(url); final value = PagedResult.fromJson(response.data, getInstanceClass()); return value; } Future> getSupplies(String type) async { final client = RestClient(dio); return client.getSupplies(type); } Object getInstanceClass() { var instanceClass; if (1 == 1) { instanceClass = new Crop(); } return instanceClass; } //Action Future createNursery(Function(dynamic) onSuccess, Function(String) onError, String activityNursery, {List filePaths}) async { var formData = FormData(); filePaths.forEach((f) { formData.files.add(MapEntry("images", MultipartFile.fromFileSync(f))); }); formData.fields.add(MapEntry("activityNursery", activityNursery)); try { await dio .post("${ConstCommon.baseUrl}/api/createNursery", data: formData) .then((value) { onSuccess(value); }).catchError((onError) { onError(AppException.handleError(onError)); }); } catch (e) { onError(AppException.handleError(e)); } } Future updateNursery(Function(dynamic) onSuccess, Function(String) onError, String activityNursery, {List filePaths}) async { var formData = FormData(); filePaths.forEach((f) { formData.files.add(MapEntry("images", MultipartFile.fromFileSync(f))); }); formData.fields.add(MapEntry("activityNursery", activityNursery)); try { await dio .post("${ConstCommon.baseUrl}/api/updateNursery", data: formData) .then((value) { onSuccess(value); }).catchError((onError) { onError(AppException.handleError(onError)); }); } catch (e) { onError(AppException.handleError(e)); } } //Device Future> getDevices() { final client = RestClient(dio); return client.getDevices(); } }