1import 'dart:developer';
3import '../api/api_client.dart';
4import '../api/api_endpoints.dart';
5import '../common/models/check_in_status_model.dart';
6import 'service_locator.dart';
7import 'package:shared_preferences/shared_preferences.dart';
9import 'package:geolocator/geolocator.dart';
19 final url = ApiEndpoints.getCheckInStatus(
userId:
userId);
23 if (response is Map && response.isEmpty) {
27 return CheckInStatusModel.fromJson(response);
35 required
int vehicleId,
36 required
String immatriculation,
42 if (position == null) {
49 latitude: position.latitude,
50 longitude: position.longitude,
60 final prefs = await SharedPreferences.getInstance();
61 final checkInStatus = CheckInStatusModel(
64 immatriculation: immatriculation,
67 await prefs.setString(
71 log(
'Error saving check-in status: $e');
78 bool serviceEnabled = await Geolocator.isLocationServiceEnabled();
79 if (!serviceEnabled) {
83 LocationPermission permission = await Geolocator.checkPermission();
84 if (permission == LocationPermission.denied) {
85 permission = await Geolocator.requestPermission();
86 if (permission == LocationPermission.denied) {
91 if (permission == LocationPermission.deniedForever) {
95 return await Geolocator.getCurrentPosition(
96 locationSettings:
const LocationSettings(
97 accuracy: LocationAccuracy.high,
101 log(
'Error getting current location: $e');
108 required
double latitude,
109 required
double longitude,
116 "lag": latitude.toString(),
117 "longitude": longitude.toString(),
119 "poStatus": poStatus,
123 url: ApiEndpoints.sendGeoLocation,
127 return response.isNotEmpty;
129 log(
'Error sending location to server: $e');
137 final prefs = await SharedPreferences.getInstance();
140 return statusJson != null;
142 log(
'Error checking check-in status: $e');
150 final prefs = await SharedPreferences.getInstance();
154 log(
'Error clearing check-in status: $e');
sealed class CheckInOutEvent extends Equatable userId
Future< Position?> _getCurrentLocation() async
Future< bool > isUserCheckedIn() async
Future< void > clearCheckInStatus() async
Future< bool > saveCheckInStatus({ required int vehicleId, required String immatriculation, required int driverId, }) async
static const String _checkInStatusKey
Future< bool > _sendLocationToServer({ required int driverId, required double latitude, required double longitude, int? poId, String? poStatus, }) async
final ApiClient _apiClient
Future< CheckInStatusModel?> getCheckInStatus({required int userId}) async
final ApiClient _apiClient