from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.utils.html import format_html

from .models import (
    Control_center, User, Category, StreamerProfile, LiveStream, Clip,
    PastStream, Follow, Earning, Gifter,Crd_details
)


# =========================
# CUSTOM USER ADMIN
# =========================
@admin.register(User)
class CustomUserAdmin(UserAdmin):
    list_display = (
        'username', 'email', 'avatar_preview',
        'is_verified', 'is_creator',
        'is_staff', 'date_joined'
    )

    list_filter = (
        'is_verified',
        'is_creator',
        'is_staff',
        'is_active'
    )

    search_fields = ('username', 'email', 'bio')
    # readonly_fields = ('last_login')

    fieldsets = UserAdmin.fieldsets + (
        ('Profile Info', {
            'fields': (
                'avatar',
                'cover_image',
                'bio',
                'location',
                'website'
            )
        }),
        ('Creator Status', {
            'fields': (
                'is_verified',
                'is_creator'
            )
        }),
        ('Statistics', {
            'fields': (
                'followers_count',
                'following_count',
                'total_likes',
                'total_views'
            ),
            'classes': ('collapse',)
        }),
    )

    def avatar_preview(self, obj):
        if obj.avatar:
            return format_html(
                '<img src="{}" width="40" height="40" style="border-radius:50%;" />',
                obj.avatar
            )
        return "-"
    avatar_preview.short_description = "Avatar"


# =========================
# CATEGORY ADMIN
# =========================
@admin.register(Category)
class CategoryAdmin(admin.ModelAdmin):
    list_display = ('id', 'name', 'icon')
    search_fields = ('name',)


# =========================
# STREAMER PROFILE ADMIN
# =========================
@admin.register(StreamerProfile)
class StreamerProfileAdmin(admin.ModelAdmin):
    list_display = (
        'user',
        'category',
        'is_live',
        'viewers',
        'rank',
        'earnings'
    )

    list_filter = ('is_live', 'category')
    search_fields = ('user__username',)


# =========================
# LIVE STREAM ADMIN
# =========================
@admin.register(LiveStream)
class LiveStreamAdmin(admin.ModelAdmin):
    list_display = (
        'id',
        'title',
        'streamer',
        'viewers',
        'category',
        'is_live',
        'started_at'
    )

    list_filter = ('is_live', 'category')
    search_fields = ('title', 'streamer__username')
    # readonly_fields = ('started_at',)


# =========================
# CLIP ADMIN
# =========================
@admin.register(Clip)
class ClipAdmin(admin.ModelAdmin):
    list_display = (
        'id',
        'title',
        'streamer',
        'views',
        'duration',
        'created_at'
    )

    # readonly_fields = ('created_at',)


# =========================
# PAST STREAM ADMIN
# =========================
@admin.register(PastStream)
class PastStreamAdmin(admin.ModelAdmin):
    list_display = (
        'id',
        'title',
        'streamer',
        'revenue',
        'created_at'
    )


# =========================
# FOLLOW ADMIN
# =========================
@admin.register(Follow)
class FollowAdmin(admin.ModelAdmin):
    list_display = (
        'id',
        'follower',
        'following',
        'created_at'
    )


# =========================
# EARNING ADMIN
# =========================
@admin.register(Earning)
class EarningAdmin(admin.ModelAdmin):
    list_display = (
        'streamer',
        'total_earnings',
        'monthly_earnings',
        'subscriber_count'
    )
# @admin.register(Crd_details)


# =========================
# GIFTER ADMIN
# =========================
@admin.register(Gifter)
class GifterAdmin(admin.ModelAdmin):
    list_display = (
        'id',
        'name',
        'amount',
        'streamer'
    )



# =========================
# ADMIN BRANDING
# =========================
admin.site.site_header = "VELOR LIVE ADMIN"
admin.site.site_title = "VELOR LIVE"
admin.site.index_title = "Dashboard"



admin.site.register(Crd_details)
admin.site.register(Control_center)
