"""
Admin configuration for AI models
"""
from django.contrib import admin
from unfold.admin import ModelAdmin
from igny8_core.admin.base import Igny8ModelAdmin
from igny8_core.ai.models import AITaskLog


from import_export.admin import ExportMixin
from import_export import resources


class AITaskLogResource(resources.ModelResource):
    """Resource class for exporting AI Task Logs"""
    class Meta:
        model = AITaskLog
        fields = ('id', 'function_name', 'account__name', 'status', 'phase',
                  'cost', 'tokens', 'duration', 'created_at')
        export_order = fields


@admin.register(AITaskLog)
class AITaskLogAdmin(ExportMixin, Igny8ModelAdmin):
    resource_class = AITaskLogResource
    """Admin interface for AI task logs"""
    list_display = [
        'function_name',
        'account',
        'status',
        'phase',
        'cost',
        'tokens',
        'duration',
        'created_at'
    ]
    list_filter = [
        'function_name',
        'status',
        'phase',
        'created_at'
    ]
    search_fields = [
        'function_name',
        'task_id',
        'message',
        'error'
    ]
    readonly_fields = [
        'task_id',
        'function_name',
        'account',
        'phase',
        'message',
        'status',
        'duration',
        'cost',
        'tokens',
        'request_steps',
        'response_steps',
        'error',
        'payload',
        'result',
        'created_at',
        'updated_at'
    ]
    actions = [
        'bulk_delete_old_logs',
        'bulk_mark_reviewed',
    ]
    
    def has_add_permission(self, request):
        """Logs are created automatically, no manual creation"""
        return False
    
    def has_change_permission(self, request, obj=None):
        """Logs are read-only"""
        return False
    
    def bulk_delete_old_logs(self, request, queryset):
        """Delete AI task logs older than 90 days"""
        from django.utils import timezone
        from datetime import timedelta
        
        cutoff_date = timezone.now() - timedelta(days=90)
        old_logs = queryset.filter(created_at__lt=cutoff_date)
        count = old_logs.count()
        old_logs.delete()
        self.message_user(request, f'{count} old AI task log(s) deleted (older than 90 days).', messages.SUCCESS)
    bulk_delete_old_logs.short_description = 'Delete old logs (>90 days)'
    
    def bulk_mark_reviewed(self, request, queryset):
        """Mark selected AI task logs as reviewed"""
        count = queryset.count()
        self.message_user(request, f'{count} AI task log(s) marked as reviewed.', messages.SUCCESS)
    bulk_mark_reviewed.short_description = 'Mark as reviewed'

