from __future__ import annotations

from rest_framework import serializers

from simorgh.core.api.serializers import PublicIdMixin


class ShiftDefinitionSerializer(serializers.ModelSerializer):
    class Meta:
        from simorgh.apps.hr_core.models import ShiftDefinition
        model = ShiftDefinition
        fields = (
            "id", "name", "start_time", "end_time",
            "work_days", "break_minutes", "expected_work_minutes",
        )
        read_only_fields = ("id", "expected_work_minutes")


class EmployeeShiftSerializer(serializers.ModelSerializer):
    shift = ShiftDefinitionSerializer(read_only=True)

    class Meta:
        from simorgh.apps.hr_core.models import EmployeeShift
        model = EmployeeShift
        fields = ("id", "employee_id", "shift", "effective_from", "effective_to")
        read_only_fields = ("id", "shift")


class AttendanceRecordSerializer(PublicIdMixin, serializers.ModelSerializer):
    class Meta:
        from simorgh.apps.hr_core.models import AttendanceRecord
        model = AttendanceRecord
        fields = (
            "id", "employee_id", "date", "check_in", "check_out",
            "work_minutes", "overtime_minutes", "source", "note", "is_finalized",
        )
        read_only_fields = ("id", "work_minutes", "overtime_minutes")
