# portfolio/admin.py
from django.contrib import admin
from .models import Service, Skill, Project, Testimonial, Contact, About, SiteSettings

@admin.register(Service)
class ServiceAdmin(admin.ModelAdmin):
    list_display = ('title', 'order', 'is_active', 'created_at')
    list_filter = ('is_active', 'created_at')
    search_fields = ('title', 'description')
    list_editable = ('order', 'is_active')
    ordering = ('order',)


@admin.register(Skill)
class SkillAdmin(admin.ModelAdmin):
    list_display = ('name', 'percentage', 'category', 'order')
    list_filter = ('category',)
    search_fields = ('name',)
    list_editable = ('percentage', 'order')
    ordering = ('category', 'order')



from .models import Pricing

@admin.register(Pricing)
class PricingAdmin(admin.ModelAdmin):
    list_display = ('plan_name', 'price', 'duration', 'is_popular', 'is_active', 'order', 'created_at')
    list_filter = ('is_popular', 'is_active', 'created_at')
    search_fields = ('plan_name', 'description', 'features')
    list_editable = ('price', 'is_popular', 'is_active', 'order')
    ordering = ('order', 'price')
    fieldsets = (
        ('Basic Info', {
            'fields': ('plan_name', 'price', 'duration', 'description')
        }),
        ('Features', {
            'fields': ('features',),
            'description': "Enter one feature per line."
        }),
        ('Display Options', {
            'fields': ('is_popular', 'is_active', 'order')
        }),
        ('Timestamps', {
            'fields': ('created_at',),
            'classes': ('collapse',)
        }),
    )
    readonly_fields = ('created_at',)


@admin.register(Project)
class ProjectAdmin(admin.ModelAdmin):
    list_display = ('title', 'category', 'is_featured', 'order', 'created_at')
    list_filter = ('category', 'is_featured', 'created_at')
    search_fields = ('title', 'description', 'technologies')
    list_editable = ('is_featured', 'order')
    ordering = ('-is_featured', 'order', '-created_at')


@admin.register(Testimonial)
class TestimonialAdmin(admin.ModelAdmin):
    list_display = ('client_name', 'client_position', 'rating', 'is_active', 'order')
    list_filter = ('rating', 'is_active', 'created_at')
    search_fields = ('client_name', 'testimonial')
    list_editable = ('is_active', 'order')
    ordering = ('order', '-created_at')


@admin.register(Contact)
class ContactAdmin(admin.ModelAdmin):
    list_display = ('name', 'email', 'subject', 'is_read', 'created_at')
    list_filter = ('is_read', 'created_at')
    search_fields = ('name', 'email', 'subject', 'message')
    list_editable = ('is_read',)
    readonly_fields = ('created_at',)
    ordering = ('-created_at',)
    
    def has_add_permission(self, request):
        return False


@admin.register(About)
class AboutAdmin(admin.ModelAdmin):
    list_display = ('full_name', 'tagline', 'years_experience', 'updated_at')
    readonly_fields = ('updated_at',)
    
    def has_add_permission(self, request):
        # Only allow one About instance
        return not About.objects.exists()
    
    def has_delete_permission(self, request, obj=None):
        return False


@admin.register(SiteSettings)
class SiteSettingsAdmin(admin.ModelAdmin):
    list_display = ('site_name', 'email', 'phone')
    
    def has_add_permission(self, request):
        # Only allow one SiteSettings instance
        return not SiteSettings.objects.exists()
    
    def has_delete_permission(self, request, obj=None):
        return False


# Add these to your portfolio/admin.py

from .models import BlogCategory, BlogPost, BlogComment

@admin.register(BlogCategory)
class BlogCategoryAdmin(admin.ModelAdmin):
    list_display = ('name', 'slug', 'created_at')
    search_fields = ('name',)
    prepopulated_fields = {'slug': ('name',)}


@admin.register(BlogPost)
class BlogPostAdmin(admin.ModelAdmin):
    list_display = ('title', 'category', 'is_published', 'is_featured', 'views', 'published_date')
    list_filter = ('is_published', 'is_featured', 'category', 'created_at')
    search_fields = ('title', 'content', 'excerpt')
    list_editable = ('is_published', 'is_featured')
    prepopulated_fields = {'slug': ('title',)}
    readonly_fields = ('views', 'created_at', 'updated_at')
    
    fieldsets = (
        ('Basic Information', {
            'fields': ('title', 'slug', 'category', 'featured_image')
        }),
        ('Content', {
            'fields': ('excerpt', 'content', 'read_time')
        }),
        ('SEO', {
            'fields': ('meta_description', 'meta_keywords', 'tags'),
            'classes': ('collapse',)
        }),
        ('Publishing', {
            'fields': ('is_published', 'is_featured', 'published_date')
        }),
        ('Statistics', {
            'fields': ('views', 'created_at', 'updated_at'),
            'classes': ('collapse',)
        }),
    )


@admin.register(BlogComment)
class BlogCommentAdmin(admin.ModelAdmin):
    list_display = ('name', 'post', 'is_approved', 'created_at')
    list_filter = ('is_approved', 'created_at')
    search_fields = ('name', 'email', 'comment')
    list_editable = ('is_approved',)
    readonly_fields = ('created_at',)
    
    def has_add_permission(self, request):
        return False

# Customize admin site
admin.site.site_header = 'ChrisDev Admin'
admin.site.site_title = 'ChrisDev Portfolio'
admin.site.index_title = 'Welcome to ChrisDev Admin Panel'