|
- import 'dart:io';
-
- import 'package:dio/dio.dart';
- import 'package:dio_http_cache/dio_http_cache.dart';
- import 'package:farm_tpf/custom_model/CropPlot.dart';
- import 'package:farm_tpf/custom_model/Device.dart';
- import 'package:farm_tpf/custom_model/EnvironmentParameter.dart';
- import 'package:farm_tpf/custom_model/Harvest.dart';
- import 'package:farm_tpf/custom_model/Supply.dart';
- import 'package:farm_tpf/custom_model/WaterType.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/index.dart';
- import 'package:farm_tpf/utils/const_common.dart';
- import 'package:flutter/material.dart';
-
- class Repository {
- final dio = DioProvider.instance();
-
- Future<List<ActionType>> getActionTypes() {
- final client = RestClient(dio);
- var op = buildConfigurableCacheOptions(
- forceRefresh: true, maxAge: Duration(days: ConstCommon.kMaxAgeCache));
- return client.getActionTypes(options: op);
- }
-
- Future<List<Harvest>> getHarvests() {
- final client = RestClient(dio);
- var op = buildConfigurableCacheOptions(
- forceRefresh: true, maxAge: Duration(days: ConstCommon.kMaxAgeCache));
- return client.getHarvests(options: op);
- }
-
- Future<List<WaterType>> getWaterTypes() {
- final client = RestClient(dio);
- var op = buildConfigurableCacheOptions(
- forceRefresh: true, maxAge: Duration(days: ConstCommon.kMaxAgeCache));
- return client.getWaterTypes(options: op);
- }
-
- Future<CropPlot> getPlotDetail(int cropId, {int page, int size}) {
- final client = RestClient(dio);
- return client.getCropDetail(cropId, page: page, size: size);
- }
-
- Future<CropPlot> getPlotDetailByCode(String cropCode, {int page, int size}) {
- final client = RestClient(dio);
- return client.getCropDetailByCode(cropCode, page: page, size: size);
- }
-
- Future<List<Crop>> getPlots({int page, int size, String searchString}) {
- final client = RestClient(dio);
- return client.getPlots(page: page, size: size, query: searchString);
- }
-
- Future<void> updatePlot(TbCropDTO tbCropDTO) {
- final client = RestClient(dio);
- return client.updateCrop(tbCropDTO);
- }
-
- Future<User> signInWithCredentials(String username, String password) {
- final client = RestClient(dio);
- return client.login(UserRequest(username: username, password: password));
- }
-
- Future<PagedResult<T>> getInfinityList<T>(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<T>.fromJson(response.data, getInstanceClass());
- return value;
- }
-
- Future<List<Supply>> getSupplies({String query = ""}) async {
- final client = RestClient(dio);
- var op = buildConfigurableCacheOptions(
- forceRefresh: true, maxAge: Duration(days: ConstCommon.kMaxAgeCache));
- return client.getSupplies(query: query, options: op);
- }
-
- Future<List<Device>> getDeviceForActivity() async {
- final client = RestClient(dio);
- var op = buildConfigurableCacheOptions(
- forceRefresh: true, maxAge: Duration(days: ConstCommon.kMaxAgeCache));
- return client.getDeviceForActivity(options: op);
- }
-
- Object getInstanceClass() {
- var instanceClass;
- if (1 == 1) {
- instanceClass = new Crop();
- }
- return instanceClass;
- }
-
- //Action
- Future<void> createAction(
- Function(dynamic) onSuccess, Function(String) onError,
- {String apiAddAction,
- String paramActivity,
- String activityAction,
- List<String> filePaths}) async {
- var formData = FormData();
- filePaths.forEach((f) {
- formData.files.add(MapEntry("images", MultipartFile.fromFileSync(f)));
- });
- formData.fields.add(MapEntry(paramActivity, activityAction));
- try {
- await dio
- .post("${ConstCommon.baseUrl}/$apiAddAction", data: formData)
- .then((value) {
- onSuccess(value.data);
- }).catchError((onError) {
- onError(AppException.handleError(onError));
- });
- } catch (e) {
- onError(AppException.handleError(e));
- }
- }
-
- Future<void> updateAction(
- Function(dynamic) onSuccess, Function(String) onError,
- {String apiUpdateAction,
- String paramActivity,
- String activityAction,
- List<String> filePaths}) async {
- var formData = FormData();
- filePaths.forEach((f) {
- formData.files.add(MapEntry("images", MultipartFile.fromFileSync(f)));
- });
- formData.fields.add(MapEntry(paramActivity, activityAction));
- try {
- await dio
- .post("${ConstCommon.baseUrl}/$apiUpdateAction", data: formData)
- .then((value) {
- onSuccess(value.data);
- }).catchError((onError) {
- onError(AppException.handleError(onError));
- });
- } catch (e) {
- onError(AppException.handleError(e));
- }
- }
-
- //Device
- Future<List<Device>> getDevices() {
- final client = RestClient(dio);
- return client.getDevices();
- }
-
- //Environment Parameter
- Future<List<EnvironmentParameter>> getEnvironmentParameters(
- {@required int cropId, int page, int size}) {
- final client = RestClient(dio);
- return client.getEnvironmentParameters(cropId, page: page, size: size);
- }
- }
|