smartfarming-mobile/agrilink_vocpro/lib/domain/service/app_service.dart

121 lines
3.8 KiB
Dart

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<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) {
if (kDebugMode) {
print(e);
}
rethrow;
}
}
//get grafik data dht
Future<DhtGraphicResponse> 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<Npk1GraphicResponse> 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<Npk2GraphicResponse> 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<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) {
final errorMessage = e.response?.data['message'];
throw (errorMessage);
}
}
}