from django.contrib import admin
from .models import FornecedoresInsumosModels
from django.http import HttpResponse
import csv


@admin.register(FornecedoresInsumosModels)
class FornecedoresInsumosAdmin(admin.ModelAdmin):
    list_display = (
        'nome_fantasia', 'razao_social', 'cnpj', 'cidade',
        'uf', 'telefone_celular', 'nome_responsavel'
    )
    list_filter = ('uf', 'cidade')
    search_fields = (
        'nome_fantasia', 'razao_social', 'cnpj',
        'cidade', 'nome_responsavel'
    )
    ordering = ('nome_fantasia',)

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

    actions = ['exportar_csv']

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