from django.contrib import admin
from .models import ProducaoMudas, PeriodoColeta, PorcentagemColeta
from django.http import HttpResponse
import csv


@admin.register(ProducaoMudas)
class ProducaoMudasAdmin(admin.ModelAdmin):
    list_display = (
        'especie', 'desenvolvimento_muda_viveiro',
        'numero_sementes_por_kg', 'nivel_sombreamento_muda_viveiro'
    )
    search_fields = ('especie__nome_popular', 'especie__especies')
    autocomplete_fields = ['especie']

    fieldsets = (
        ('Dados Gerais', {
            'fields': (
                'especie', 'beneficiamento_sementes', 'substrato_muda', 
                'desenvolvimento_muda_viveiro', 'numero_sementes_por_kg'
            )
        }),
        ('Informações Técnicas', {
            'fields': (
                'armazenamento', 'semeadura', 'nivel_sombreamento_muda_viveiro'
            )
        }),
    )

    actions = ['exportar_csv']

    @admin.action(description="Exportar para CSV")
    def exportar_csv(self, request, queryset):
        response = HttpResponse(content_type='text/csv')
        response['Content-Disposition'] = 'attachment; filename=producao_mudas.csv'
        writer = csv.writer(response)
        writer.writerow([field.name for field in ProducaoMudas._meta.fields])
        for obj in queryset:
            writer.writerow([getattr(obj, field.name) for field in ProducaoMudas._meta.fields])
        return response


@admin.register(PeriodoColeta)
class PeriodoColetaAdmin(admin.ModelAdmin):
    list_display = (
        'especie', 'bioma_nome', 'mes_inicio', 'mes_fim'
    )
    list_filter = ('bioma_nome', 'mes_inicio', 'mes_fim')
    search_fields = ('especie__nome_popular', 'bioma_nome')
    autocomplete_fields = ['especie']

    actions = ['exportar_csv']

    @admin.action(description="Exportar para CSV")
    def exportar_csv(self, request, queryset):
        response = HttpResponse(content_type='text/csv')
        response['Content-Disposition'] = 'attachment; filename=periodo_coleta.csv'
        writer = csv.writer(response)
        writer.writerow([field.name for field in PeriodoColeta._meta.fields])
        for obj in queryset:
            writer.writerow([getattr(obj, field.name) for field in PeriodoColeta._meta.fields])
        return response


@admin.register(PorcentagemColeta)
class PorcentagemColetaAdmin(admin.ModelAdmin):
    list_display = (
        'especie', 'valor_minimo', 'valor_maximo', 'descricao'
    )
    search_fields = ('especie__nome_popular', 'descricao')
    autocomplete_fields = ['especie']

    actions = ['exportar_csv']

    @admin.action(description="Exportar para CSV")
    def exportar_csv(self, request, queryset):
        response = HttpResponse(content_type='text/csv')
        response['Content-Disposition'] = 'attachment; filename=porcentagem_coleta.csv'
        writer = csv.writer(response)
        writer.writerow([field.name for field in PorcentagemColeta._meta.fields])
        for obj in queryset:
            writer.writerow([getattr(obj, field.name) for field in PorcentagemColeta._meta.fields])
        return response
