{"id":22008928,"url":"https://github.com/adevecchi/teste-backend-php","last_synced_at":"2026-04-20T13:06:19.077Z","repository":{"id":130893048,"uuid":"370535832","full_name":"adevecchi/teste-backend-php","owner":"adevecchi","description":"Lê uma lista de dados (lista-de-compras.php) que retorna uma lista de alimentos preenchidos numa estrutura de Array. Processa a lista de alimentos ordenando, corrigindo, criando um arquivo csv e migrando para um banco de dados MySQL","archived":false,"fork":false,"pushed_at":"2021-05-25T02:04:54.000Z","size":7,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-23T07:30:04.454Z","etag":null,"topics":["csv","mysql","oop","php"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/adevecchi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-05-25T02:00:58.000Z","updated_at":"2021-05-25T02:09:02.000Z","dependencies_parsed_at":null,"dependency_job_id":"9ce46547-af96-44f7-a30b-bd5cea1d6189","html_url":"https://github.com/adevecchi/teste-backend-php","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/adevecchi/teste-backend-php","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adevecchi%2Fteste-backend-php","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adevecchi%2Fteste-backend-php/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adevecchi%2Fteste-backend-php/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adevecchi%2Fteste-backend-php/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/adevecchi","download_url":"https://codeload.github.com/adevecchi/teste-backend-php/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adevecchi%2Fteste-backend-php/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32048458,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-20T11:35:06.609Z","status":"ssl_error","status_checked_at":"2026-04-20T11:34:48.899Z","response_time":94,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["csv","mysql","oop","php"],"created_at":"2024-11-30T02:07:46.509Z","updated_at":"2026-04-20T13:06:19.072Z","avatar_url":"https://github.com/adevecchi.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Teste Backend - PHP\n\n## Requisitos\n\n1. Utilizar o aquivo \"lista-de-compras.php\" como estrutura de dados.\n2. O teste deve ser executável via linha de comando.\n3. O teste deve conter um arquivo .sql que crie o banco de dados e todas as tabelas necessárias.\n4. Deve utilizar a versão 7.2 do PHP.\n5. Deve utilizar a versão 5.5 do MySQL.\n6. Pode utilizar o framework Laravel ou fazer apenas com PHP puro.\n\n# O teste\n\nA grande escola de ensino fundamental Hogwarts faz o controle das\nsuas compras de alimentos manualmente. A lista de compras\natualmente é escrita pelo cozinheiro Dobby (manualmente) em um\ncaderno. Após as compras, Dobby reune todo o conteúdo do mês (os\npapeis) e os envia para a direção da escola analisar os gastos mensais\ne anuais.\n\nCom o passar do tempo esse método ficou cansativo e caro, tendo em\nvista que é muito difícil você controlar uma quantidade tão grande de\ninformações em um caderno e ainda por cima lembrar de realizar o\nenvio manualmente para os diretores da escola.\n\nDecidindo mudar esse fluxo e o trabalho manual desnecessário, a\ndiretora da escola fez a contratação de um **programador PHP para\na automatização desse processo**, mas em pequenos passos para\ntestar a qualidade da mudança.\n\n## Passo 1 - Gerar Arquivo CSV\n**O programador terá um arquivo com as listas de alimentos\ncriadas (lista-de-compras.php) com todos os dados\npreenchidos que retorna uma estrutura de Array.**\n\nBaseado nessa lista, ele criará outro script .php que **faz a leitura do\narquivo lista-de-compras.php, onde o resultado final será a\ngeração de um arquivo .csv** salvo na pasta com o nome **compras-do-ano.csv**.\n\nO resultado final desse arquivo deve seguir a mesma estrututa do\nexemplo abaixo (a tabela), levando em consideração os dados\ncontidos na nossa lista de alimentos (lista-de-compras.php):\n\n|Mês|Categoria|Produto|Quantidade|\n|-|-|-|-|\n|Janeiro|Alimentos|Pão de forma|10|\n|Janeiro|Higiene Pessoal|Creme dental|50|\n|Janeiro|Higiene Pessoal|Escova de dente |40|\n|Janeiro|Limpeza|Desinfetante|5|\n|Fevereiro|Higiene Pessoal|Creme dental|50|\n|Fevereiro|Higiene Pessoal|Sabonete líquido|45|\n|Março|Alimentos|Ovos|300|\n\nPara a geração desse csv o programador tem que seguir algumas\nregras, que são:\n\n* O arquivo criado tem que ser ordenador de acordo com a ordem\nnatural dos meses:\n    * Janeiro\n    * Fevereiro\n    * Março\n    * (etc)\n\n* Respeitando a ordenação dos meses, o programador tem que\nsalvar os produtos no arquivo ordenados pelas categorias:\n    1. Alimentos\n    2. Higiene Pessoal\n    3. Limpeza\n\n* Respeitando as duas ordenações anteriores, o programador tem\nque salvar os produtos no arquivo ordenados da maior quantidade para a menor.\n\n* O(s) mes(es) com conteúdo vazio não devem estar presentes no\ncsv.\n\nExemplo de ordenação:\n\n|Mês|Categoria|Produto|Quantidade|\n|-|-|-|-|\n|Janeiro|Alimentos|Pão de forma|10|\n|Janeiro|Alimentos|Biscoito |5|\n|Janeiro|Higiene|Pessoal Creme dental|50|\n|Janeiro|Higiene|Pessoal Escova de dente|40|\n|Janeiro|Limpeza|Desinfetante|5|\n|Janeiro|Limpeza|Detergente|4|\n|Janeiro|Limpeza|Sabão em pó|3|\n\n* Algumas palavras no Array estão incorretas, antes de salvar no\narquivo é necessário substitui-las:\n\n|Trocar de (palavra errada)|Por (palavra correta)|\n|-|-|\n|Papel Hignico|Papel Higiênico|\n|Brocolis|Brócolis|\n|Chocolate ao leit|Chocolate ao leite|\n|Sabao em po|Sabão em pó|\n\n## Passo 2 - Salvar os dados no BD\nFeito o primeiro teste, crie um outro script que consultará os\ndados do arquivo lista-de-compras.php e salvará esses\nmesmos dados no MySQL.\n\nCrie uma estrutura relacional (nome do banco de dados, nome da(s)\ntabela(s), etc) da melhor forma que lhe convém.\n\nAntes de salvar os dados no MySQL é necessário usar a mesma regra\nde substituição de palavras do primeiro teste.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadevecchi%2Fteste-backend-php","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fadevecchi%2Fteste-backend-php","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadevecchi%2Fteste-backend-php/lists"}