from django.contrib import admin
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
from .models import User, Event, TipBilet, Bilet, Comanda, ContorChitante, ContorComenzi, UserFile

# --- USER ---
class UserAdmin(BaseUserAdmin):
    fieldsets = BaseUserAdmin.fieldsets + (
        ("Rol utilizator", {"fields": ("role", "stripe_account_id", "cota_tva", "companie_email", "taxa_organizator", "procent_taxa")}),
    )
    add_fieldsets = BaseUserAdmin.add_fieldsets + (
        ("Rol utilizator", {"fields": ("role", "stripe_account_id", "cota_tva", "companie_email", "taxa_organizator", "procent_taxa")}),
    )
    list_display = ("username", "email", "first_name", "last_name", "role", "is_staff")


# --- TIP BILET INLINE (pentru Event) ---
class TipBiletInline(admin.TabularInline):
    model = TipBilet
    extra = 1


# --- EVENT ---
class EventAdmin(admin.ModelAdmin):
    list_display = ('id', 'nume', 'data', 'public', 'organizator')
    list_filter = ('public', 'data')
    search_fields = ('nume', 'descriere')
    inlines = [TipBiletInline]


# --- TIP BILET ---
class TipBiletAdmin(admin.ModelAdmin):
    list_display = ('nume', 'event', 'pret', 'nr_maxim', 'nr_vandute')
    list_filter = ('event',)
    search_fields = ('nume',)


# --- BILET ---
class BiletAdmin(admin.ModelAdmin):
    list_display = ('id', 'tip_bilet', 'nume_participant', 'email_participant', 'folosit')
    list_filter = ('folosit', 'tip_bilet')
    search_fields = ('nume_participant', 'email_participant', 'id')

"""
# --- CHITANTA INLINE PENTRU COMANDA ---
class ChitantaInline(admin.TabularInline):
    model = Chitanta
    extra = 0
    readonly_fields = ('numar',)  # poți lăsa doar numărul readonly
"""

# --- COMANDA ---
class ComandaAdmin(admin.ModelAdmin):
    list_display = ('nr_serie', 'id', 'nume', 'created_at')
    list_filter = ('nr_serie', 'id', 'created_at', 'eveniment__organizator')
    search_fields = ('nume', 'id')
    #inlines = [ChitantaInline]  # afișăm chitantele direct în interiorul comenzii


# --- CHITANTE ---
class ChitantaAdmin(admin.ModelAdmin):
    list_display = ('id', 'comanda', 'serie', 'numar', 'firma', 'cui', 'adresa', 'cont_bancar')
    list_filter = ('serie', 'firma')
    search_fields = ('comanda__nr_serie', 'firma', 'cui', 'numar')


# --- CONTOR CHITANTE ---
class ContorChitanteAdmin(admin.ModelAdmin):
    list_display = ("id", "numar_curent")  # aici corect cu "ultimul_nr"
    readonly_fields = ('id',)

# --- CONTOR Comenzi ---
class ContorComenziAdmin(admin.ModelAdmin):
    list_display = ("id", "ultimul_nr")
    readonly_fields = ('id',)

#DOCUMENTE
class UserFileAdmin(admin.ModelAdmin):
    list_display = ('file', 'user', 'folder', 'uploaded_at')
    list_filter = ('user', 'folder', 'uploaded_at')
    search_fields = ('file', 'user__email', 'folder')
    readonly_fields = ('uploaded_at',)

    fieldsets = (
        (None, {
            'fields': ('user', 'folder', 'file')
        }),
        ('Meta', {
            'fields': ('uploaded_at',),
        }),
    )

# --- REGISTER MODELE ---
admin.site.register(User, UserAdmin)
admin.site.register(Event, EventAdmin)
admin.site.register(TipBilet, TipBiletAdmin)
admin.site.register(Bilet, BiletAdmin)
admin.site.register(Comanda, ComandaAdmin)
#admin.site.register(Chitanta, ChitantaAdmin)
admin.site.register(ContorChitante, ContorChitanteAdmin)
admin.site.register(ContorComenzi, ContorComenziAdmin)
admin.site.register(UserFile, UserFileAdmin)
