import 'package:agrilink_vocpro/core/constant/app_constant.dart'; import 'package:agrilink_vocpro/core/extension/extention.dart'; import 'package:agrilink_vocpro/data/model/dht_graphic_response.dart'; import 'package:agrilink_vocpro/data/model/npk1_graphic_response.dart'; import 'package:agrilink_vocpro/data/model/npk2_graphic_response.dart'; import 'package:agrilink_vocpro/data/model/relay_response.dart'; import 'package:agrilink_vocpro/data/model/latest_data_response.dart'; import 'package:dio/dio.dart'; import 'package:flutter/foundation.dart'; class AppService { final Dio _dioWithoutInterceptor = Dio( BaseOptions( baseUrl: AppConstant.baseUrl, ), ); Future getRelayStatus() async { try { await Future.delayed(const Duration(seconds: 3)); final result = await _dioWithoutInterceptor.get('get-relay'); if (result.statusCode == 200) { final data = RelayResponse.fromJson(result.data); return data; } else { throw Exception('Failed to load data'); } } on DioException catch (e) { if (kDebugMode) { print(e); } rethrow; } } //get grafik data dht Future getGrafikDataDht({ required String metric, }) async { String date = DateTime.now().toString(); final formatedDate = dateFormatterShort(date); try { final result = await _dioWithoutInterceptor.get( '/sensor/getData?metric=$metric&range[start]=$formatedDate&range[end]=$formatedDate&range[time_range]=HOURLY&sensor=dht', ); if (result.statusCode == 200) { final data = DhtGraphicResponse.fromJson(result.data); return data; } else { throw Exception('Failed to load data'); } } on DioException catch (e) { final errorMessage = e.response?.data['message']; throw (errorMessage); } } // get grafik data npk1 Future getGraphicDataNpk1( {required String metric}) async { String date = DateTime.now().toString(); final formatedDate = dateFormatterShort(date); try { final result = await _dioWithoutInterceptor.get( '/sensor/getData?metric=$metric&range[start]=$formatedDate&range[end]=$formatedDate&range[time_range]=HOURLY&sensor=npk1', ); if (result.statusCode == 200) { final data = Npk1GraphicResponse.fromJson(result.data); return data; } else { throw Exception('Failed to load data'); } } on DioException catch (e) { final errorMessage = e.response?.data['message']; throw (errorMessage); } } // get grafik data npk2 Future getGraphicDataNpk2( {required String metric}) async { String date = DateTime.now().toString(); final formatedDate = dateFormatterShort(date); try { final result = await _dioWithoutInterceptor.get( '/sensor/getData?metric=$metric&range[start]=$formatedDate&range[end]=$formatedDate&range[time_range]=HOURLY&sensor=npk2', ); if (result.statusCode == 200) { final data = Npk2GraphicResponse.fromJson(result.data); return data; } else { throw Exception('Failed to load data'); } } on DioException catch (e) { final errorMessage = e.response?.data['message']; throw (errorMessage); } } // get latest data Future getLatestData() async { try { final result = await _dioWithoutInterceptor.get( '/sensor/getLatest', ); if (result.statusCode == 200) { final data = LatestDataResponse.fromJson(result.data); return data; } else { throw Exception('Failed to load data'); } } on DioException catch (e) { final errorMessage = e.response?.data['message']; throw (errorMessage); } } }