from django import forms
from apps.producao.models import ProducaoMudas, PeriodoColeta, PorcentagemColeta
from django.core.exceptions import ValidationError

import locale
locale.setlocale(locale.LC_NUMERIC, 'pt_BR.UTF-8')

class ProducaoMudasForm(forms.ModelForm):
    class Meta:
        model = ProducaoMudas
        exclude = ['especie']  # Exclua o campo especie

    numero_sementes_por_kg = forms.IntegerField(
        required=True,  # O campo não é obrigatório
        widget=forms.NumberInput(
            attrs={'class': 'form-control'}),  # Estilo do campo
    )

    nivel_sombreamento_muda_viveiro = forms.DecimalField(
        required=False,
        widget=forms.NumberInput(
            attrs={
                "class": "form-control"
            }
        )
    )
    semeadura = forms.CharField(
        required=False,
        max_length=200,
        widget=forms.TextInput(
            attrs={
                "type": "text",
                "class": "form-control",
            }
        )
    )
    armazenamento = forms.CharField(
        required=False,
        max_length=200,
        widget=forms.TextInput(
            attrs={
                "type": "text",
                "class": "form-control",
            }
        )
    )
    desenvolvimento_muda_viveiro = forms.CharField(
        required=False,
        max_length=200,
        widget=forms.TextInput(
            attrs={
                "type": "text",
                "class": "form-control",
            }
        )
    )
    beneficiamento_sementes = forms.CharField(
        required=False,  # O campo não é obrigatório
        # Estilo do campo e número de linhas
        widget=forms.Textarea(attrs={'class': 'form-control', 'rows': 8}),
        max_length=800  # Máximo de caracteres permitidos
    )

    substrato_muda = forms.CharField(
        required=False,  # O campo não é obrigatório
        # Estilo do campo e número de linhas
        widget=forms.Textarea(attrs={'class': 'form-control', 'rows': 8}),
        max_length=800  # Máximo de caracteres permitidos
    )


class PeriodoColetaForm(forms.ModelForm):
    class Meta:
        model = PeriodoColeta
        exclude = ['especie']  # Exclua o campo especie

    PERIODOS_CHOICES = [
        ('', 'Selecione'),  # Opção "Selecione" desativada e selecionada
        ('Amazônia', 'Amazônia'),
        ('Caatinga', 'Caatinga'),
        ('Cerrado', 'Cerrado'),
        ('Mata Atlântica', 'Mata Atlântica'),
        ('Pampa', 'Pampa'),
        ('Pantanal', 'Pantanal'),
    ]

    MESES_CHOICES = [
        ('', 'Selecione'),  # Opção "Selecione" desativada e selecionada
        ('Janeiro', 'Janeiro'),
        ('Fevereiro', 'Fevereiro'),
        ('Março', 'Março'),
        ('Abril', 'Abril'),
        ('Maio', 'Maio'),
        ('Junho', 'Junho'),
        ('Julho', 'Julho'),
        ('Agosto', 'Agosto'),
        ('Setembro', 'Setembro'),
        ('Outubro', 'Outubro'),
        ('Novembro', 'Novembro'),
        ('Dezembro', 'Dezembro'),
    ]

    bioma_nome = forms.ChoiceField(
        required=False,
        choices=PERIODOS_CHOICES,
        widget=forms.Select(
            attrs={
                "class": "form-select",
                "id": "autoSizingSelect1",
                'style': 'width:100%',
            }
        ),
    )

    mes_inicio = forms.ChoiceField(
        required=False,
        choices=MESES_CHOICES,
        widget=forms.Select(
            attrs={
                "class": "form-select",
                "id": "autoSizingSelect2",
                'style': 'width:100%',
            }
        ),
    )

    mes_fim = forms.ChoiceField(
        required=False,
        choices=MESES_CHOICES,
        widget=forms.Select(
            attrs={
                "class": "form-select",
                "id": "autoSizingSelect3",
                'style': 'width:100%',
            }
        ),
    )


class PorcentagemColetaForm(forms.ModelForm):
    class Meta:
        model = PorcentagemColeta
        exclude = ['especie']

    DESGERMINACAO_CHOICES = [
        ('', 'Selecione'),  # Opção "Selecione" desativada e selecionada
        ('Ótimo', 'Ótimo'),
        ('Bom', 'Bom'),
        ('Regular', 'Regular'),
        ('Ruim', 'Ruim'),
    ]

    valor_minimo = forms.DecimalField(
        required=True,
        widget=forms.NumberInput(
            attrs={
                "class": "form-control"
            }
        )
    )
    valor_maximo = forms.DecimalField(
        required=True,
        widget=forms.NumberInput(
            attrs={
                "class": "form-control"
            }
        )
    )
    descricao = forms.ChoiceField(
        required=False,
        choices=DESGERMINACAO_CHOICES,
        widget=forms.Select(
            attrs={
                "class": "form-select",
                "id": "descricao",
            }
        ),
    )