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.

86 lines
2.6KB

  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/user.dart';
  5. import 'package:farm_tpf/custom_model/user_request.dart';
  6. import 'package:farm_tpf/data/api/app_exception.dart';
  7. import 'package:farm_tpf/data/api/dio_provider.dart';
  8. import 'package:farm_tpf/data/api/rest_client.dart';
  9. import 'package:farm_tpf/models/PagedResult.dart';
  10. import 'package:farm_tpf/models/Supply.dart';
  11. import 'package:farm_tpf/models/index.dart';
  12. import 'package:farm_tpf/utils/const_common.dart';
  13. class Repository {
  14. final dio = DioProvider.instance();
  15. Future<List<ActionType>> getActionTypes() {
  16. final client = RestClient(dio);
  17. return client.getActionTypes();
  18. }
  19. Future<CropPlot> getPlotDetail(int cropId, {int page, int size}) {
  20. final client = RestClient(dio);
  21. return client.getCropDetail(cropId, page: page, size: size);
  22. }
  23. Future<List<Crop>> getPlots({int page, int size, String searchString}) {
  24. final client = RestClient(dio);
  25. return client.getPlots(page: page, size: size, query: searchString);
  26. }
  27. Future<void> updatePlot(TbCropDTO tbCropDTO) {
  28. final client = RestClient(dio);
  29. return client.updateCrop(tbCropDTO);
  30. }
  31. Future<User> signInWithCredentials(String username, String password) {
  32. final client = RestClient(dio);
  33. return client.login(UserRequest(username: username, password: password));
  34. }
  35. Future<PagedResult<T>> getInfinityList<T>(String url,
  36. {int page = 0, int size = 20}) async {
  37. var initUrl = "/api/activities/latest-env-by-activity-type/1/2";
  38. var url =
  39. ConstCommon.baseUrl + initUrl + "?page=$page&paged=true&size=$size";
  40. var response = await dio.get(url);
  41. final value = PagedResult<T>.fromJson(response.data, getInstanceClass());
  42. return value;
  43. }
  44. Future<List<Supply>> getSupplies(String type) async {
  45. final client = RestClient(dio);
  46. return client.getSupplies(type);
  47. }
  48. Object getInstanceClass() {
  49. var instanceClass;
  50. if (1 == 1) {
  51. instanceClass = new Crop();
  52. }
  53. return instanceClass;
  54. }
  55. //Action
  56. Future<void> createNursery(Function(dynamic) onSuccess,
  57. Function(String) onError, String activityNursery,
  58. {List<File> files}) async {
  59. FormData formData =
  60. new FormData.fromMap({"activityNursery": activityNursery});
  61. try {
  62. await dio
  63. .post("${ConstCommon.baseUrl}/api/createNursery", data: formData)
  64. .then((value) {
  65. onSuccess(value);
  66. }).catchError((onError) {
  67. onError(AppException.handleError(onError));
  68. });
  69. } catch (e) {
  70. onError(AppException.handleError(e));
  71. }
  72. }
  73. }