from rest_framework import serializers

from shop_management.models.data.notification import OperationalAlert


class OperationalAlertSerializer(serializers.ModelSerializer):
    branch_name = serializers.ReadOnlyField(source="shop.name")
    alert_type_display = serializers.CharField(source="get_alert_type_display", read_only=True)

    class Meta:
        model = OperationalAlert
        fields = "__all__"
        read_only_fields = [
            "recipient", "shop", "alert_type", "severity", "title", "message",
            "target_model", "target_object_id", "target_path", "fingerprint", "extra",
            "is_active", "first_detected_at", "last_detected_at", "resolved_at",
        ]

    def update(self, instance, validated_data):
        instance.is_read = bool(validated_data.get("is_read", instance.is_read))
        instance.save(update_fields=["is_read"])
        return instance
