from django.contrib import admin
from .models import Submission

@admin.register(Submission)
class SubmissionAdmin(admin.ModelAdmin):
    list_display  = ['title', 'full_name', 'submission_type', 'status', 'submitted_at']
    list_filter   = ['status', 'submission_type', 'category']
    readonly_fields = ['submitted_at', 'acknowledgement_sent']
    actions       = ['mark_accepted', 'mark_rejected', 'send_decision_email']

    def mark_accepted(self, request, queryset):
        queryset.update(status='accepted')
        
    def mark_rejected(self, request, queryset):
        queryset.update(status='rejected')

    def send_decision_email(self, request, queryset):
        from django.core.mail import send_mail
        from django.conf import settings
        sent_count = 0
        for sub in queryset:
            if sub.status == 'accepted':
                subject = f"[The Reverse Times] Your submission '{sub.title}' has been accepted!"
                msg = f"Dear {sub.full_name},\n\nWe are pleased to accept your submission. Our editorial team will be in touch shortly."
            elif sub.status == 'rejected':
                subject = f"[The Reverse Times] Update on your submission '{sub.title}'"
                msg = f"Dear {sub.full_name},\n\nThank you for your submission. Unfortunately, we cannot publish it at this time."
            else:
                continue
            send_mail(subject, msg, settings.DEFAULT_FROM_EMAIL, [sub.email], fail_silently=True)
            sent_count += 1
        self.message_user(request, f"Sent decision emails to {sent_count} authors.")
    send_decision_email.short_description = "Send decision email to selected"
