Skip to content

Kansetsu/ONG-API

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

74 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ONG-API 🕊️

Proposta 📝:

  • API com as funcionalidades do sistema de cadastro para uma ONG.
  • Interação com o banco de dados para cadastrar as informações dos acolhidos.
  • Resgate e busca de informações do banco de dados.
  • Entrega e tratamento dos dados guardados no banco.

Tecnologias 🌎:

  • Documentada com Swagger UI.
  • Utilizando Javascript no NodeJS.
  • Banco de dados MongoDB.
  • API REST com Express.
  • Testes unitários com Jest.

Sumário 📒:

Documentação 📃:

thumb

Instalem as dependências antes de iniciar a API.

npm install 

ou

npm i 

Obs.: O link de conexão com o banco de dados está registrado em um .env, então é necessária a criação do arquivo e adicionar a variável URL + o link de conexão com o banco de dados.

//exemplo de link de conexão:

URL="mongodb://localhost:0000/suaCollection"

//por padrão a URL de testes é: 

URL="mongodb://localhost:27017/ONG"

Após instalar as dependências, a documentação ficará visível na rota http://localhost:3333/ong/doc/ ao executar a API com o comando:

npm start 

Rotas 🌐:

Acolhidos 🏠

POST - Acolhidos🟩

Post-img

  • Recebe um json para inserção dos dados. Dentro da aplicação recebe um objeto javascript que é convertido automaticamente para json
  • Cadastra os acolhidos com as informações fornecidas. Por padrão o schema passado é:
 {
    nomeCompleto: { type: String, required: true },
    nomeDaMae: { type: String, required: true },
    nomeDoPai: { type: String },
    naturalidade: { type: String, required: true },
    nacionalidade: { type: String, required: true },
    idade: { type: Number, required: true },
    dataDeNascimento: { type: String, required: true },
    estadoCivil: { type: String, required: true },
    raca: { type: String, required: true },
    escolaridade: { type: String, required: true },
    profissao: { type: String, required: true },
    CPF: { type: String, required: true },
    sexo: { type: String, required: true },
    RG: { type: String, required: true },
    estadoEmissor: { type: String, required: true },
    dataDeEmissaoRG: { type: String, required: true },
    orgaoEmissor: { type: String, required: true },
    CEP: { type: String, required: true },
    endereco: { type: String, required: true },
    estado: { type: String, required: true },
    municipio: { type: String, required: true },
    bairro: { type: String, required: true },
    unidadeDeOrigem: { type: String, required: true },
    numeroDeInternacoes: { type: Number, required: true },
    contatosDeEmergencia: {
        numero1: { type: String, required: true },
        numero2: { type: String },
    },
    dataDeSaida: { type: String, required: true },
    matricula: { type: String, required: true },
    possuiFilhos: { type: Boolean, required: true },
    situacaoDeRua: { type: Boolean, required: true },
    tempoDeRua: { type: String, required: true },
    tempoDeDrogadicao: { type: String, required: true },
    tiposDeDrogas: { type: String, required: true },
    usaMedicamentos: { type: Boolean, required: true },
    doencasPrecisaCuidados: { type: Boolean, required: true },
    alergia: { type: Boolean, required: true },
    acompanhamentoPsiquiatrico: { type: Boolean, required: true },
    respondeProcesso: { type: Boolean, required: true },
    recebeBeneficio: { type: Boolean, required: true },
    religiao: { type: String, required: true },
    igrejaEvangelica: { type: Boolean, required: true },
    batizado: { type: Boolean, required: true },
    casaDeRecuperacao: { type: Boolean, required: true },
    jaFoiAcolhido: { type: Boolean, required: true },
    deficiencia: { type: Boolean, required: true },
    antecedentesCriminais: { type: Boolean, required: true },
    fazNasHorasVagas: { type: String },
    consideracoesDeAtendimento: { type: String},
 }

GET - Acolhidos🟦

Retorna todos os acolhidos cadastrados: http://localhost:3333/ong/todosOsAcolhidos

GetAll-img

  • Retorna todos os acolhidos que estiverem cadastrados no banco de dados. Retorna um json que é convertido para um objeto Javascript como no exemplo abaixo:
{
   nomeCompleto: "Quentin Tarantino",
   nomeDaMae: "Patrícia Amorim",
   nomeDoPai: "João Planaltina",
   naturalidade: "Brasileiro",
   nacionalidade: "Brasileiro",
   idade: 59,
   dataDeNascimento: "05-05-2022",
   estadoCivil: "Solteiro",
   raca: "Branco",
   escolaridade: "Superior Completo",
   profissao: "Diretor de Cinema",
   CPF: "123.456.789-10",
   sexo: "Masculino",
   RG: "12.345.678",
   estadoEmissor: "PE",
   dataDeEmissaoRG: "05-05-2022",
   orgaoEmissor: "SDS",
   CEP: "52091-240",
   endereco: "Rua Córrego do boleiro, 221",
   estado: "PE",
   municipio: "Recife",
   bairro: "Nova Descoberta",
   unidadeDeOrigem: "Recife Centro",
   numeroDeInternacoes: 0,
   contatosDeEmergencia: {
       numero1: "81 98342-6557",
       numero2: "81 98726-7365",
   },
   dataDeSaida: "06-05-2022",
   matricula: "02307485",
   possuiFilhos: false,
   situacaoDeRua: false,
   tempoDeRua: "1 ano",
   tempoDeDrogadicao: "1 ano",
   tiposDeDrogas: "Maconha",
   usaMedicamentos: false,
   doencasPrecisaCuidados: false,
   alergia: false,
   acompanhamentoPsiquiatrico: false,
   respondeProcesso: false,
   recebeBeneficio: false,
   religiao: "Protestantismo",
   igrejaEvangelica: false,
   batizado: false,
   casaDeRecuperacao: false,
   jaFoiAcolhido: false,
   deficiencia: false,
   antecedentesCriminais: false,
   fazNasHorasVagas: "",
   consideracoesDeAtendimento: "",
} 

Retorna um acolhido cadastrado, localizando ele por sua matrícula: http://localhost:3333/ong/acolhidosPorMatricula

  • O retorno é similar ao da rota anterior, porém retorna apenas o objeto que tiver a mesma matrícula solicitada. GetAcolhido-img

Retorna os acolhidos cadastrados, localizando eles pela sua unidade: http://localhost:3333/ong/acolhidosPorUnidade

  • Funciona como a rota anterior, alterando apenas o parâmetro utilizado para buscar os acolhidos. Essa rota retorna todos os que tiverem a unidade solicitada, não apenas um. GetUnidade-Img

DELETE - Acolhidos🟥

Delete-Img

  • Remove um acolhido do banco de dados, localizando ele com sua matrícula. Essa rota retorna um json com duas informações. Se o objeto foi reconhecido na busca, que retorna true para localizado e false para não localizado, e retorna também um contador informando se ele foi deletado ou não, sendo 0 para não deletado e 1 para deletado.
{
  "acknowledged": true,
  "deletedCount": 1
}

PUT - Acolhidos🟨

Atualizar informações do acolhido : http://localhost:3333/ong/atualizarAcolhido/:matricula

Update-Img

  • Atualiza as informações do acolhido. Localizando ele através de sua matrícula e passando os dados a serem atualizados. Similar ao cadastro, porém precisando localizar o acolhido.

Credenciais 🔑

POST - Credenciais🟩

Post-img

  • Recebe um json para inserção dos dados. Dentro da aplicação recebe um objeto javascript que é convertido automaticamente para json
  • A senha é convertida em um hash ao ser adicionada no banco de dados por questões de segurança. Também é adicionado um salt para ser feita a validação do usuário.
  • Cadastra a credencial com as informações fornecidas. Por padrão o schema passado é:
{
    nome: { type: String, required: true },
    sobrenome: { type: String },
    login: { type: String, required: true },
    counter: { type: String, required: true },
    nice: { type: String },
    usuario: { type: String, required: true },
}

Post-img

  • Recebe o login e a senha passada pelo usuário e faz a validação se está correto retornando { valido: true } caso a credencial esteja correta ou { valido: false } para incorreta.

GET - Credenciais🟦

Retorna todas as credenciais cadastradas: http://localhost:3333/ong/buscarTodosOsCadastros

GetAll-img

  • Retorna todos as credenciais que estiverem cadastrados no banco de dados. Retorna um json que é convertido para um objeto Javascript como no exemplo abaixo:
  {
    "_id": "6279aec91b46b81e0cc833bb",
    "nome": "Valentina",
    "sobrenome": "Silva",
    "login": "01304487",
    "counter": "4979189bf1bbd213811ada6a0a0200dd",
    "nice": "ea1be29bdad9c0c7f7b0ef799ef1e815",
    "admin": true,
    "__v": 0
  },
  {
    "_id": "6279b962ea03d60bb3c03858",
    "nome": "Jacinto",
    "sobrenome": "Aquino",
    "login": "01308679",
    "counter": "c3b113b616059b5bb466a0bbc251147f",
    "nice": "2d05f365c5544cfb74c22ed45e7ae4d4",
    "admin": true,
    "__v": 0
  }

Retorna uma credencial cadastrada, localizando-a por seu login: http://localhost:3333/ong/buscarCadastro

  • O retorno é similar ao da rota anterior, porém retorna apenas o objeto que tiver a mesma matrícula solicitada. GetAcolhido-img

DELETE - Credenciais🟥

Delete-Img

  • Remove uma credencial do banco de dados, localizando-a com seu login. Essa rota retorna um json com duas informações. Se o objeto foi reconhecido na busca, que retorna true para localizado e false para não localizado, e retorna também um contador informando se ele foi deletado ou não, sendo 0 para não deletado e 1 para deletado.
{
  "acknowledged": true,
  "deletedCount": 1
}

PUT - Credenciais🟨

Atualizar informações do acolhido : http://localhost:3333/ong/atualizarSenha/:login

Update-Img

  • Atualiza as informações de uma credencial. Localizando-a através de seu login e passando os dados a serem atualizados. Similar ao cadastro, porém precisando localizar a credencial.

Dados Médicos 🏥

POST - Médicos🟩

Cadastra os dados médicos do acolhido. : http://localhost:3333/ong/cadastrarDadosMedicos

Post-img

  • Recebe um json para inserção dos dados. Dentro da aplicação recebe um objeto javascript que é convertido automaticamente para json
  • Cadastra os dados médicos do acolhido com as informações fornecidas. Por padrão o schema passado é:
 {
    nome: { type: String, required: true },
    dataNascimento: { type: String, required: true },
    dataChegada: { type: String, required: true },
    dataAtendimento: { type: String, required: true },
    aspectosCognitivos: { type: String, required: true },
    opniaoSituacao: { type: String, required: true },
    consideraDependenteQuimico: { type: String, required: true },
    composicaoFamiliar: { type: String, required: true },
    relacoesParentais: { type: String, required: true },
    relacionamentoComFamilia: { type: String, required: true },
    reestabelecimentoFamiliar: { type: String, required: true },
    comoComecouNasDrogas: { type: String, required: true },
    informacoesAdicionais: { type: String, required: true },
    orientacoesPassadas: { type: Boolean, required: true },
    contatosDeEmergencia: {
        numero1: { type: String, required: true },
        numero2: { type: String },
    },
    evolucaoDoVinculo: { type: String, required: true },
    reitegracaoFamiliar: { type: String, required: true },
    antecedentesDependenciaQuimica: { type: Boolean, required: true },
    necessitaApoioJuridico: {
        necessita: { type: Boolean, required: true },
        especifique: { type: String },
    },
    rendaPropria: {
        possui: { type: Boolean, required: true },
        queTipo: { type: String },
    },
    expProfissional: { type: String, required: true },
    propostaDeRenda: { type: String, required: true },
    propostaDeMoradia: { type: String, required: true },
    objetivosDoAcolhido: { type: String, required: true },
    tipoDeSaida: { type: String, required: true },
 }

GET - Médicos🟦

Retorna os dados médicos de todos os acolhidos.: http://localhost:3333/ong/getTodosDadosMedicos

GetAll-img

  • Retorna os dados médicos de todos os acolhidos que estiverem cadastrados no banco de dados. Retorna um json que é convertido para um objeto Javascript como no exemplo abaixo:
{
  nome: "João",
  dataNascimento: "06-05-2022",
  dataChegada: "06-05-2022",
  dataAtendimento: "06-05-2022",
  aspectosCognitivos: "Info.",
  opniaoSituacao: "Info.",
  consideraDependenteQuimico: "Info.",
  composicaoFamiliar: "Info.",
  relacoesParentais: "Info.",
  relacionamentoComFamilia: "Info.",
  reestabelecimentoFamiliar: "Info.",
  comoComecouNasDrogas: "Info.",
  informacoesAdicionais: "Info.",
  orientacoesPassadas: false,
  contatosDeEmergencia: {
      numero1: "11111111",
      numero2: "11111111",
  },
  evolucaoDoVinculo: "Info.",
  reitegracaoFamiliar: "Info.",
  antecedentesDependenciaQuimica: false,
  necessitaApoioJuridico: {
      necessita: false,
      especifique: "",
  },
  rendaPropria: {
      possui: false,
      queTipo: "",
  },
  expProfissional: "Info.",
  propostaDeRenda: "Info.",
  propostaDeMoradia: "Info.",
  objetivosDoAcolhido: "Info.",
  tipoDeSaida: "Info.",
} 

Retorna os dados médicos de um acolhido, utilizando o nome e a data de nascimento para localiza-lo: http://localhost:3333/ong/getUmDadoMedico

  • O retorno é similar ao da rota anterior, porém retorna apenas o objeto que tiver o nome e a data de nascimento solicitada. GetDadoMedico-img

DELETE - Médicos🟥

Delete-Img

  • Remove os dados médicos de um acolhido do banco de dados, localizando ele pelo nome e data de nascimento. Essa rota retorna um json com duas informações. Se o objeto foi reconhecido na busca, que retorna true para localizado e false para não localizado, e retorna também um contador informando se ele foi deletado ou não, sendo 0 para não deletado e 1 para deletado.
{
  "acknowledged": true,
  "deletedCount": 1
}

PUT - Médicos🟨

Atualizar informações dos dados médicos de um acolhido : http://localhost:3333/ong/atualizarAcolhido/:matricula

Update-Img

  • Atualiza as informações dos dados médicos de de um acolhido. Localizando-o através de seu nome e data de nascimento, repassando os dados necessários. Similar ao cadastro, porém precisando localizar o acolhido e efetuando a atualização.

Suporte 🆘

Em casos de dúvidas ou sugestôes entrar em contato com o time exódia através do nosso email!

About

API com as funcionalidades do sistema de cadastro de uma ONG

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors