from django import forms

from .models import Company


class CompanyFilterForm(forms.Form):
    q = forms.CharField(
        required=False,
        widget=forms.TextInput(attrs={'placeholder': 'Search company name or industry...'}),
    )
    location = forms.CharField(required=False)
    country = forms.CharField(required=False)
    province = forms.CharField(required=False)
    city = forms.CharField(required=False)
    company_type = forms.ChoiceField(required=False, choices=[('', 'All Company Types')] + list(Company.CompanyType.choices))
    hiring = forms.MultipleChoiceField(
        required=False,
        choices=[('yes', 'Currently Hiring'), ('no', 'Not Currently Hiring')],
        widget=forms.CheckboxSelectMultiple,
    )
    verified = forms.BooleanField(required=False)
    industry = forms.MultipleChoiceField(required=False, widget=forms.CheckboxSelectMultiple)
    company_size = forms.MultipleChoiceField(
        required=False,
        choices=Company.Size.choices,
        widget=forms.CheckboxSelectMultiple,
    )
    tier = forms.MultipleChoiceField(
        required=False,
        choices=Company.Tier.choices,
        widget=forms.CheckboxSelectMultiple,
    )
    sort = forms.ChoiceField(
        required=False,
        choices=[
            ('featured', 'Relevance'),
            ('jobs', 'Most Jobs'),
            ('name', 'Alphabetical'),
            ('newest', 'Newest'),
        ],
        initial='featured',
    )

    def __init__(self, *args, industry_choices=None, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['industry'].choices = industry_choices or []
