import 'package:agrilink_vocpro/core/constant/app_constant.dart'; import 'package:agrilink_vocpro/core/extension/extention.dart'; import 'package:agrilink_vocpro/data/model/relay_response.dart'; import 'package:agrilink_vocpro/features/home/model/latest_data_response.dart'; import 'package:agrilink_vocpro/features/home/model/npk1_soil_temp_grafik.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; } } Future getNpk1SoilTempGrafik({ required String metric, required String sensor, }) async { String dateNow = DateTime.now().toString(); String dateYesterday = DateTime.now().subtract(Duration(days: 1)).toString(); final formatedDateNow = dateFormatterShort(dateNow); final formatedDateYesterday = dateFormatterShort(dateYesterday); try { final result = await _dioWithoutInterceptor.get( '/sensor/getData?metric=$metric&range[start]=$formatedDateYesterday&range[end]=$formatedDateNow&range[time_range]=HOURLY&sensor=$sensor', ); if (result.statusCode == 200) { print(result.data.toString()); final data = Npk1SoilTempGrafik.fromJson(result.data); return data; } else { throw Exception('Failed to load data'); } } on DioException catch (e) { print(e); rethrow; } } 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) { print(e); rethrow; } } }