Luciano Borges

Desenvolvedor Fullstack

Luciano Borges

Desenvolvedor Fullstack

Blog

TestAk – Arquivo de Texto para CSV

junho 1, 2020 Jobs, Tests

Este projeto é um teste de conversão de um arquivo de texto em uma planilha.

Pré-Requisitos

Para rodar este projeto deve-se utilizar os seguintes requisitos:

Componentes

Os componentes utilizados neste projeto são:

  • php 7.2
  • mysql 5.7

Instalação

Para instalar basta rodar o script install.sh, lembrando que é necessário ter todos os pré-requisitos instalados e configurados.

Este script basicamente irá criar o banco de dados (remove se existe) e inserir a tabela que será utilizada no projeto.

Execução

  • Para executar o primeiro passo proposto no teste basta executar o arquivo ‘lista-compras_csv.php’, este irá gerar o arquivo ‘compra-do-ano.csv’.
  • Para executar o segundo passo proposto no teste basta executar o arquivo ‘lista-compras_mysql.php’, este irá gravar os dados na tabela ‘test_akna’ (configurada no install.sh).

Escopo do Teste

A grande escola de ensino fundamental Hogwarts faz o controle das suas compras de alimentos manualmente. A lista de compras atualmente é escrita pelo cozinheiro Dobby (manualmente) em um caderno. Às as compras, Dobby reune todo o conteúdo dos papeis e os envia para a direção da escola analisar os gastos mensais e anuais.

Com o passar do tempo esse método ficou cansativo e caro, tendo em vista que é muito difícil você controlar uma quantidade tão grande de informações em um caderno e ainda por cima lembrar de realizar o envio manualmente para os diretores da escola.

Decidindo mudar esse fluxo e o trabalho manual desnecessário, a diretora da escola fez a contratação de um programador PHP para a automatização desse processo, mas em pequenos passos para testar a qualidade da mudança.

Passo 1 – Gerar Arquivo CSV

O programador terá um arquivo com as listas de alimentos criadas (lista-de-compras.php) com todos os dados preenchidos que retorna uma estrutura de Array.

Baseado nessa lista, ele criará outro script .php que faz a leitura do arquivo lista-de-compras.php, onde o resultado final será a geração de um arquivo .csv salvo na pasta com o nome compras-do-ano.csv.

O resultado final desse arquivo deve seguir a mesma estrututa do exemplo abaixo, levando em consideração os dados contidos na nossa lista de alimentos (lista-de-compras.php):

MêsCategoriaProdutoQuantidade
JaneiroAlimentosPão de forma10
JaneiroHigiene PessoalCreme dental50
JaneiroHigiene PessoalEscova de dente40
JaneiroLimpezaDesinfetante5
FevereiroHigiene PessoalCreme dental50
FevereiroHigiene PessoalSabonete líquido45
MarçoAlimentosOvos300

Para a geração desse csv o programador tem que seguir algumas regras, que são:

  • O arquivo criado tem que ser ordenador de acordo com a ordem natural dos meses:
    • Janeiro
    • Fevereiro
    • Março
    • (etc)
  • Respeitando a ordenação dos meses, o programador tem que salvar os produtos no arquivo ordenados pelas categorias:
    1. Alimentos
    2. Higiene Pessoal
    3. Limpeza
  • Respeitando as duas ordenações anteriores, o programador tem que salvar os produtos no arquivo ordenados da maior quantidade para a menor.
  • O(s) mes(es) com conteúdo vazio não devem estar presentes no csv.

Exemplo de ordenação:

MêsCategoriaProdutoQuantidade
JaneiroAlimentosPão de forma10
JaneiroAlimentosBiscoito5
JaneiroHigienePessoal Creme dental50
JaneiroHigienePessoal Escova de dente40
JaneiroLimpezaDesinfetante5
JaneiroLimpezaDetergente4
JaneiroLimpezaSabão em pó3
  • Algumas palavras no Array estão incorretas, antes de salvar no arquivo é necessário substitui-las:
Trocar de (palavra errada)Por (palavra correta)
Papel HignicoPapel Higiênico
BrocolisBrócolis
Chocolate ao leitChocolate ao leite
Sabao em poSabão em pó

Passo 2 – Salvar os dados no BD

Feito o primeiro teste, crie um outro script que consultará os dados do arquivo lista-de-compras.php e salvará esses mesmos dados no MySQL.

Crie uma estrutura relacional (nome do banco de dados, nome da(s) tabela(s), etc) da melhor forma que lhe convém.

Antes de salvar os dados no MySQL é necessário usar a mesma regra de substituição de palavras do primeiro teste.

Links

GitHub: https://github.com/lucianoob/proj-ak

Tags:

Deixe aqui seu comentário