Zoo Reporting System é uma aplicação JavaScript que tem como objetivo gerar relatórios de animais de um zoológico. Um banco de dados é simulado no arquivo data/zoo_data.js
, que é utilizado para execução das funções na pasta src/
. O arquivo src/index.js
é o arquivo principal da aplicação, onde são importadas e detalhadas as funções para execução.
Todas as funções são resumidamente descritas no arquivo src/index.js
. Caso queira mais detalhes sobre cada função, consulte a sessão de cada função a seguir.
Busca animais pelo seu ID. Retorna um array de animais referente aos IDs passados como parâmetro.
- Caso não encontre nenhum animal, retorna um array vazio.
- Se receber apenas um ID, retorna um array com apenas a espécie referente.
- Pode mais de um IDs como parâmetro, retorna um array comas espécies referentes.
import getSpeciesByIds from './src/getSpeciesByIds.js';
getSpeciesByIds(lionId, tigersId);
A partir do nome de uma espécie e uma idade mínima (em anos), retorna um valor booleano (true ou false) indicando se existe algum animal com idade inferior a idade mínima.
import getAnimalsOlderThan from './src/getAnimalsOlderThan.js';
getAnimalsOlderThan('otters', 7);
Busca funcionários pelo primeiro ou pelo último nome.
- Caso não encontre nenhum funcionário, retorna um objeto vazio.
import getEmployeeByName from './src/getEmployeeByName.js';
getEmployeeByName('Emery');
Essa função é dividida em duas outras funções:
- isManager: verifica se o funcionário é gerente ou não.
- getRelatedEmployees:
- Caso a pessoa seja gerente, retorna todos os funcionários em que ela é responsável.
- Caso a pessoa não seja gerente, retorna um erro informando que ela não é gerente.
import getRelatedEmployees from './src/getRelatedEmployees.js';
getRelatedEmployees(stephanieId);
Responsável por contabilizar a quantidade de cada espécie.
- Caso não receba nenhum parâmetro, retorna um objeto com a quantidade de cada espécie.
- Caso receba apenas um parâmetro espécie, retorna a quantidade de animais referente ao parâmetro.
- Caso receba o parâmetro espécie e sexo (macho ou fêmea), retorna a quantidade de animais referente a espécie e sexo.
- Os parâmetros devem ser passados como um objeto.
import countAnimals from './src/countAnimals.js';
countAnimals({ specie: 'penguins', sex: 'female' });
Calcula o valor da entrada para o zoológico com base na função countEntrants
- countEntrants: recebe um array de visitantes com objetos incluindo nome a idade e retorna um objeto com a contagem de crianças, adultos e idosos.
import calculateEntry from './src/calculateEntry.js';
const entrants = [
{ name: 'Lara Carvalho', age: 5 },
{ name: 'Frederico Moreira', age: 5 },
{ name: 'Pedro Henrique Carvalho', age: 5 },
{ name: 'Maria Costa', age: 18 },
{ name: 'Núbia Souza', age: 18 },
{ name: 'Carlos Nogueira', age: 50 },
];
calculateEntry(entrants);
Faz o mapeamento geográfico dos animais, podendo filtrá-los por ordem alfabética e sexo.
- Sem parâmetros, retorna um objeto com todos os animais categorizados por localização.
- Com a opção
includeNames: true
, retorna os nomes dos animais. - Com a opção
sorted: true
, retorna os animais ordenados por nome (só funciona com includeNames). - Possui filtro por sexo, com as opções
sex: male
esex: female
.
import getAnimalMap from './src/getAnimalMap.js';
getAnimalMap({ includeNames: true, sex: 'female', sorted: true });
Disponibiliza as informações de horários dos animais que pode ter acesso ao cronograma da semana, de um dia, ou de um animal específico.
- Sem parâmetros, retorna os horários para cada dia e quais animais disponíveis.
- Se um único dia for passado, retorna os horários e animais para o dia passado.
- Se o nome de um animal for passado, retorna os horários e animais para o animal passado.
import getSchedule from './src/getSchedule.js';
getSchedule('lions');
Busca informações do animal mais velho da primeira espécie gerenciada pelo funcionário passado como parâmetro (id).
import getOldestFromFirstSpecies from './src/getOldestFromFirstSpecies.js';
getOldestFromFirstSpecies(olaId);
Responsável por associar informações da cobertura das pessoas funcionárias.
- Caso não receba nenhum parâmetro, retorna um objeto com a cobertura de cada funcionário.
- Pode receber um objeto com a chave name ou id como parâmetro.
import getEmployeesCoverage from './src/getEmployeesCoverage.js';
getEmployeesCoverage({ id: stephanieId });
O projeto não necessita instalação para ser executado (Exceção do Node). A instalação só é necessária para o linter que é opcional. Caso seja do interesse do usuário, o linter pode ser instalado através do comando:
npm install
Todas as funções precisam ser importadas e chamadas dentro do arquivo principal, o arquivo index.js
, pode servir como base para a execução das funções, basta remover a estrutura de exemplo presente nele.
Para execução pode ser usado extensões como code runner, ou através do comando:
node "caminho do arquivo"
Este projeto foi desenvolvido utilizando o linter ESLint
seguindo as boas práticas definidas na Trybe.
- Para executar o linter, basta executar o comando:
npm run lint
Para executar as funções deste projeto, é necessário ter o Node instalado.
-
Este é um projeto de estudo desenvolvido durante minha formação na Trybe. 🚀
-
Este repositório está sendo monitorado pelo SonarCloud para avaliação de qualidade.
-
Quer saber mais sobre mim? Veja o meu LinkedIn.