Giter Site home page Giter Site logo

helpr-jfs5's People

Contributors

f-gabriel-braga avatar jose-almir avatar

Stargazers

 avatar  avatar

Watchers

 avatar

helpr-jfs5's Issues

|BACK-END| Criar DTO de FuturoCliente

O DTO possui as mesmas propriedades da entidade com algumas validações:

  • Nome (não-nulo) (máximo de 120 caracteres);
  • Telefone (não-nulo);
  • Email (formato válido) (não-vazio);
  • CPF (formato válido) (não-vazio).

|BACK-END| Refatoração do método atualizar chamado

Há um problema com o método atualizar chamado, quando tentamos atualizar o status para RECEBIDO não deveríamos ser obrigados a passar o id de um funcionário, apenas quando o status for ATRIBUIDO/CONCLUIDO. Refatore o método de tal forma que esta inconsistência não ocorra mais.

|BACK-END| Criar entidade de FuturoCandidato e Repository

Um futuro candidato não é um usuário da aplicação, mas sim representa as solicitações públicas para fazer parte do time do HELPR.

A entidade possui as seguintes informações:

  • Nome completo;
  • Email (não-único);
  • Descrição das habilidades;
  • Setor (Marketing, Manutenção, Recursos Humanos, Desenvolvimento ou Sustentação).

O Repository precisa ter os seguintes filtros:

  • Filtrar por email;
  • Buscar pelo nome (containing);
  • Filtrar pelo setor.

|BACK-END| Criar controler de FuturoCliente

O controller deve expôr os seguintes endpoints para futuro cliente:

  • /futuros-clientes (GET): Listar todos
  • /futuros-clientes/email (GET): Filtrar por email, usar RequestParam
  • /futuros-clientes/cpf (GET): Filtrar por nome, usar RequestParam
  • /futuros-clientes (POST): Adicionar futuro cliente (método público sem login)
  • /futuros-clientes (DELETE): Deletar futuro cliente

|BACK-END| Gerenciamento do erro: DataIntegrityException

Com base nas implementações de #40, gerenciar o erro de DataIntegrityException que ocorre quando tentamos apagar dados com relacionamentos como por exemplo um cargo de um funcionário da aplicação. A resposta no Postman deve ser:

{
    "message": "Não foi possível continuar operação",
    "status": 409,
    "timestamp": "2022-11-25T15:47:19.4079384",
    "path": "/cargos/1"
}

Dica: Testar apagar algum cargo ou funcionário com chamados.

Referências:
Códigos HTTP
Implementações da task 40

|BACK-END| Configurar banco de dados de teste H2

  1. Criar um perfil de teste, exemplo: application-test.properties;
  2. Adicione as seguintes propriedades:
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.username=sa
spring.datasource.password=
spring.datasource.driver-class-name=org.h2.Driver
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
  1. Instale as dependências para o H2 no pom.xml:
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <scope>runtime</scope>
</dependency>
  1. Crie um novo TestConfig, e com base no DevConfig popule o banco de dados H2 automaticamente (ignorar o ddl auto).
  2. Para garantir que está funcionando nos conformes, mude o valor de spring.profiles.active=test para verificar se o H2 está funcionando normalmente. Voltar para o ambiente dev padrão após a verificação.

|BACK-END| Criar serviço de Usuario

O serviço de usuário deve expôr as seguintes operações:

  • Filtrar por email;
  • Filtrar por cpf;
  • Filtrar por nome (containing);
  • Retornar o perfil do usuário com base no email;

|BACK-END| Criar controller de Usuario

O controller deve expôr os seguintes endpoints:

  • /usuarios/{email} (GET): Listar o usuário com o email indicado no Path Variable;
  • /usuarios/{cpf} (GET): Listar o usuário com o cpf indicado no Path Variable;
  • /usuarios/busca (GET): Listar os usuários com o termo de busca indicado no Request Param;
  • /usuarios/{id}/perfil (GET): Listar o perfil (enum) do usuário com base no id indicado.

|BACK-END| Criar entidade de FuturoCliente e Repository

Um futuro cliente é uma pessoa que possui interesse em contratar os serviços da equipe do HELPR. A solicitação de futuro cliente é pública mesmo para usuários não logados.

A entidade possui as seguintes propriedades:

  • Nome;
  • Telefone;
  • Email;
  • CPF.

O Repository precisa ter os seguintes filtros:

  • Filtrar por email;
  • Filtrar por cpf.

|BACK-END| Criar serviço de FuturoCliente

O serviço de futuro cliente deve expôr as seguintes operações:

  • Listar todos os futuros clientes;
  • Listar um futuro cliente;
  • Filtrar por cpf;
  • Filtrar por email;
  • Salvar futuro cliente;
  • Deletar futuro cliente;

|BACK-END| Criar DTO de FuturoCandidato

O DTO de FuturoCandidato possui as mesmas propriedades:

  • Nome completo (não-vazio);
  • Email (não-nulo);
  • Descrição das habilidades (não-nulo) (máximo de 120 caracteres);
  • Setor (Marketing, Manutenção, Recursos Humanos, Desenvolvimento ou Sustentação) (não-nulo).

|BACK-END| Criar serviço de FuturoCandidato

O serviço de colaborador deve expôr as seguintes operações:

  • Listar todos os colaboradores;
  • Listar um colaborador;
  • Filtrar por nome;
  • Filtrar por setor;
  • Filtrar por email;
  • Salvar colaborador;
  • Deletar colaborador;

|BACK-END| Limite de chamados atribuídos ao Funcionário

Há um limite de chamados atribuídos (não concluídos) que um funcionário pode receber por vez, este limite deve ser um atributo inteiro estático de ChamadoService. Sempre antes de atribuir um chamado a um funcionário, verificar quantos chamados atribuídos ele possui, caso já esteja no limite, a operação não poderá continuar.

Obs: Esta task deverá gerar um erro customizado, portanto crie-o e gerencie na classe ResourceExceptionHandler.

|BACK-END| Coluna de limite de funcionários na entidade Cargo

Adicionar uma nova coluna na entidade de Cargo conforme o código SQL abaixo:

limiteFuncionarios INTEGER NOT NULL DEFAULT 1

Sempre antes de adicionar um novo funcionário, checar quantos funcionários ocupam o cargo escolhido e se este já está no limite. Caso esteja no limite um erro deverá ser lançado.

Obs 1: Ao adicionar uma nova coluna na entidade, atualizar o construtor e colocar get/set para o campo.
Obs 2: O erro lançado deverá ser customizado e gerenciado no ResourceExceptionHandler.

Referências:
Attributes of @Column
Como usar countBy (Inglês)

|BACK-END| Listar chamados do usuário logado com JWT

Para realizar essa filtragem e saber qual é o usuário logado devemos usar o objeto Principal que podemos ver seu uso neste artigo. Para tal use os filtros necessários para listar apenas os chamados do cliente em particular. Esta funcionalidade deve funcionar para cliente e funcionário.

Observação 1: Esta funcionalidade precisa estar presente no UsuarioService e UsuarioController;
Observação 2: Sugerimos usar um endpoint como /usuarios/clientes/logado/chamados e /usuarios/funcionarios/logado/chamados.

|BACK-END| Novo status de ARQUIVADO em Chamados

  1. Adicionar ao enum de StatusChamado a constante ARQUIVADO. Esse status indica que o chamado está num estado de "Apagado do sistema", porém ele não será apagado de verdade.

  2. Em seguida, verifique como o método de atualizar chamado irá se comportar com a adição desta nova opção, faça as alterações necessárias (ao arquivar um chamado não altera os dados já presentes no chamado).

|BACK-END| Refatoração dos métodos de leitura das entidades

Com base no método getChamado de #14, refatore os outros métodos em CargoService, ClienteService e FuncionarioService:

public Chamado getChamado(Integer idChamado) {
    // Caso não encontre o chamado, lança a exceção.
    return this.chamadoRepository.findById(idChamado)
            .orElseThrow(() -> new RecursoNaoEncontradoError("Chamado não encontrado"));
}

|BACK-END| Criar controller de FuturoCandidato

O controller deve expôr os seguintes endpoints para futuro candidato:

  • /candidatos (GET): Listar todos
  • /candidatos/{setor} (GET): Filtrar por setor, usar RequestParam
  • /candidatos/email (GET): Filtrar por email, usar RequestParam
  • /ccandidatos/nome (GET): Filtrar por nome, usar RequestParam
  • /candidatos (POST): Adicionar colaborador (método público sem login)
  • /candidatos (DELETE): Deletar colaborador

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.