from .. import Provider as PersonProvider


class Provider(PersonProvider):
    formats_male = (
        '{{first_name_male}} {{last_name}}',
        '{{first_name_male}} {{last_name}}',
        '{{first_name_male}} {{last_name}}',
        '{{first_name_male}} {{last_name}}',
        '{{first_name_male}} {{last_name}}',
        '{{first_name_male}} {{last_name}}',
        '{{first_name_male}} {{last_name}}',
        '{{first_name_male}} {{prefix}} {{last_name}}',
        '{{first_name_male}} {{last_name}}-{{last_name}}',
    )

    formats_female = (
        '{{first_name_female}} {{last_name}}',
        '{{first_name_female}} {{last_name}}',
        '{{first_name_female}} {{last_name}}',
        '{{first_name_female}} {{last_name}}',
        '{{first_name_female}} {{last_name}}',
        '{{first_name_female}} {{last_name}}',
        '{{first_name_female}} {{last_name}}',
        '{{first_name_female}} {{prefix}} {{last_name}}',
        '{{first_name_female}} {{last_name}}-{{last_name}}',
        '{{first_name_female}}-{{first_name_female}} {{last_name}}',
    )

    formats = formats_male + formats_female

    first_names_male = (
        'Afonso', 'Alexandre', 'Álvaro', 'André', 'Ângelo', 'António', 'Artur',
        'Benjamim', 'Bernardo', 'Brian', 'Bruno', 'Bryan', 'Carlos',
        'Cláudio', 'Cristiano', 'César', 'Daniel', 'David', 'Denis',
        'Diego', 'Dinis', 'Diogo', 'Duarte', 'Edgar', 'Eduardo', 'Emanuel',
        'Enzo', 'Fernando', 'Filipe', 'Francisco', 'Frederico', 'Fábio',
        'Gabriel', 'Gaspar', 'Gil', 'Gonçalo', 'Guilherme', 'Gustavo',
        'Henrique', 'Hugo', 'Igor', 'Isaac', 'Ismael', 'Ivan', 'Ivo', 'Jaime',
        'Joaquim', 'Joel', 'Jorge', 'José', 'João', 'Kevin', 'Kévim',
        'Leandro', 'Leonardo', 'Lisandro', 'Lourenço', 'Luca', 'Lucas',
        'Luís', 'Manuel', 'Marco', 'Marcos', 'Martim', 'Mateus',
        'Matias', 'Mauro', 'Micael', 'Miguel', 'Márcio', 'Mário',
        'Nelson', 'Noa', 'Noah', 'Nuno', 'Paulo', 'Pedro', 'Rafael',
        'Renato', 'Ricardo', 'Rodrigo', 'Rui', 'Rúben', 'Salvador',
        'Samuel', 'Sandro', 'Santiago', 'Sebastião', 'Simão', 'Sérgio', 'Tiago',
        'Tomás', 'Tomé', 'Valentim', 'Vasco', 'Vicente', 'Vítor', 'William',
        'Wilson', 'Xavier',
    )

    first_names_female = (
        'Adriana', 'Alexandra', 'Alice', 'Alícia', 'Amélia', 'Ana', 'Andreia',
        'Ângela', 'Anita', 'Ariana', 'Beatriz', 'Benedita', 'Bianca', 'Bruna',
        'Bárbara', 'Caetana', 'Camila', 'Carlota', 'Carminho', 'Carolina',
        'Catarina', 'Clara', 'Constança', 'Daniela', 'Diana', 'Débora', 'Eduarda',
        'Ema', 'Emma', 'Emília', 'Erica', 'Érica', 'Erika', 'Eva', 'Fabiana',
        'Filipa', 'Flor', 'Francisca', 'Gabriela', 'Helena', 'Iara', 'Inês',
        'Irina', 'Íris', 'Isabel', 'Isabela', 'Joana', 'Juliana', 'Jéssica',
        'Júlia', 'Kelly', 'Kyara', 'Lara', 'Larissa', 'Laura', 'Leonor', 'Letícia',
        'Lia', 'Lorena', 'Luana', 'Luciana', 'Luna', 'Luísa', 'Lúcia', 'Madalena',
        'Mafalda', 'Mara', 'Margarida', 'Maria', 'Mariana', 'Marta', 'Matilde',
        'Melissa', 'Mia', 'Miriam', 'Mélanie', 'Naiara', 'Nair', 'Nicole', 'Nádia',
        'Núria', 'Patrícia', 'Petra', 'Pilar', 'Rafaela', 'Raquel', 'Renata',
        'Rita', 'Salomé', 'Sara', 'Sofia', 'Soraia', 'Tatiana', 'Teresa',
        'Valentina', 'Vera', 'Victória', 'Violeta', 'Vitória', 'Yara', 'Yasmin',
    )

    first_names = first_names_male + first_names_female

    last_names = (
        'Abreu', 'Almeida', 'Alves', 'Amaral', 'Amorim', 'Andrade', 'Anjos',
        'Antunes', 'Araújo', 'Assunção', 'Azevedo', 'Baptista', 'Barbosa',
        'Barros', 'Batista', 'Borges', 'Branco', 'Brito', 'Campos', 'Cardoso',
        'Carneiro', 'Carvalho', 'Castro', 'Coelho', 'Correia', 'Costa', 'Cruz',
        'Cunha', 'Domingues', 'Esteves', 'Faria', 'Fernandes', 'Ferreira',
        'Figueiredo', 'Fonseca', 'Freitas', 'Garcia', 'Gaspar', 'Gomes',
        'Gonçalves', 'Guerreiro', 'Henriques', 'Jesus', 'Leal', 'Leite', 'Lima',
        'Lopes', 'Loureiro', 'Lourenço', 'Macedo', 'Machado', 'Magalhães',
        'Maia', 'Marques', 'Martins', 'Matias', 'Matos', 'Melo', 'Mendes',
        'Miranda', 'Monteiro', 'Morais', 'Moreira', 'Mota', 'Moura',
        'Nascimento', 'Neto', 'Neves', 'Nogueira', 'Nunes', 'Oliveira',
        'Pacheco', 'Paiva', 'Pereira', 'Pinheiro', 'Pinho', 'Pinto', 'Pires',
        'Ramos', 'Reis', 'Ribeiro', 'Rocha', 'Rodrigues', 'Santos', 'Silva',
        'Simões', 'Soares', 'Sousa', 'Sá', 'Tavares', 'Teixeira', 'Torres',
        'Valente', 'Vaz', 'Vicente', 'Vieira',
    )

    prefixes = ('de', 'da', 'do')

    def prefix(self):
        return self.random_element(self.prefixes)
