Skip to content

Latest commit

 

History

History
563 lines (432 loc) · 17.4 KB

README.md

File metadata and controls

563 lines (432 loc) · 17.4 KB

Contributors Stargazers Issues MIT License Status


CondoMinions

Projeto desenvolvido na Vivência em Time do TreinaDev 12.

Sumário
  1. Sobre o Projeto
  2. Instalação e Execução

Sobre o Projeto

CondoMinions consiste em um sistema que, integrado à aplicação PagueAluguel, pode ser utilizado por uma equipe administrativa e moradores para gerenciamento de imóveis e outras atividades dentro de um condomínio.

(voltar ao topo)

Tecnologias

Ruby RubyOnRails Bootstrap

(voltar ao topo)

Funcionalidades

🏆Usuários administrativos podem ser cadastrados no sistema e usuários proprietários e moradores podem ser convidados por e-mail a se registrar;

🏆Apenas usuários administrativos categorizados como super no momento da criação podem cadastrar outros usuários administrativos, cadastrar um condomínio com endereço e associar um usuário ou mais usuários administrativos àquele condomínio;

🏆Usuários administrativos regulares podem cadastrar torres, tipos de unidade, unidade de um condomínio, andares, áreas comuns e moradores;

🏆A fração ideal de cada unidade é gerada automaticamente com base no tamanho de cada uma e a quantidade de unidades em um condomínio;

🏆Tanto administradores quanto moradores podem ver a página de listatrophy e detalhes de condomínio. Tendo sua exibição alterada para cada tipo de usuário;

🏆Moradores podem fazer uma reserva de área comum a partir de um calendário de reservas, bem como cancelar essa reserva. Gerando ou cancelando cobrança de taxa de uso dessa reserva na aplicação PagueAluguel;

🏆Moradores podem consultar suas faturas e enviar comprovantes de pagamento que serão comunicados através da aplicação PagueAluguel;

🏆Administradores podem registrar entrada de visitantes no condomínio e visualizar uma lista com o histórico de visitas;

🏆Administradores podem criar avisos para serem mostrados em um mural na tela de detalhes de um condomínio.

(voltar ao topo)

Endpoints da API

Endpoint de Listagem de Condomínios

GET /api/v1/condos

Retorna todos os condomínios com o id, nome, cidade e estado de cada um.

Exemplo de resposta:

[
  {
    "id": 1,
    "name": "Condomínio Residencial Paineiras",
    "city": "Rio Branco",
    "state": "AC"
  },
  {
    "id": 2,
    "name": "Condomínio dos Rubinhos",
    "city": "Campo Formoso",
    "state": "BA"
  }
]

Endpoint de Detalhes de Condomínio

GET /api/v1/condos/{id}

Retorna os detalhes de um condomínio com o nome, cnpj, logradouro, número, bairro, cidade, estado e cep de cada um.

Retorna erro 404 caso não exista um condomínio cadastrado com esse id.

Exemplo de resposta:

{
  "name": "Condomínio Residencial Paineiras",
  "registration_number": "62.810.952/2718-22",
  "address": {
    "public_place": "Travessa João Edimar",
    "number": "29",
    "neighborhood": "João Eduardo II",
    "city": "Rio Branco",
    "state": "AC",
    "zip": "69911-520"
  }
}

Endpoint de detalhes de uma unidade

GET /api/v1/units/{id}

Retorna os detalhes de uma unidade especificada pelo id passado no endpoint, caso exista, senão retorna erro 404 e corpo de resposta nulo.

Exemplo de resposta:

{
  "id": 1,
  "area": "150.45",
  "floor": 1,
  "number": "11",
  "unit_type_id": 1,
  "condo_id": 1,
  "condo_name": "Residencial Paineiras",
  "tenant_id": 1,
  "owner_id": 1,
  "description": "Duplex com varanda",
  "tower_name": "Torre Sul"
}

Retorna 404 caso não exista um condomínio com o id informado

Retorna a lista de tipos de unidade registradas em um condomínio e os ids da unidades vinculadas a ele.

Retorna 404 caso não exista um condomínio com o id informado

Endpoint Listar Tipos de Unidade

GET /api/v1/condos/{id}/unit_types

Exemplo de resposta:

[
  {
    "id": 1,
    "description": "Apartamento grande",
    "metreage": "100.0",
    "fraction": "4.0",
    "unit_ids": [
      1,
      2,
      3,
      4,
      6,
      9
    ]
  },
  {
    "id": 2,
    "description": "Apartamento médio",
    "metreage": "70.2",
    "fraction": "2.5",
    "unit_ids": [
      5,
      7,
      8,
      10
    ]
  }
]

Endpoint Listar Unidades

GET /api/v1/condos/{id}/units

Retorna a lista de todas as unidades registradas em um condomínio, com o id de cada unidade, número do andar e identificação de unidade.

Retorna 404 caso não exista um condomínio com o id informado

Exemplo de resposta:

{
  "units": [
    {
      "id": 1,
      "floor": 1,
      "number": "11",
      "tower_name": "Torre Sul"
    },
    {
      "id": 2,
      "floor": 1,
      "number": "12",
      "tower_name": "Torre Sul"
    }
  ]
}

Endpoint de checar um CPF

/api/v1/check_owner?registration_number={CPF}

Retorna a confirmação se o CPF informado pertence a um usuário da aplicação CondoMinions, ainda retorna o perfil de usuário e o id de sua unidade

Possíveis respostas

Retorna 200 se existe um proprietário com o CPF informado na aplicação CondoMinions;
Retorna 404 se não existe um proprietário com o CPF informado na aplicação CondoMínios;
Retorna 412 se o CPF não for válido para consulta.
OBS: Esse Endpoint trata puramente da validação do CPF, o JSON retornado possui corpo vazio.

Endpoint de buscar moradia de um CPF

/api/v1/get_tenant_residence?registration_number={CPF}

Retorna os detalhes da unidade de residência de um morador de determinado CPF

Possíveis respostas

Retorna 404 se não existe um proprietário com o CPF informado na aplicação CondoMinions, ou se existe, mas não reside em nenhuma unidade;
Retorna 412 se o CPF não for válido para consulta.
Retorna 200 se o CPF é de um inquilino de alguma unidade e o seguinte JSON
{
  "resident": {
    "name": "resident.full_name", "tenant_id": "resident.id",
    "residence": {
      "id": "residence.id", 
      "area": "unit_type.metreage",
      "floor": "residence.floor.identifier",
      "number": "residence.short_identifier",
      "unit_type_id": "unit_type.id",
      "description": "unit_type.description",
      "condo_id": "condo.id",
      "condo_name": "condo.name",
      "owner_id": "residence.owner.id",
      "tower_name": "Torre Sul"
      }
  }
}

Endpoint de buscar lista de residências de um CPF

/api/v1/get_owner_properties?registration_number={cpf}

Retorna uma lista com os detalhes das unidades possuídas por um proprietário

Possíveis respostas

Retorna 404 se não existe um proprietário com o CPF informado na aplicação CondoMínios, ou se existe, mas não possui nenhuma unidade como propriedade;
Retorna 412 se o CPF não for válido para consulta.
Retorna 200 se o CPF é de um proprietário de alguma unidade e o seguinte JSON.
{
  "resident": {
    "name": "Cláudia Rodrigues Gomes",
    "owner_id": 1,
    "properties": [
      {
        "id": 1,
        "area": "150.45",
        "floor": 1,
        "number": "11",
        "unit_type_id": 1,
        "description": "Duplex com varanda",
        "condo_id": 1,
        "condo_name": "Residencial Paineiras",
        "tenant_id": 1,
        "tower_name": "Torre Sul"
      },
      {
        "id": 16,
        "area": "150.45",
        "floor": 4,
        "number": "43",
        "unit_type_id": 1,
        "description": "Duplex com varanda",
        "condo_id": 1,
        "condo_name": "Residencial Paineiras",
        "tenant_id": null,
        "tower_name": "Torre Sul"
      },
      {
        "id": 17,
        "area": "150.45",
        "floor": 5,
        "number": "51",
        "unit_type_id": 1,
        "description": "Duplex com varanda",
        "condo_id": 1,
        "condo_name": "Residencial Paineiras",
        "tenant_id": null,
        "tower_name": "Torre Sul"
      }
    ]
  }
}

(voltar ao topo)

Endpoint de Listagem de Áreas Comuns

GET /api/v1/condos/{id}/common_areas

Retorna todas as áreas comuns a partir do `id` do condomínio informado, com nome, descrição.

Exemplo de Resposta:

{
  "common_areas": [
    {
      "id": 1,
      "name": "Piscina",
      "description": "Para adultos e crianças"
    },
    {
      "id": 2,
      "name": "Salão de Festas",
      "description": "Salão para vários eventos"
    }
  ]
}

Caso não existam áreas comuns cadastradas para o condomínio informado retorna o `id` do condomínio e um array vazio.

Retorna erro `404` caso o condomínio informado não esteja cadastrado.

Endpoint de Detalhes de Área Comum

GET /api/v1/common_areas/{id}

Retorna os detalhes de uma área comum específica a partir do `id` da área comum, com nome, descrição, capacidade máxima e regras de uso.

Exemplo de Resposta:

{
  "name": "Piscina",
  "description": "Para adultos e crianças",
  "max_occupancy": 20,
  "rules": "Só pode ser usada até 22h",
  "condo_id": 1
}

Retorna erro `404` caso a área comum informada não esteja cadastrada para o condomínio informado.

Telas do sistema

Página de Dashboard do Condomínio

Página de DashBoard do Condomínio

Página de Agenda de Visitantes/Funcionários

Página de Agenda de Visitantes/Funcionários

Página de Listagem Completa de Visitantes/Funcionários

Página de Agenda de Visitantes/Funcionários

Instalação e Execução

Pré-Requisitos

Você vai precisar da versão 3.2.2 do Ruby, libvips e uma versão atual de NodeJS com Yarn instalado. Recomendamos sempre a instalação das versões LTS (Long Term Support).

Instalação do libvips com o apt-get:

sudo apt install libvips

Instalação do rails

gem install rails

Instalação do Projeto

No terminal, clone o projeto:

git clone https://github.com/TreinaDev/condominions.git

Entre na pasta do projeto:

cd condominions

Instale Bundle:

bundle install

Instale as dependências:

bin/setup

Para popular o banco de dados:

rails db:seed

Execução de Testes

Para rodar os testes, execute:

rake spec

Testando E-mails

Caso queria testar emails, você pode fazê-lo instalando a gem MailCatcher:

gem install mailcatcher

Para executar o MailCatcher:

mailcatcher

Agora você pode acessá-lo através da rota http://localhost:1080/

Execução da Aplicação

Para rodar a aplicação, execute:

bin/dev

Agora é possível acessar a aplicação a partir da rota http://localhost:3000/

Integração com o PagueAluguel: Essa aplicação foi construída para ser integrada com o PagueAluguel. Com ambas as aplicações rodando, você poderá utilizá-la com todas as suas funcionalidades!

(voltar ao topo)

Estrutura do Banco de Dados

Estrutura do banco de dados

(voltar ao topo)

Seeds de Usuários

Esses usuários são gerados nas seeds e você pode utilizá-los para testar a aplicação.

Administradores

Nome Completo E-mail Senha
Ednaldo Pereira [email protected] teste123
Adroaldo Silva Santos [email protected] teste123

Residentes

Nome Completo E-mail Senha
Marina Santos Oliveira [email protected] teste123
Rafael Souza Lima [email protected] teste123

(voltar ao topo)