2024-10-09 01:21:10 +00:00
|
|
|
import 'package:agrilink_vocpro/core/constant/app_constant.dart';
|
2024-10-10 09:35:34 +00:00
|
|
|
import 'package:agrilink_vocpro/core/extension/extention.dart';
|
2024-10-09 01:21:10 +00:00
|
|
|
import 'package:agrilink_vocpro/data/model/relay_response.dart';
|
2024-10-10 09:35:34 +00:00
|
|
|
import 'package:agrilink_vocpro/features/home/model/latest_data_response.dart';
|
|
|
|
|
import 'package:agrilink_vocpro/features/home/model/npk1_soil_temp_grafik.dart';
|
2024-10-08 02:23:48 +00:00
|
|
|
import 'package:dio/dio.dart';
|
|
|
|
|
import 'package:flutter/foundation.dart';
|
|
|
|
|
|
|
|
|
|
class AppService {
|
|
|
|
|
final Dio _dioWithoutInterceptor = Dio(
|
|
|
|
|
BaseOptions(
|
|
|
|
|
baseUrl: AppConstant.baseUrl,
|
|
|
|
|
),
|
|
|
|
|
);
|
|
|
|
|
|
2024-10-09 01:21:10 +00:00
|
|
|
Future<RelayResponse> 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) {
|
2024-10-08 02:23:48 +00:00
|
|
|
if (kDebugMode) {
|
|
|
|
|
print(e);
|
|
|
|
|
}
|
|
|
|
|
rethrow;
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-10-10 09:35:34 +00:00
|
|
|
|
|
|
|
|
Future<Npk1SoilTempGrafik> 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<LatestDataResponse> 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;
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-10-08 02:23:48 +00:00
|
|
|
}
|