Bem-vindo ao teste para desenvolvimento back-end na enContact.
Criamos um pequeno projeto onde tentamos simular o que acontece no dia a dia. Um código onde você poderá encontrar pontos com bugs, necessidade de refatoração, problemas que podem gerar má performance etc. O projeto consiste em uma API simples para cadastro e consulta de contatos em uma agenda.
Neste teste você poderá mostrar suas habilidades em c# e dotnet, Orientação a objetos, lógica de programação, SQL, refatoração e também suas habilidades de debug para encontrar os problemas.
O foco deste teste é a garantia dos requisitos abaixo estejam funcionais na API:
- Criar, editar, excluir e listar agendas.
- Criar, editar, excluir e listar empresas.
- Importar contatos a partir de um arquivo .csv
- Fique a vontade para definir o leiaute do arquivo .csv
- Caso dê erro na importação de um registro, não deve impactar a importação dos demais.
- É obrigatório ter uma agenda vinculada ao contato.
- No arquivo, se for informada uma empresa ao contato, ela deve existir previamente no sistema. Caso não seja informado, o contato é registrado sem vinculo com a empresa.
- Pesquisar contatos
- Deve pesquisar em qualquer campo do contato (incluído o nome da empresa).
- O parâmetro de entrada deve ser apenas uma string (Semelhante a pesquisa do google onde tem apenas um campo texto)
- A pesquisa deve ser paginada (Fique a vontade para utilizar qualquer estratégia).
- Pesquisa de contatos da empresa (A partir de uma pesquisa pelo nome ou parte do nome, ou seja, a entrada é um texto)
- Deve retornar os contatos agrupados pela agenda. Exemplo do retorno:
Lista de
{
Id da agenda;
Nome da agenda;
Lista de contatos;
}
- Faça o fork do nosso repositório no Github.
- Clone do projeto.
- Faça as devidas alterações para atender aos requisitos.
- Caso seja necessário, enviar junto o arquivo "Database.db" que fica na raiz do projeto.
- Crie/Edite as APIs necessárias para atender os requisitos.
- Refatore o código da maneira que achar melhor.
- Fique a vontade para usar qualquer biblioteca externa, caso seja necessário.
Tem um tempinho a mais? Acha que pode fazer mais? Então aqui vai alguns desafios para seu projeto, que serve como um plus no seu teste!
- Seria uma boa se pontos críticos do código tivessem testes unitários.
- Adicionar autenticação na API seria interessante.
- Poder exportar a agenda completa também seria legal.