from geopy.geocoders import Nominatim
from rest_framework import serializers

from .models import GeoFencing


class GeoFencingSetupSerializer(serializers.ModelSerializer):
    class Meta:
        model = GeoFencing
        fields = "__all__"

    def validate(self, data):
        geolocator = Nominatim(user_agent="geo_checker")  # Use a unique user-agent
        try:
            latitude = data.get("latitude")
            longitude = data.get("longitude")
            location = geolocator.reverse((latitude, longitude), exactly_one=True)
            if not location:
                raise serializers.ValidationError("Invalid Location")
        except Exception as e:
            raise serializers.ValidationError(e)
        return data


class EmployeeLocationSerializer(serializers.ModelSerializer):
    class Meta:
        model = GeoFencing
        fields = ["latitude", "longitude"]
