Skip to main content

RemedioController

Visão Geral:

'RemedioController' gerencia as operações de interface relacionadas aos objetos 'Remedio'. Esse controller é essencial para o módulo de gerenciamento de remédios, permitindo operações como cadastro, listagem, atualização, reativação, exclusão e inativação de remédios.

Dependências:

  • 'ServicesRemedio': Serviço de negócios que contém a lógica para manipulação dos dados de remédios. É injetado automaticamente pelo Spring.

  • DTOs ('DadosCadastroRemedio', 'DadosAtualizarRemedio', 'DadosDetalhamentoRemedio', 'DadosListagemRemedios'): Classes que definem os dados necessários para as diversas operações realizadas pelo controller.

Funcionalidades & Endpoints

1. Cadastrar Remédio

  • Endpoint: 'POST /remedios'
  • Descrição: Recebe dados de um novo remédio e solicita seu cadastro.
  • Parâmetros de Entrada: 'DadosCadastroRemedio'.
  • Resposta: Um objeto ResponseEntity indicando o sucesso ou falha na operação.

2. Listar Remédios

  • Endpoint: 'GET /remedios'
  • Descrição: Lista todos os remédios cadastrados, com opção de filtragem e paginação implementadas no serviço.
  • Resposta: Uma lista de 'DadosListagemRemedios'.

3. Atualizar Remédio

  • Endpoint: 'PUT /remedios'
  • Descrição: Atualiza dados de um remédio existente no sistema.
  • Parâmetros de Entrada: 'DadosAtualizarRemedio'.
  • Resposta: 'DadosDetalhamentoRemedio' com os dados atualizados.

4. Reativar Remédio

  • Endpoint: 'PUT /remedios/{id}'
  • Descrição: Reativa um remédio que estava previamente inativo.
  • Parâmetros de URL: 'id' - Identificador do remédio.
  • Resposta: ResponseEntity sem conteúdo, apenas status HTTP.

5. Excluir Remédio

  • Endpoint: 'DELETE /remedios/{id}'
  • Descrição: Exclui permanentemente um remédio do sistema.
    • Parâmetros de URL: 'id' - Identificador do remédio.
  • Resposta: ResponseEntity sem conteúdo, indicando a conclusão.

6. Inativar Remédio

  • Endpoint: 'DELETE /remedios/inativar/{id}'
  • Descrição: Inativa um remédio sem removê-lo da base de dados, marcando-o como inativo.
  • Parâmetros de URL: 'id' - Identificador do remédio.
  • Resposta: ResponseEntity sem conteúdo.

Segurança e Transações:

  • Todos os endpoints que alteram dados são protegidos com a anotação '@Transactional', assegurando que qualquer modificação no banco de dados seja consistente e revertida em caso de erro durante a transação.
  • A segurança dos endpoints deve ser garantida pelo Spring Security (não explicitamente mencionado no código fornecido) para verificar autenticações e autorizações.

Validação

  • As entradas dos métodos 'cadastrar' e 'atualizar' são validadas utilizando as anotações de Jakarta Bean Validation ('@Valid'), assegurando que os dados recebidos estejam conforme as regras de negócio estabelecidas nos DTOs.

Testes

  • É recomendável implementar testes unitários e de integração para cada um dos endpoints, assegurando que a lógica de negócios e as interações com o banco de dados funcionem como esperado sob diversas condições.

Exceções

  • Manipulação adequada de exceções deve ser implementada para lidar com casos de erro, como entradas inválidas ou falhas na execução das operações de banco de dados