You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

128 lines
3.9KB

  1. import 'dart:io';
  2. import 'package:dio/dio.dart';
  3. import 'package:farm_tpf/custom_model/CropPlot.dart';
  4. import 'package:farm_tpf/custom_model/Device.dart';
  5. import 'package:farm_tpf/custom_model/user.dart';
  6. import 'package:farm_tpf/custom_model/user_request.dart';
  7. import 'package:farm_tpf/data/api/app_exception.dart';
  8. import 'package:farm_tpf/data/api/dio_provider.dart';
  9. import 'package:farm_tpf/data/api/rest_client.dart';
  10. import 'package:farm_tpf/models/PagedResult.dart';
  11. import 'package:farm_tpf/models/Supply.dart';
  12. import 'package:farm_tpf/models/index.dart';
  13. import 'package:farm_tpf/utils/const_common.dart';
  14. class Repository {
  15. final dio = DioProvider.instance();
  16. Future<List<ActionType>> getActionTypes() {
  17. final client = RestClient(dio);
  18. return client.getActionTypes();
  19. }
  20. Future<CropPlot> getPlotDetail(int cropId, {int page, int size}) {
  21. final client = RestClient(dio);
  22. return client.getCropDetail(cropId, page: page, size: size);
  23. }
  24. Future<CropPlot> getPlotDetailByCode(String cropCode, {int page, int size}) {
  25. final client = RestClient(dio);
  26. return client.getCropDetailByCode(cropCode, page: page, size: size);
  27. }
  28. Future<List<Crop>> getPlots({int page, int size, String searchString}) {
  29. final client = RestClient(dio);
  30. return client.getPlots(page: page, size: size, query: searchString);
  31. }
  32. Future<void> updatePlot(TbCropDTO tbCropDTO) {
  33. final client = RestClient(dio);
  34. return client.updateCrop(tbCropDTO);
  35. }
  36. Future<User> signInWithCredentials(String username, String password) {
  37. final client = RestClient(dio);
  38. return client.login(UserRequest(username: username, password: password));
  39. }
  40. Future<PagedResult<T>> getInfinityList<T>(String url,
  41. {int page = 0, int size = 20}) async {
  42. var initUrl = "/api/activities/latest-env-by-activity-type/1/2";
  43. var url =
  44. ConstCommon.baseUrl + initUrl + "?page=$page&paged=true&size=$size";
  45. var response = await dio.get(url);
  46. final value = PagedResult<T>.fromJson(response.data, getInstanceClass());
  47. return value;
  48. }
  49. Future<List<Supply>> getSupplies(String type) async {
  50. final client = RestClient(dio);
  51. return client.getSupplies(type);
  52. }
  53. Object getInstanceClass() {
  54. var instanceClass;
  55. if (1 == 1) {
  56. instanceClass = new Crop();
  57. }
  58. return instanceClass;
  59. }
  60. //Action
  61. Future<void> createAction(
  62. Function(dynamic) onSuccess, Function(String) onError,
  63. {String apiAddAction,
  64. String paramActivity,
  65. String activityAction,
  66. List<String> filePaths}) async {
  67. var formData = FormData();
  68. filePaths.forEach((f) {
  69. formData.files.add(MapEntry("images", MultipartFile.fromFileSync(f)));
  70. });
  71. formData.fields.add(MapEntry(paramActivity, activityAction));
  72. try {
  73. await dio
  74. .post("${ConstCommon.baseUrl}/$apiAddAction", data: formData)
  75. .then((value) {
  76. onSuccess(value.data);
  77. }).catchError((onError) {
  78. onError(AppException.handleError(onError));
  79. });
  80. } catch (e) {
  81. onError(AppException.handleError(e));
  82. }
  83. }
  84. Future<void> updateAction(
  85. Function(dynamic) onSuccess, Function(String) onError,
  86. {String apiUpdateAction,
  87. String paramActivity,
  88. String activityAction,
  89. List<String> filePaths}) async {
  90. var formData = FormData();
  91. filePaths.forEach((f) {
  92. formData.files.add(MapEntry("images", MultipartFile.fromFileSync(f)));
  93. });
  94. formData.fields.add(MapEntry(paramActivity, activityAction));
  95. try {
  96. await dio
  97. .post("${ConstCommon.baseUrl}/$apiUpdateAction", data: formData)
  98. .then((value) {
  99. onSuccess(value.data);
  100. }).catchError((onError) {
  101. onError(AppException.handleError(onError));
  102. });
  103. } catch (e) {
  104. onError(AppException.handleError(e));
  105. }
  106. }
  107. //Device
  108. Future<List<Device>> getDevices() {
  109. final client = RestClient(dio);
  110. return client.getDevices();
  111. }
  112. }