from django.contrib import admin
from .models import Categoria, FornecedoresModels
from django.http import HttpResponse
import csv


@admin.register(Categoria)
class CategoriaAdmin(admin.ModelAdmin):
    list_display = ('nome', 'observacao')
    search_fields = ('nome',)
    ordering = ('nome',)


@admin.register(FornecedoresModels)
class FornecedoresAdmin(admin.ModelAdmin):
    list_display = (
        'nome_fantasia', 'razao_social', 'cnpj',
        'categoria', 'uf', 'cidade', 'telefone_celular'
    )
    list_filter = ('uf', 'cidade', 'categoria')
    search_fields = (
        'nome_fantasia', 'razao_social', 'cnpj',
        'nome_responsavel', 'contato_responsavel'
    )
    autocomplete_fields = ['categoria']
    ordering = ('nome_fantasia',)

    fieldsets = (
        ('Informações Gerais', {
            'fields': ('razao_social', 'nome_fantasia', 'categoria', 'cnpj', 'inscricao_estadual')
        }),
        ('Contato e Responsável', {
            'fields': (
                'nome_responsavel', 'contato_responsavel',
                'telefone_celular', 'telefone_residencial', 'email'
            )
        }),
        ('Endereço', {
            'fields': ('uf', 'cidade', 'bairro', 'endereco', 'complemento', 'cep')
        }),
    )

    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=fornecedores.csv'
        writer = csv.writer(response)
        writer.writerow([field.name for field in FornecedoresModels._meta.fields])
        for obj in queryset:
            writer.writerow([getattr(obj, field.name) for field in FornecedoresModels._meta.fields])
        return response
