From 045234c2cac34829d9f0ea52453a175a57c2de54 Mon Sep 17 00:00:00 2001 From: Davi Aliaga Date: Sun, 20 Sep 2026 02:39:33 -0300 Subject: [PATCH 01/16] fix/common: atualiza endpoint de auth filter e converte uniqueviolationexception para 409 --- .gitignore | 3 ++- .../br/com/acta/common/config/firebase/FirebaseAuthFilter.java | 2 +- .../br/com/acta/common/handler/GlobalExceptionHandler.java | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 5c262bc..c463c6a 100644 --- a/.gitignore +++ b/.gitignore @@ -38,4 +38,5 @@ src/main/resources/http desktop.ini Desktop.ini -src/main/resources/firebase/ \ No newline at end of file +src/main/resources/firebase/ +skills/ \ No newline at end of file diff --git a/src/main/java/br/com/acta/common/config/firebase/FirebaseAuthFilter.java b/src/main/java/br/com/acta/common/config/firebase/FirebaseAuthFilter.java index 785a757..0db1406 100644 --- a/src/main/java/br/com/acta/common/config/firebase/FirebaseAuthFilter.java +++ b/src/main/java/br/com/acta/common/config/firebase/FirebaseAuthFilter.java @@ -25,7 +25,7 @@ @RequiredArgsConstructor public class FirebaseAuthFilter extends OncePerRequestFilter { - private static final String AUTH = "/auth/ativar"; + private static final String AUTH = "/api/v1/auth/ativar"; private final FirebaseUtils utils; private final ObjectMapper mapper; diff --git a/src/main/java/br/com/acta/common/handler/GlobalExceptionHandler.java b/src/main/java/br/com/acta/common/handler/GlobalExceptionHandler.java index f01566c..6d3308a 100644 --- a/src/main/java/br/com/acta/common/handler/GlobalExceptionHandler.java +++ b/src/main/java/br/com/acta/common/handler/GlobalExceptionHandler.java @@ -123,7 +123,7 @@ public ResponseEntity handleNumberParseException(){ @ExceptionHandler(UniqueViolationException.class) public ResponseEntity handleUniqueViolation(UniqueViolationException uv){ - return ResponseEntity.status(HttpStatus.BAD_REQUEST) + return ResponseEntity.status(HttpStatus.CONFLICT) .body(new ErroResponse(List.of(uv.getMessage()), 409)); } From 8dd2f73b0053f09158451088f05fc8ded4330ebc Mon Sep 17 00:00:00 2001 From: Davi Aliaga Date: Sun, 20 Sep 2026 02:40:29 -0300 Subject: [PATCH 02/16] =?UTF-8?q?fix/ciclo:=20atualiza=20valida=C3=A7?= =?UTF-8?q?=C3=B5es=20para=20mesmo=20ciclo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/br/com/acta/service/TarefaService.java | 4 ++-- .../java/br/com/acta/service/VerificacaoResultadoService.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/br/com/acta/service/TarefaService.java b/src/main/java/br/com/acta/service/TarefaService.java index 40f61d1..aa60dc6 100644 --- a/src/main/java/br/com/acta/service/TarefaService.java +++ b/src/main/java/br/com/acta/service/TarefaService.java @@ -84,7 +84,7 @@ public TarefaResponseDTO inserir(Long idPlanoAcao, TarefaRequestDTO dto) { Tarefa tarefa = mapper.toEntity(dto); PlanoAcao planoAcao = planoAcaoService.getEntity(idPlanoAcao); Usuario usuario = usuarioService.getEntity(dto.idResponsavel()); - Validador.validarCicloAberto(planoAcao.getCiclo()); + Validador.validarMesmoCiclo(planoAcao.getCiclo(), usuario.getCiclos()); if (!Set.of(StatusPlanoAcao.APROVADO, StatusPlanoAcao.EM_EXECUCAO).contains(planoAcao.getStatus())){ throw new InvalidResourceStatusException("Plano de Ação", List.of(StatusPlanoAcao.APROVADO.toString(), StatusPlanoAcao.EM_EXECUCAO.toString())); @@ -252,4 +252,4 @@ private boolean criaDependenciaCircular(Tarefa tarefa, Tarefa dependente) { return false; } -} +} \ No newline at end of file diff --git a/src/main/java/br/com/acta/service/VerificacaoResultadoService.java b/src/main/java/br/com/acta/service/VerificacaoResultadoService.java index da8ac17..ebbed47 100644 --- a/src/main/java/br/com/acta/service/VerificacaoResultadoService.java +++ b/src/main/java/br/com/acta/service/VerificacaoResultadoService.java @@ -74,7 +74,7 @@ public VerificacaoResultadoResponseDTO inserir(Long idCiclo, VerificacaoResultad configurarUsuarioAtual(); Ciclo ciclo = cicloService.getEntity(idCiclo); Usuario usuario = usuarioService.getEntity(idCriadoPor); - Validador.validarCicloAberto(ciclo); + Validador.validarMesmoCiclo(ciclo, usuario.getCiclos()); if (ciclo.getStatus() != StatusCiclo.VERIFICACAO) { throw new InvalidResourceStatusException("inserir", "Verificação de Resultado", StatusCiclo.VERIFICACAO.toString(), "Ciclo"); @@ -113,4 +113,4 @@ public VerificacaoResultado getEntity(Long id) { return repo.findByIdAndCicloEmpresaId(id, atual().idEmpresa()) .orElseThrow(() -> new ModelNotFoundException("Verificação de Resultado", id)); } -} +} \ No newline at end of file From 16a80e3a39a1e428889e137254f1d5b3ec11bbaa Mon Sep 17 00:00:00 2001 From: Davi Aliaga Date: Sun, 20 Sep 2026 02:41:07 -0300 Subject: [PATCH 03/16] =?UTF-8?q?fix/conversor:=20melhor=20checks=20de=20n?= =?UTF-8?q?ull=20e=20mensagens=20de=20exce=C3=A7=C3=A3o=20nos=20m=C3=A9tod?= =?UTF-8?q?os=20de=20convers=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../acta/common/utils/ConversorObject.java | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/main/java/br/com/acta/common/utils/ConversorObject.java b/src/main/java/br/com/acta/common/utils/ConversorObject.java index 79da114..6247390 100644 --- a/src/main/java/br/com/acta/common/utils/ConversorObject.java +++ b/src/main/java/br/com/acta/common/utils/ConversorObject.java @@ -8,9 +8,10 @@ import java.time.format.DateTimeParseException; public final class ConversorObject { - private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ISO_LOCAL_DATE; public static BigDecimal toBigDecimal(Object object) { + if (object == null) throw new InvalidRequestException("O valor informado é inválido"); try { return new BigDecimal(object.toString()); } catch (NumberFormatException nfe) { @@ -19,6 +20,7 @@ public static BigDecimal toBigDecimal(Object object) { } public static LocalDate toLocalDate(Object object, boolean ehPassado) { + if (object == null) throw new InvalidRequestException("A data deve estar no formato yyyy-MM-dd"); String dataString = object.toString(); if (!dataString.matches("\\d{4}-\\d{2}-\\d{2}")) @@ -40,24 +42,36 @@ public static LocalDate toLocalDate(Object object, boolean ehPassado) { } public static LocalDate toLocalDate(Object object) { + if (object == null) throw new InvalidRequestException("A data deve estar no formato yyyy-MM-dd"); String dataString = object.toString(); if (!dataString.matches("\\d{4}-\\d{2}-\\d{2}")) throw new InvalidRequestException("A data deve estar no formato yyyy-MM-dd"); - return LocalDate.parse(dataString, DATE_TIME_FORMATTER); + try { + return LocalDate.parse(dataString, DATE_TIME_FORMATTER); + } catch (DateTimeParseException dtpe) { + throw new InvalidRequestException("A data deve estar no formato yyyy-MM-dd"); + } } public static Long toLong(Object object) { + if (object == null) throw new InvalidRequestException("O valor deve ser um número"); String valor = object.toString(); if (!valor.matches("\\d+")) throw new InvalidRequestException("O valor deve ser um número"); - long valorLong = Long.parseLong(valor); + long valorLong; + try { + valorLong = Long.parseLong(valor); + } catch (NumberFormatException nfe) { + throw new InvalidRequestException("O valor deve ser um número válido"); + } if (valorLong <= 0) throw new InvalidRequestException("O valor deve ser maior que 0"); return valorLong; } public static > T toEnum(Object valor, Class enumClass) throws IllegalArgumentException { + if (valor == null) throw new InvalidRequestException("O valor informado é inválido"); try { return Enum.valueOf(enumClass, valor.toString().toUpperCase()); } catch (IllegalArgumentException iae) { From 52d6105e646dbf76474a3518241a769dc282ca96 Mon Sep 17 00:00:00 2001 From: Davi Aliaga Date: Sun, 20 Sep 2026 03:20:12 -0300 Subject: [PATCH 04/16] =?UTF-8?q?feat/swagger:=20adiciona=20anota=C3=A7?= =?UTF-8?q?=C3=B5es=20personalizadas=20para=20documenta=C3=A7=C3=A3o=20da?= =?UTF-8?q?=20api=20sobre=20tratamento=20de=20erros?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ApiAuthenticationResponses.java | 29 +++++++++++++++++++ .../annotation/ApiBadRequestResponse.java | 21 ++++++++++++++ .../annotation/ApiBusinessRuleResponse.java | 21 ++++++++++++++ .../annotation/ApiConflictResponse.java | 21 ++++++++++++++ .../annotation/ApiNotFoundResponse.java | 21 ++++++++++++++ .../ApiUnsupportedMediaTypeResponse.java | 21 ++++++++++++++ 6 files changed, 134 insertions(+) create mode 100644 src/main/java/br/com/acta/common/config/swagger/annotation/ApiAuthenticationResponses.java create mode 100644 src/main/java/br/com/acta/common/config/swagger/annotation/ApiBadRequestResponse.java create mode 100644 src/main/java/br/com/acta/common/config/swagger/annotation/ApiBusinessRuleResponse.java create mode 100644 src/main/java/br/com/acta/common/config/swagger/annotation/ApiConflictResponse.java create mode 100644 src/main/java/br/com/acta/common/config/swagger/annotation/ApiNotFoundResponse.java create mode 100644 src/main/java/br/com/acta/common/config/swagger/annotation/ApiUnsupportedMediaTypeResponse.java diff --git a/src/main/java/br/com/acta/common/config/swagger/annotation/ApiAuthenticationResponses.java b/src/main/java/br/com/acta/common/config/swagger/annotation/ApiAuthenticationResponses.java new file mode 100644 index 0000000..fdd46c2 --- /dev/null +++ b/src/main/java/br/com/acta/common/config/swagger/annotation/ApiAuthenticationResponses.java @@ -0,0 +1,29 @@ +package br.com.acta.common.config.swagger.annotation; + +import br.com.acta.common.handler.ErroResponse; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.responses.ApiResponses; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +@ApiResponses({ + @ApiResponse( + responseCode = "401", + description = "ID Token do Firebase ausente ou inválido", + content = @Content(mediaType = "application/json", schema = @Schema(implementation = ErroResponse.class)) + ), + @ApiResponse( + responseCode = "403", + description = "Usuário sem permissão para acessar o recurso", + content = @Content(mediaType = "application/json", schema = @Schema(implementation = ErroResponse.class)) + ) +}) +public @interface ApiAuthenticationResponses { +} diff --git a/src/main/java/br/com/acta/common/config/swagger/annotation/ApiBadRequestResponse.java b/src/main/java/br/com/acta/common/config/swagger/annotation/ApiBadRequestResponse.java new file mode 100644 index 0000000..2c5f310 --- /dev/null +++ b/src/main/java/br/com/acta/common/config/swagger/annotation/ApiBadRequestResponse.java @@ -0,0 +1,21 @@ +package br.com.acta.common.config.swagger.annotation; + +import br.com.acta.common.handler.ErroResponse; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +@ApiResponse( + responseCode = "400", + description = "Requisição inválida", + content = @Content(mediaType = "application/json", schema = @Schema(implementation = ErroResponse.class)) +) +public @interface ApiBadRequestResponse { +} diff --git a/src/main/java/br/com/acta/common/config/swagger/annotation/ApiBusinessRuleResponse.java b/src/main/java/br/com/acta/common/config/swagger/annotation/ApiBusinessRuleResponse.java new file mode 100644 index 0000000..6969909 --- /dev/null +++ b/src/main/java/br/com/acta/common/config/swagger/annotation/ApiBusinessRuleResponse.java @@ -0,0 +1,21 @@ +package br.com.acta.common.config.swagger.annotation; + +import br.com.acta.common.handler.ErroResponse; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +@ApiResponse( + responseCode = "422", + description = "Regra de negócio não atendida", + content = @Content(mediaType = "application/json", schema = @Schema(implementation = ErroResponse.class)) +) +public @interface ApiBusinessRuleResponse { +} diff --git a/src/main/java/br/com/acta/common/config/swagger/annotation/ApiConflictResponse.java b/src/main/java/br/com/acta/common/config/swagger/annotation/ApiConflictResponse.java new file mode 100644 index 0000000..7ea4532 --- /dev/null +++ b/src/main/java/br/com/acta/common/config/swagger/annotation/ApiConflictResponse.java @@ -0,0 +1,21 @@ +package br.com.acta.common.config.swagger.annotation; + +import br.com.acta.common.handler.ErroResponse; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +@ApiResponse( + responseCode = "409", + description = "Conflito com os dados existentes", + content = @Content(mediaType = "application/json", schema = @Schema(implementation = ErroResponse.class)) +) +public @interface ApiConflictResponse { +} diff --git a/src/main/java/br/com/acta/common/config/swagger/annotation/ApiNotFoundResponse.java b/src/main/java/br/com/acta/common/config/swagger/annotation/ApiNotFoundResponse.java new file mode 100644 index 0000000..b609d8b --- /dev/null +++ b/src/main/java/br/com/acta/common/config/swagger/annotation/ApiNotFoundResponse.java @@ -0,0 +1,21 @@ +package br.com.acta.common.config.swagger.annotation; + +import br.com.acta.common.handler.ErroResponse; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +@ApiResponse( + responseCode = "404", + description = "Recurso não encontrado", + content = @Content(mediaType = "application/json", schema = @Schema(implementation = ErroResponse.class)) +) +public @interface ApiNotFoundResponse { +} diff --git a/src/main/java/br/com/acta/common/config/swagger/annotation/ApiUnsupportedMediaTypeResponse.java b/src/main/java/br/com/acta/common/config/swagger/annotation/ApiUnsupportedMediaTypeResponse.java new file mode 100644 index 0000000..ed68387 --- /dev/null +++ b/src/main/java/br/com/acta/common/config/swagger/annotation/ApiUnsupportedMediaTypeResponse.java @@ -0,0 +1,21 @@ +package br.com.acta.common.config.swagger.annotation; + +import br.com.acta.common.handler.ErroResponse; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +@ApiResponse( + responseCode = "415", + description = "Tipo de conteúdo enviado não suportado", + content = @Content(mediaType = "application/json", schema = @Schema(implementation = ErroResponse.class)) +) +public @interface ApiUnsupportedMediaTypeResponse { +} From 8e88926fa41302f84bec5a50e91d593d56158b0f Mon Sep 17 00:00:00 2001 From: Davi Aliaga Date: Sun, 20 Sep 2026 03:20:47 -0300 Subject: [PATCH 05/16] =?UTF-8?q?feat/swagger:=20implementa=20interface=20?= =?UTF-8?q?CicloOpenapi=20e=20adapta=20CicloController=20para=20herdar=20s?= =?UTF-8?q?uas=20opera=C3=A7=C3=B5es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/swagger/openapi/CicloOpenapi.java | 82 +++++++++++++++++++ .../com/acta/controller/CicloController.java | 10 ++- 2 files changed, 91 insertions(+), 1 deletion(-) create mode 100644 src/main/java/br/com/acta/common/config/swagger/openapi/CicloOpenapi.java diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/CicloOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/CicloOpenapi.java new file mode 100644 index 0000000..f2c4af9 --- /dev/null +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/CicloOpenapi.java @@ -0,0 +1,82 @@ +package br.com.acta.common.config.swagger.openapi; + +import br.com.acta.common.config.swagger.annotation.ApiAuthenticationResponses; +import br.com.acta.common.config.swagger.annotation.ApiBadRequestResponse; +import br.com.acta.common.config.swagger.annotation.ApiBusinessRuleResponse; +import br.com.acta.common.config.swagger.annotation.ApiConflictResponse; +import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; +import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; +import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; +import br.com.acta.dto.pdca.ciclo.CicloRequestDTO; +import br.com.acta.dto.pdca.ciclo.CicloResponseDTO; +import br.com.acta.entity.enums.StatusCiclo; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.ArraySchema; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.http.ResponseEntity; + +import java.util.List; +import java.util.Map; + +@Tag(name = "Ciclos", description = SwaggerOpenapiDescriptions.CICLO_CONTROLLER) +public interface CicloOpenapi { + + @Operation(summary = "Lista os ciclos") + @ApiResponse(responseCode = "200", description = "Ciclos encontrados", content = @Content(array = @ArraySchema(schema = @Schema(implementation = CicloResponseDTO.class)))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + ResponseEntity> buscar(Long idEmpresa, Long idGestor, StatusCiclo status); + + @Operation(summary = "Busca um ciclo") + @ApiResponse(responseCode = "200", description = "Ciclo encontrado", content = @Content(schema = @Schema(implementation = CicloResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + ResponseEntity buscar(Long id); + + @Operation(summary = "Cria um ciclo") + @ApiResponse(responseCode = "201", description = "Ciclo criado", content = @Content(schema = @Schema(implementation = CicloResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiUnsupportedMediaTypeResponse + ResponseEntity inserir(CicloRequestDTO cicloRequest); + + @Operation(summary = "Atualiza parcialmente um ciclo") + @ApiResponse(responseCode = "200", description = "Ciclo atualizado", content = @Content(schema = @Schema(implementation = CicloResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiBusinessRuleResponse + @ApiUnsupportedMediaTypeResponse + ResponseEntity patch(Long id, Map campos); + + @Operation(summary = "Atualiza o status de um ciclo") + @ApiResponse(responseCode = "200", description = "Status atualizado", content = @Content(schema = @Schema(implementation = CicloResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiBusinessRuleResponse + ResponseEntity patchStatus(Long id, StatusCiclo status); + + @Operation(summary = "Cancela um ciclo") + @ApiResponse(responseCode = "204", description = "Ciclo cancelado") + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiBusinessRuleResponse + ResponseEntity excluir(Long id); + + @Operation(summary = "Consulta o avanço de um ciclo") + @ApiResponse(responseCode = "200", description = "Percentual de avanço do ciclo", content = @Content(schema = @Schema(implementation = Double.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + ResponseEntity avancoCiclo(Long id); +} diff --git a/src/main/java/br/com/acta/controller/CicloController.java b/src/main/java/br/com/acta/controller/CicloController.java index 11a91a7..12a5720 100644 --- a/src/main/java/br/com/acta/controller/CicloController.java +++ b/src/main/java/br/com/acta/controller/CicloController.java @@ -1,5 +1,6 @@ package br.com.acta.controller; +import br.com.acta.common.config.swagger.openapi.CicloOpenapi; import br.com.acta.dto.pdca.ciclo.CicloRequestDTO; import br.com.acta.dto.pdca.ciclo.CicloResponseDTO; import br.com.acta.entity.enums.StatusCiclo; @@ -19,10 +20,11 @@ @RestController @RequestMapping(value = "api/v1/ciclo", produces = MediaType.APPLICATION_JSON_VALUE) @RequiredArgsConstructor -public class CicloController {//implements CicloOpenapi { +public class CicloController implements CicloOpenapi { private final CicloService service; @GetMapping + @Override public ResponseEntity> buscar(@RequestParam(required = false) @Positive Long idEmpresa, @RequestParam(required = false) @Positive Long idGestor, @RequestParam(required = false) StatusCiclo status) { List ciclos = service.buscarPorStatus(idEmpresa, idGestor, status); @@ -30,36 +32,42 @@ public ResponseEntity> buscar(@RequestParam(required = fa } @GetMapping("/{id}") + @Override public ResponseEntity buscar(@PathVariable @Positive Long id) { CicloResponseDTO ciclo = service.buscar(id); return ResponseEntity.ok(ciclo); } @PostMapping + @Override public ResponseEntity inserir(@RequestBody @Valid CicloRequestDTO cicloRequest) { CicloResponseDTO ciclo = service.inserir(cicloRequest); return ResponseEntity.status(201).body(ciclo); } @PatchMapping("/{id}") + @Override public ResponseEntity patch(@PathVariable @Positive Long id, @RequestBody Map campos) { CicloResponseDTO ciclo = service.patch(id, campos); return ResponseEntity.ok(ciclo); } @PatchMapping("/{id}/status") + @Override public ResponseEntity patchStatus(@PathVariable @Positive Long id, @RequestParam StatusCiclo status) { CicloResponseDTO ciclo = service.patchStatus(id, status); return ResponseEntity.ok(ciclo); } @DeleteMapping("/{id}") + @Override public ResponseEntity excluir(@PathVariable @Positive Long id) { service.excluir(id); return ResponseEntity.noContent().build(); } @GetMapping("/avanco/{id}") + @Override public ResponseEntity avancoCiclo(@PathVariable @Positive Long id) { Double avanco = service.avancoCiclo(id); return ResponseEntity.ok(avanco); From dbd7f4c917a66a0471542c93aaf300dbdaa8c826 Mon Sep 17 00:00:00 2001 From: Davi Aliaga Date: Sun, 20 Sep 2026 03:52:34 -0300 Subject: [PATCH 06/16] =?UTF-8?q?feat/swagger:=20adiciona=20interfaces=20d?= =?UTF-8?q?e=20documenta=C3=A7=C3=A3o=20do=20Swagger=20para=20Health=20e?= =?UTF-8?q?=20Autentica=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../examples/SwaggerOpenapiDescriptions.java | 17 ++++++++-- .../config/swagger/openapi/AuthOpenapi.java | 31 +++++++++++++++++++ .../config/swagger/openapi/HealthOpenapi.java | 22 +++++++++++++ .../com/acta/controller/AuthController.java | 5 ++- .../com/acta/controller/HealthController.java | 4 ++- 5 files changed, 75 insertions(+), 4 deletions(-) create mode 100644 src/main/java/br/com/acta/common/config/swagger/openapi/AuthOpenapi.java create mode 100644 src/main/java/br/com/acta/common/config/swagger/openapi/HealthOpenapi.java diff --git a/src/main/java/br/com/acta/common/config/swagger/examples/SwaggerOpenapiDescriptions.java b/src/main/java/br/com/acta/common/config/swagger/examples/SwaggerOpenapiDescriptions.java index 76a4589..30e8d24 100644 --- a/src/main/java/br/com/acta/common/config/swagger/examples/SwaggerOpenapiDescriptions.java +++ b/src/main/java/br/com/acta/common/config/swagger/examples/SwaggerOpenapiDescriptions.java @@ -1,6 +1,21 @@ package br.com.acta.common.config.swagger.examples; public final class SwaggerOpenapiDescriptions { + public static final String AUTH_CONTROLLER = """ + Endpoints responsáveis pela autenticação e ativação de usuários. + + A API permite: + + - Consultar os dados do usuário autenticado; + - Ativar um usuário a partir de uma identidade do Firebase. + """; + + public static final String HEALTH_CONTROLLER = """ + Endpoint responsável por verificar a disponibilidade da API e do banco de dados. + + A verificação informa se a aplicação está disponível e se a conexão com o banco de dados está funcionando. + """; + public static final String CICLO_CONTROLLER = """ Endpoints responsáveis pelo gerenciamento dos ciclos PDCA. @@ -17,6 +32,4 @@ public final class SwaggerOpenapiDescriptions { (* Algumas operações dependem do status atual do ciclo. Ciclos encerrados, concluídos ou cancelados podem ter sua alteração bloqueada pelas regras de negócio) """; - - } diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/AuthOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/AuthOpenapi.java new file mode 100644 index 0000000..c5a0807 --- /dev/null +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/AuthOpenapi.java @@ -0,0 +1,31 @@ +package br.com.acta.common.config.swagger.openapi; + +import br.com.acta.common.config.firebase.FirebaseAuthFilter.FirebaseIdentity; +import br.com.acta.common.config.firebase.UsuarioAutenticado; +import br.com.acta.common.config.swagger.annotation.ApiAuthenticationResponses; +import br.com.acta.common.config.swagger.annotation.ApiConflictResponse; +import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; +import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; +import br.com.acta.dto.auth.MeResponseDTO; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.http.ResponseEntity; + +@Tag(name = "Autenticação", description = SwaggerOpenapiDescriptions.AUTH_CONTROLLER) +public interface AuthOpenapi { + + @Operation(summary = "Consulta o usuário autenticado") + @ApiResponse(responseCode = "200", description = "Usuário autenticado", content = @Content(schema = @Schema(implementation = MeResponseDTO.class))) + @ApiAuthenticationResponses + ResponseEntity me(UsuarioAutenticado usuario); + + @Operation(summary = "Ativa o usuário autenticado") + @ApiResponse(responseCode = "200", description = "Usuário ativado", content = @Content(schema = @Schema(implementation = MeResponseDTO.class))) + @ApiAuthenticationResponses + @ApiNotFoundResponse + @ApiConflictResponse + ResponseEntity ativar(FirebaseIdentity identity); +} diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/HealthOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/HealthOpenapi.java new file mode 100644 index 0000000..4adeda4 --- /dev/null +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/HealthOpenapi.java @@ -0,0 +1,22 @@ +package br.com.acta.common.config.swagger.openapi; + +import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; +import br.com.acta.dto.health.HealthResponseDTO; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.responses.ApiResponses; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.http.ResponseEntity; + +@Tag(name = "Saúde", description = SwaggerOpenapiDescriptions.HEALTH_CONTROLLER) +public interface HealthOpenapi { + + @Operation(summary = "Verifica a saúde da API", security = {}) + @ApiResponses({ + @ApiResponse(responseCode = "200", description = "API e banco de dados disponíveis", content = @Content(schema = @Schema(implementation = HealthResponseDTO.class))), + @ApiResponse(responseCode = "503", description = "Banco de dados indisponível", content = @Content(schema = @Schema(implementation = HealthResponseDTO.class))) + }) + ResponseEntity verificar(); +} diff --git a/src/main/java/br/com/acta/controller/AuthController.java b/src/main/java/br/com/acta/controller/AuthController.java index e6505e9..5eff80e 100644 --- a/src/main/java/br/com/acta/controller/AuthController.java +++ b/src/main/java/br/com/acta/controller/AuthController.java @@ -2,6 +2,7 @@ import br.com.acta.common.config.firebase.FirebaseAuthFilter.FirebaseIdentity; import br.com.acta.common.config.firebase.UsuarioAutenticado; +import br.com.acta.common.config.swagger.openapi.AuthOpenapi; import br.com.acta.dto.auth.MeResponseDTO; import br.com.acta.dto.auth.AuthMapper; import br.com.acta.service.AuthService; @@ -17,16 +18,18 @@ @RestController @RequestMapping(value = "/api/v1", produces = MediaType.APPLICATION_JSON_VALUE) @RequiredArgsConstructor -public class AuthController { +public class AuthController implements AuthOpenapi { private final AuthService service; private final AuthMapper mapper; @GetMapping("/me") + @Override public ResponseEntity me(@AuthenticationPrincipal UsuarioAutenticado usuario) { return ResponseEntity.ok(mapper.toMeResponse(usuario)); } @PostMapping("/auth/ativar") + @Override public ResponseEntity ativar(@AuthenticationPrincipal FirebaseIdentity identity) { return ResponseEntity.ok(service.ativar(identity)); } diff --git a/src/main/java/br/com/acta/controller/HealthController.java b/src/main/java/br/com/acta/controller/HealthController.java index 5bea1af..2781840 100644 --- a/src/main/java/br/com/acta/controller/HealthController.java +++ b/src/main/java/br/com/acta/controller/HealthController.java @@ -1,5 +1,6 @@ package br.com.acta.controller; +import br.com.acta.common.config.swagger.openapi.HealthOpenapi; import br.com.acta.dto.health.HealthResponseDTO; import br.com.acta.dto.health.HealthStatus; import br.com.acta.service.HealthService; @@ -13,10 +14,11 @@ @RestController @RequestMapping(value = "api/v1/health", produces = MediaType.APPLICATION_JSON_VALUE) @RequiredArgsConstructor -public class HealthController { +public class HealthController implements HealthOpenapi { private final HealthService service; @GetMapping + @Override public ResponseEntity verificar() { HealthResponseDTO dto = service.verificar(); From a8564200b6ab82aa80b5499718389833ab8ff1f9 Mon Sep 17 00:00:00 2001 From: Davi Aliaga Date: Sun, 20 Sep 2026 03:59:30 -0300 Subject: [PATCH 07/16] =?UTF-8?q?feat/swagger:=20adiciona=20interfaces=20O?= =?UTF-8?q?penAPI=20para=20gerenciamento=20de=20usu=C3=A1rios,=20empresas?= =?UTF-8?q?=20e=20colaboradores?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../examples/SwaggerOpenapiDescriptions.java | 34 ++++++++ .../swagger/openapi/ColaboradorOpenapi.java | 72 +++++++++++++++++ .../swagger/openapi/EmpresaOpenapi.java | 63 +++++++++++++++ .../swagger/openapi/UsuarioOpenapi.java | 80 +++++++++++++++++++ .../controller/ColaboradorController.java | 9 ++- .../acta/controller/EmpresaController.java | 8 +- .../acta/controller/UsuarioController.java | 10 ++- 7 files changed, 273 insertions(+), 3 deletions(-) create mode 100644 src/main/java/br/com/acta/common/config/swagger/openapi/ColaboradorOpenapi.java create mode 100644 src/main/java/br/com/acta/common/config/swagger/openapi/EmpresaOpenapi.java create mode 100644 src/main/java/br/com/acta/common/config/swagger/openapi/UsuarioOpenapi.java diff --git a/src/main/java/br/com/acta/common/config/swagger/examples/SwaggerOpenapiDescriptions.java b/src/main/java/br/com/acta/common/config/swagger/examples/SwaggerOpenapiDescriptions.java index 30e8d24..f15835a 100644 --- a/src/main/java/br/com/acta/common/config/swagger/examples/SwaggerOpenapiDescriptions.java +++ b/src/main/java/br/com/acta/common/config/swagger/examples/SwaggerOpenapiDescriptions.java @@ -16,6 +16,40 @@ public final class SwaggerOpenapiDescriptions { A verificação informa se a aplicação está disponível e se a conexão com o banco de dados está funcionando. """; + public static final String USUARIO_CONTROLLER = """ + Endpoints responsáveis pelo gerenciamento de usuários. + + A API permite: + + - Criar e consultar usuários; + - Filtrar usuários por empresa e tipo; + - Consultar os ciclos de um usuário; + - Atualizar dados e remover a foto de perfil; + - Inativar um usuário. + """; + + public static final String EMPRESA_CONTROLLER = """ + Endpoints responsáveis pelo gerenciamento de empresas. + + A API permite: + + - Criar e consultar empresas; + - Filtrar empresas por tamanho; + - Atualizar parcialmente os dados de uma empresa; + - Inativar uma empresa. + """; + + public static final String COLABORADOR_CONTROLLER = """ + Endpoints responsáveis pelo gerenciamento de colaboradores. + + A API permite: + + - Criar e consultar colaboradores; + - Consultar colaboradores de uma empresa; + - Atualizar parcialmente os dados de um colaborador; + - Inativar um colaborador. + """; + public static final String CICLO_CONTROLLER = """ Endpoints responsáveis pelo gerenciamento dos ciclos PDCA. diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/ColaboradorOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/ColaboradorOpenapi.java new file mode 100644 index 0000000..8c558a4 --- /dev/null +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/ColaboradorOpenapi.java @@ -0,0 +1,72 @@ +package br.com.acta.common.config.swagger.openapi; + +import br.com.acta.common.config.swagger.annotation.ApiAuthenticationResponses; +import br.com.acta.common.config.swagger.annotation.ApiBadRequestResponse; +import br.com.acta.common.config.swagger.annotation.ApiBusinessRuleResponse; +import br.com.acta.common.config.swagger.annotation.ApiConflictResponse; +import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; +import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; +import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; +import br.com.acta.dto.core.colaborador.ColaboradorRequestDTO; +import br.com.acta.dto.core.colaborador.ColaboradorResponseDTO; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.ArraySchema; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.http.ResponseEntity; + +import java.util.List; +import java.util.Map; + +@Tag(name = "Colaboradores", description = SwaggerOpenapiDescriptions.COLABORADOR_CONTROLLER) +public interface ColaboradorOpenapi { + + @Operation(summary = "Lista os colaboradores de uma empresa") + @ApiResponse(responseCode = "200", description = "Colaboradores encontrados", content = @Content(array = @ArraySchema(schema = @Schema(implementation = ColaboradorResponseDTO.class)))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + ResponseEntity> buscarPorEmpresa(Long idEmpresa); + + @Operation(summary = "Lista os colaboradores") + @ApiResponse(responseCode = "200", description = "Colaboradores encontrados", content = @Content(array = @ArraySchema(schema = @Schema(implementation = ColaboradorResponseDTO.class)))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + ResponseEntity> buscar(); + + @Operation(summary = "Busca um colaborador") + @ApiResponse(responseCode = "200", description = "Colaborador encontrado", content = @Content(schema = @Schema(implementation = ColaboradorResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + ResponseEntity buscar(Long id); + + @Operation(summary = "Cria um colaborador") + @ApiResponse(responseCode = "201", description = "Colaborador criado", content = @Content(schema = @Schema(implementation = ColaboradorResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiBusinessRuleResponse + @ApiUnsupportedMediaTypeResponse + ResponseEntity inserir(ColaboradorRequestDTO dto); + + @Operation(summary = "Atualiza parcialmente um colaborador") + @ApiResponse(responseCode = "200", description = "Colaborador atualizado", content = @Content(schema = @Schema(implementation = ColaboradorResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiUnsupportedMediaTypeResponse + ResponseEntity patch(Long id, Map dto); + + @Operation(summary = "Inativa um colaborador") + @ApiResponse(responseCode = "204", description = "Colaborador inativado") + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + ResponseEntity excluir(Long id); +} diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/EmpresaOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/EmpresaOpenapi.java new file mode 100644 index 0000000..b25041e --- /dev/null +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/EmpresaOpenapi.java @@ -0,0 +1,63 @@ +package br.com.acta.common.config.swagger.openapi; + +import br.com.acta.common.config.swagger.annotation.ApiAuthenticationResponses; +import br.com.acta.common.config.swagger.annotation.ApiBadRequestResponse; +import br.com.acta.common.config.swagger.annotation.ApiConflictResponse; +import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; +import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; +import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; +import br.com.acta.dto.core.empresa.EmpresaRequestDTO; +import br.com.acta.dto.core.empresa.EmpresaResponseDTO; +import br.com.acta.entity.enums.TamanhoEmpresa; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.ArraySchema; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.http.ResponseEntity; + +import java.util.List; +import java.util.Map; + +@Tag(name = "Empresas", description = SwaggerOpenapiDescriptions.EMPRESA_CONTROLLER) +public interface EmpresaOpenapi { + + @Operation(summary = "Lista as empresas") + @ApiResponse(responseCode = "200", description = "Empresas encontradas", content = @Content(array = @ArraySchema(schema = @Schema(implementation = EmpresaResponseDTO.class)))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + ResponseEntity> buscar(TamanhoEmpresa tamanho); + + @Operation(summary = "Busca uma empresa") + @ApiResponse(responseCode = "200", description = "Empresa encontrada", content = @Content(schema = @Schema(implementation = EmpresaResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + ResponseEntity buscar(Long id); + + @Operation(summary = "Cria uma empresa") + @ApiResponse(responseCode = "201", description = "Empresa criada", content = @Content(schema = @Schema(implementation = EmpresaResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiConflictResponse + @ApiUnsupportedMediaTypeResponse + ResponseEntity inserir(EmpresaRequestDTO dto); + + @Operation(summary = "Atualiza parcialmente uma empresa") + @ApiResponse(responseCode = "200", description = "Empresa atualizada", content = @Content(schema = @Schema(implementation = EmpresaResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiUnsupportedMediaTypeResponse + ResponseEntity patch(Long id, Map campos); + + @Operation(summary = "Inativa uma empresa") + @ApiResponse(responseCode = "204", description = "Empresa inativada") + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + ResponseEntity excluir(Long id); +} diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/UsuarioOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/UsuarioOpenapi.java new file mode 100644 index 0000000..6be4f2e --- /dev/null +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/UsuarioOpenapi.java @@ -0,0 +1,80 @@ +package br.com.acta.common.config.swagger.openapi; + +import br.com.acta.common.config.swagger.annotation.ApiAuthenticationResponses; +import br.com.acta.common.config.swagger.annotation.ApiBadRequestResponse; +import br.com.acta.common.config.swagger.annotation.ApiConflictResponse; +import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; +import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; +import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; +import br.com.acta.dto.core.usuario.UsuarioRequestDTO; +import br.com.acta.dto.core.usuario.UsuarioResponseDTO; +import br.com.acta.dto.join.usuario_ciclo.UsuarioCicloResponseDTO; +import br.com.acta.entity.enums.TipoUsuario; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.ArraySchema; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.http.ResponseEntity; + +import java.util.List; +import java.util.Map; + +@Tag(name = "Usuários", description = SwaggerOpenapiDescriptions.USUARIO_CONTROLLER) +public interface UsuarioOpenapi { + + @Operation(summary = "Lista os ciclos de um usuário") + @ApiResponse(responseCode = "200", description = "Ciclos encontrados", content = @Content(array = @ArraySchema(schema = @Schema(implementation = UsuarioCicloResponseDTO.class)))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + ResponseEntity> buscarCiclosUsuario(Long idUsuario); + + @Operation(summary = "Lista os usuários de uma empresa") + @ApiResponse(responseCode = "200", description = "Usuários encontrados", content = @Content(array = @ArraySchema(schema = @Schema(implementation = UsuarioResponseDTO.class)))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + ResponseEntity> buscar(Long idEmpresa, TipoUsuario tipo); + + @Operation(summary = "Busca um usuário") + @ApiResponse(responseCode = "200", description = "Usuário encontrado", content = @Content(schema = @Schema(implementation = UsuarioResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + ResponseEntity buscarPorId(Long id); + + @Operation(summary = "Cria um usuário") + @ApiResponse(responseCode = "201", description = "Usuário criado", content = @Content(schema = @Schema(implementation = UsuarioResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiUnsupportedMediaTypeResponse + ResponseEntity inserir(UsuarioRequestDTO dto); + + @Operation(summary = "Atualiza parcialmente um usuário") + @ApiResponse(responseCode = "200", description = "Usuário atualizado", content = @Content(schema = @Schema(implementation = UsuarioResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiUnsupportedMediaTypeResponse + ResponseEntity patch(Long id, Map campos); + + @Operation(summary = "Remove a foto de um usuário") + @ApiResponse(responseCode = "200", description = "Foto removida", content = @Content(schema = @Schema(implementation = UsuarioResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + ResponseEntity excluirFoto(Long id); + + @Operation(summary = "Inativa um usuário") + @ApiResponse(responseCode = "204", description = "Usuário inativado") + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + ResponseEntity excluir(Long id); +} diff --git a/src/main/java/br/com/acta/controller/ColaboradorController.java b/src/main/java/br/com/acta/controller/ColaboradorController.java index 2b7bbaf..2408edc 100644 --- a/src/main/java/br/com/acta/controller/ColaboradorController.java +++ b/src/main/java/br/com/acta/controller/ColaboradorController.java @@ -1,5 +1,6 @@ package br.com.acta.controller; +import br.com.acta.common.config.swagger.openapi.ColaboradorOpenapi; import br.com.acta.dto.core.colaborador.ColaboradorRequestDTO; import br.com.acta.dto.core.colaborador.ColaboradorResponseDTO; import br.com.acta.service.ColaboradorService; @@ -19,40 +20,46 @@ @RestController @RequestMapping(value = "api/v1/colaborador", produces = MediaType.APPLICATION_JSON_VALUE) @RequiredArgsConstructor -public class ColaboradorController { +public class ColaboradorController implements ColaboradorOpenapi { private final ColaboradorService service; @GetMapping("empresa/{idEmpresa}") + @Override public ResponseEntity> buscarPorEmpresa(@PathVariable @Positive Long idEmpresa){ List colaboradores = service.buscarPorEmpresa(idEmpresa); return ResponseEntity.ok(colaboradores); } @GetMapping + @Override public ResponseEntity> buscar() { List colaboradores = service.buscar(); return ResponseEntity.ok(colaboradores); } @GetMapping("/{id}") + @Override public ResponseEntity buscar(@PathVariable @Positive Long id) { ColaboradorResponseDTO colaborador = service.buscar(id); return ResponseEntity.ok(colaborador); } @PostMapping + @Override public ResponseEntity inserir(@RequestBody @Valid ColaboradorRequestDTO dto) { ColaboradorResponseDTO colaborador = service.inserir(dto); return ResponseEntity.status(201).body(colaborador); } @PatchMapping("/{id}") + @Override public ResponseEntity patch(@PathVariable @Positive Long id, @RequestBody Map dto) { ColaboradorResponseDTO colaborador = service.patch(id, dto); return ResponseEntity.ok(colaborador); } @DeleteMapping("/{id}") + @Override public ResponseEntity excluir(@PathVariable @Positive Long id) { service.excluir(id); return ResponseEntity.noContent().build(); diff --git a/src/main/java/br/com/acta/controller/EmpresaController.java b/src/main/java/br/com/acta/controller/EmpresaController.java index 050a1ee..bcecd69 100644 --- a/src/main/java/br/com/acta/controller/EmpresaController.java +++ b/src/main/java/br/com/acta/controller/EmpresaController.java @@ -1,5 +1,6 @@ package br.com.acta.controller; +import br.com.acta.common.config.swagger.openapi.EmpresaOpenapi; import br.com.acta.dto.core.empresa.EmpresaRequestDTO; import br.com.acta.dto.core.empresa.EmpresaResponseDTO; import br.com.acta.entity.enums.TamanhoEmpresa; @@ -19,34 +20,39 @@ @RestController @RequestMapping(value = "api/v1/empresa", produces = MediaType.APPLICATION_JSON_VALUE) @RequiredArgsConstructor -public class EmpresaController { +public class EmpresaController implements EmpresaOpenapi { private final EmpresaService service; @GetMapping + @Override public ResponseEntity> buscar(@RequestParam(required = false) TamanhoEmpresa tamanho) { List empresas = service.buscar(tamanho); return ResponseEntity.ok(empresas); } @GetMapping("/{id}") + @Override public ResponseEntity buscar(@PathVariable @Positive Long id) { EmpresaResponseDTO empresa = service.buscar(id); return ResponseEntity.ok(empresa); } @PostMapping + @Override public ResponseEntity inserir(@RequestBody @Valid EmpresaRequestDTO dto) { EmpresaResponseDTO empresa = service.inserir(dto); return ResponseEntity.status(201).body(empresa); } @PatchMapping("/{id}") + @Override public ResponseEntity patch(@PathVariable @Positive Long id, @RequestBody Map campos) { EmpresaResponseDTO empresa = service.patch(id, campos); return ResponseEntity.ok(empresa); } @DeleteMapping("/{id}") + @Override public ResponseEntity excluir(@PathVariable @Positive Long id) { service.excluir(id); return ResponseEntity.noContent().build(); diff --git a/src/main/java/br/com/acta/controller/UsuarioController.java b/src/main/java/br/com/acta/controller/UsuarioController.java index 7e83a1b..bfd87fe 100644 --- a/src/main/java/br/com/acta/controller/UsuarioController.java +++ b/src/main/java/br/com/acta/controller/UsuarioController.java @@ -3,6 +3,7 @@ import java.util.List; import java.util.Map; +import br.com.acta.common.config.swagger.openapi.UsuarioOpenapi; import br.com.acta.dto.join.usuario_ciclo.UsuarioCicloResponseDTO; import br.com.acta.service.UsuarioCicloService; import org.springframework.http.MediaType; @@ -30,47 +31,54 @@ @RestController @RequestMapping(value = "api/v1/usuario", produces = MediaType.APPLICATION_JSON_VALUE) @RequiredArgsConstructor -public class UsuarioController { +public class UsuarioController implements UsuarioOpenapi { private final UsuarioService service; private final UsuarioCicloService usuarioCicloService; @GetMapping("/ciclos-usuario/{idUsuario}") + @Override public ResponseEntity> buscarCiclosUsuario(@PathVariable @Positive Long idUsuario) { List ciclos = usuarioCicloService.buscarPorUsuario(idUsuario); return ResponseEntity.ok(ciclos); } @GetMapping("/empresa/{idEmpresa}") + @Override public ResponseEntity> buscar(@PathVariable @Positive Long idEmpresa, @RequestParam(required = false) TipoUsuario tipo) { List usuarios = service.buscar(idEmpresa, tipo); return ResponseEntity.ok(usuarios); } @GetMapping("/{id}") + @Override public ResponseEntity buscarPorId(@PathVariable @Positive Long id){ UsuarioResponseDTO usuario = service.buscar(id); return ResponseEntity.ok(usuario); } @PostMapping + @Override public ResponseEntity inserir(@RequestBody @Valid UsuarioRequestDTO dto) { UsuarioResponseDTO usuario = service.inserir(dto); return ResponseEntity.status(201).body(usuario); } @PatchMapping("/{id}") + @Override public ResponseEntity patch(@PathVariable @Positive Long id, @RequestBody Map campos) { UsuarioResponseDTO usuario = service.patch(id, campos); return ResponseEntity.ok(usuario); } @DeleteMapping("/{id}/foto") + @Override public ResponseEntity excluirFoto(@PathVariable @Positive Long id) { UsuarioResponseDTO usuario = service.excluirFoto(id); return ResponseEntity.ok(usuario); } @DeleteMapping("/{id}") + @Override public ResponseEntity excluir(@PathVariable @Positive Long id) { service.excluir(id); return ResponseEntity.noContent().build(); From 3bf43bd30ec0b4b830eae6934efe04e389721483 Mon Sep 17 00:00:00 2001 From: Davi Aliaga Date: Sun, 20 Sep 2026 04:05:57 -0300 Subject: [PATCH 08/16] =?UTF-8?q?feat/swagger:=20adiciona=20interfaces=20O?= =?UTF-8?q?penAPI=20para=20gerenciamento=20de=20tarefas,=20metas=20e=20pla?= =?UTF-8?q?nos=20de=20a=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 5 +- .../examples/SwaggerOpenapiDescriptions.java | 35 ++++++ .../config/swagger/openapi/MetaOpenapi.java | 101 ++++++++++++++++++ .../swagger/openapi/PlanoAcaoOpenapi.java | 77 +++++++++++++ .../config/swagger/openapi/TarefaOpenapi.java | 100 +++++++++++++++++ .../com/acta/controller/MetaController.java | 12 ++- .../acta/controller/PlanoAcaoController.java | 9 +- .../com/acta/controller/TarefaController.java | 11 +- 8 files changed, 346 insertions(+), 4 deletions(-) create mode 100644 src/main/java/br/com/acta/common/config/swagger/openapi/MetaOpenapi.java create mode 100644 src/main/java/br/com/acta/common/config/swagger/openapi/PlanoAcaoOpenapi.java create mode 100644 src/main/java/br/com/acta/common/config/swagger/openapi/TarefaOpenapi.java diff --git a/.gitignore b/.gitignore index c463c6a..f64a998 100644 --- a/.gitignore +++ b/.gitignore @@ -39,4 +39,7 @@ desktop.ini Desktop.ini src/main/resources/firebase/ -skills/ \ No newline at end of file +skills/ + +*.env +*.json \ No newline at end of file diff --git a/src/main/java/br/com/acta/common/config/swagger/examples/SwaggerOpenapiDescriptions.java b/src/main/java/br/com/acta/common/config/swagger/examples/SwaggerOpenapiDescriptions.java index f15835a..e87a7b8 100644 --- a/src/main/java/br/com/acta/common/config/swagger/examples/SwaggerOpenapiDescriptions.java +++ b/src/main/java/br/com/acta/common/config/swagger/examples/SwaggerOpenapiDescriptions.java @@ -50,6 +50,41 @@ public final class SwaggerOpenapiDescriptions { - Inativar um colaborador. """; + public static final String TAREFA_CONTROLLER = """ + Endpoints responsáveis pelo gerenciamento de tarefas dos planos de ação. + + A API permite: + + - Criar e consultar tarefas; + - Filtrar tarefas por status, responsável e prioridade; + - Atualizar dados e status; + - Reabrir e reatribuir tarefas; + - Excluir tarefas. + """; + + public static final String META_CONTROLLER = """ + Endpoints responsáveis pelo gerenciamento de metas do ciclo PDCA. + + A API permite: + + - Criar e consultar metas; + - Filtrar metas por ciclo, status e prioridade; + - Atualizar dados e status; + - Gerenciar os responsáveis por uma meta; + - Excluir metas. + """; + + public static final String PLANO_ACAO_CONTROLLER = """ + Endpoints responsáveis pelo gerenciamento dos planos de ação de um ciclo PDCA. + + A API permite: + + - Criar e consultar planos de ação; + - Filtrar planos por ciclo, status e prioridade; + - Atualizar dados e status; + - Excluir planos de ação. + """; + public static final String CICLO_CONTROLLER = """ Endpoints responsáveis pelo gerenciamento dos ciclos PDCA. diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/MetaOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/MetaOpenapi.java new file mode 100644 index 0000000..12ae698 --- /dev/null +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/MetaOpenapi.java @@ -0,0 +1,101 @@ +package br.com.acta.common.config.swagger.openapi; + +import br.com.acta.common.config.swagger.annotation.ApiAuthenticationResponses; +import br.com.acta.common.config.swagger.annotation.ApiBadRequestResponse; +import br.com.acta.common.config.swagger.annotation.ApiBusinessRuleResponse; +import br.com.acta.common.config.swagger.annotation.ApiConflictResponse; +import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; +import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; +import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; +import br.com.acta.dto.core.usuario.UsuarioSummaryResponseDTO; +import br.com.acta.dto.pdca.meta.MetaRequestDTO; +import br.com.acta.dto.pdca.meta.MetaResponseDTO; +import br.com.acta.entity.enums.Prioridade; +import br.com.acta.entity.enums.StatusMeta; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.ArraySchema; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.http.ResponseEntity; + +import java.util.List; +import java.util.Map; + +@Tag(name = "Metas", description = SwaggerOpenapiDescriptions.META_CONTROLLER) +public interface MetaOpenapi { + + @Operation(summary = "Lista as metas de um ciclo") + @ApiResponse(responseCode = "200", description = "Metas encontradas", content = @Content(array = @ArraySchema(schema = @Schema(implementation = MetaResponseDTO.class)))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + ResponseEntity> buscar(Long idCiclo, StatusMeta status, Prioridade prioridade); + + @Operation(summary = "Busca uma meta") + @ApiResponse(responseCode = "200", description = "Meta encontrada", content = @Content(schema = @Schema(implementation = MetaResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + ResponseEntity buscar(Long id); + + @Operation(summary = "Cria uma meta") + @ApiResponse(responseCode = "201", description = "Meta criada", content = @Content(schema = @Schema(implementation = MetaResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiBusinessRuleResponse + @ApiUnsupportedMediaTypeResponse + ResponseEntity inserir(Long idPlanoAcao, MetaRequestDTO dto); + + @Operation(summary = "Atualiza parcialmente uma meta") + @ApiResponse(responseCode = "200", description = "Meta atualizada", content = @Content(schema = @Schema(implementation = MetaResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiUnsupportedMediaTypeResponse + ResponseEntity patch(Long id, Map dto); + + @Operation(summary = "Atualiza o status de uma meta") + @ApiResponse(responseCode = "200", description = "Status atualizado", content = @Content(schema = @Schema(implementation = MetaResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + ResponseEntity patchStatus(Long id, StatusMeta status); + + @Operation(summary = "Exclui uma meta") + @ApiResponse(responseCode = "204", description = "Meta excluída") + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + ResponseEntity delete(Long id); + + @Operation(summary = "Lista os responsáveis por uma meta") + @ApiResponse(responseCode = "200", description = "Responsáveis encontrados", content = @Content(array = @ArraySchema(schema = @Schema(implementation = UsuarioSummaryResponseDTO.class)))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + ResponseEntity> buscarResponsaveis(Long id); + + @Operation(summary = "Adiciona responsáveis a uma meta") + @ApiResponse(responseCode = "201", description = "Responsáveis adicionados", content = @Content(array = @ArraySchema(schema = @Schema(implementation = UsuarioSummaryResponseDTO.class)))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiBusinessRuleResponse + ResponseEntity> adicionarResponsavel(List idsResponsaveis, Long id); + + @Operation(summary = "Remove responsáveis de uma meta") + @ApiResponse(responseCode = "204", description = "Responsáveis removidos") + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiBusinessRuleResponse + ResponseEntity excluirResponsaveis(Long id, List idsResponsaveis); +} diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/PlanoAcaoOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/PlanoAcaoOpenapi.java new file mode 100644 index 0000000..ad725e6 --- /dev/null +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/PlanoAcaoOpenapi.java @@ -0,0 +1,77 @@ +package br.com.acta.common.config.swagger.openapi; + +import br.com.acta.common.config.swagger.annotation.ApiAuthenticationResponses; +import br.com.acta.common.config.swagger.annotation.ApiBadRequestResponse; +import br.com.acta.common.config.swagger.annotation.ApiBusinessRuleResponse; +import br.com.acta.common.config.swagger.annotation.ApiConflictResponse; +import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; +import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; +import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; +import br.com.acta.dto.pdca.plano_acao.PlanoAcaoRequestDTO; +import br.com.acta.dto.pdca.plano_acao.PlanoAcaoResponseDTO; +import br.com.acta.entity.enums.Prioridade; +import br.com.acta.entity.enums.StatusPlanoAcao; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.ArraySchema; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.http.ResponseEntity; + +import java.util.List; +import java.util.Map; + +@Tag(name = "Planos de ação", description = SwaggerOpenapiDescriptions.PLANO_ACAO_CONTROLLER) +public interface PlanoAcaoOpenapi { + + @Operation(summary = "Lista os planos de ação de um ciclo") + @ApiResponse(responseCode = "200", description = "Planos de ação encontrados", content = @Content(array = @ArraySchema(schema = @Schema(implementation = PlanoAcaoResponseDTO.class)))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + ResponseEntity> buscar(Long idCiclo, StatusPlanoAcao status, Prioridade prioridade); + + @Operation(summary = "Busca um plano de ação") + @ApiResponse(responseCode = "200", description = "Plano de ação encontrado", content = @Content(schema = @Schema(implementation = PlanoAcaoResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + ResponseEntity buscar(Long id); + + @Operation(summary = "Cria um plano de ação") + @ApiResponse(responseCode = "201", description = "Plano de ação criado", content = @Content(schema = @Schema(implementation = PlanoAcaoResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiBusinessRuleResponse + @ApiUnsupportedMediaTypeResponse + ResponseEntity inserir(Long idCiclo, PlanoAcaoRequestDTO dto, Long idCriadoPor); + + @Operation(summary = "Atualiza parcialmente um plano de ação") + @ApiResponse(responseCode = "200", description = "Plano de ação atualizado", content = @Content(schema = @Schema(implementation = PlanoAcaoResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiUnsupportedMediaTypeResponse + ResponseEntity patch(Long id, Map campos); + + @Operation(summary = "Atualiza o status de um plano de ação") + @ApiResponse(responseCode = "200", description = "Status atualizado", content = @Content(schema = @Schema(implementation = PlanoAcaoResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiBusinessRuleResponse + ResponseEntity patchStatus(Long id, StatusPlanoAcao status); + + @Operation(summary = "Exclui um plano de ação") + @ApiResponse(responseCode = "204", description = "Plano de ação excluído") + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiBusinessRuleResponse + ResponseEntity excluir(Long id); +} diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/TarefaOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/TarefaOpenapi.java new file mode 100644 index 0000000..7356cc8 --- /dev/null +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/TarefaOpenapi.java @@ -0,0 +1,100 @@ +package br.com.acta.common.config.swagger.openapi; + +import br.com.acta.common.config.swagger.annotation.ApiAuthenticationResponses; +import br.com.acta.common.config.swagger.annotation.ApiBadRequestResponse; +import br.com.acta.common.config.swagger.annotation.ApiBusinessRuleResponse; +import br.com.acta.common.config.swagger.annotation.ApiConflictResponse; +import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; +import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; +import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; +import br.com.acta.dto.pdca.tarefa.TarefaRequestDTO; +import br.com.acta.dto.pdca.tarefa.TarefaResponseDTO; +import br.com.acta.dto.pdca.tarefa.TarefaStatusUpdateDTO; +import br.com.acta.entity.enums.Prioridade; +import br.com.acta.entity.enums.StatusTarefa; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.ArraySchema; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.http.ResponseEntity; + +import java.time.LocalDate; +import java.util.List; +import java.util.Map; + +@Tag(name = "Tarefas", description = SwaggerOpenapiDescriptions.TAREFA_CONTROLLER) +public interface TarefaOpenapi { + + @Operation(summary = "Lista as tarefas de um plano de ação") + @ApiResponse(responseCode = "200", description = "Tarefas encontradas", content = @Content(array = @ArraySchema(schema = @Schema(implementation = TarefaResponseDTO.class)))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + ResponseEntity> buscar(Long idPlanoAcao, StatusTarefa status, Long idResponsavel, Prioridade prioridade); + + @Operation(summary = "Busca uma tarefa") + @ApiResponse(responseCode = "200", description = "Tarefa encontrada", content = @Content(schema = @Schema(implementation = TarefaResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + ResponseEntity buscar(Long id); + + @Operation(summary = "Cria uma tarefa") + @ApiResponse(responseCode = "201", description = "Tarefa criada", content = @Content(schema = @Schema(implementation = TarefaResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiBusinessRuleResponse + @ApiUnsupportedMediaTypeResponse + ResponseEntity inserir(Long idPlanoAcao, TarefaRequestDTO dto); + + @Operation(summary = "Atualiza parcialmente uma tarefa") + @ApiResponse(responseCode = "200", description = "Tarefa atualizada", content = @Content(schema = @Schema(implementation = TarefaResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiBusinessRuleResponse + @ApiUnsupportedMediaTypeResponse + ResponseEntity patch(Long id, Map campos); + + @Operation(summary = "Atualiza o status de uma tarefa") + @ApiResponse(responseCode = "200", description = "Status atualizado", content = @Content(schema = @Schema(implementation = TarefaResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiBusinessRuleResponse + @ApiUnsupportedMediaTypeResponse + ResponseEntity patchStatus(Long id, TarefaStatusUpdateDTO dto); + + @Operation(summary = "Reabre uma tarefa") + @ApiResponse(responseCode = "200", description = "Tarefa reaberta", content = @Content(schema = @Schema(implementation = TarefaResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiBusinessRuleResponse + ResponseEntity reabrir(Long id, LocalDate novoPrazo); + + @Operation(summary = "Reatribui uma tarefa") + @ApiResponse(responseCode = "200", description = "Tarefa reatribuída", content = @Content(schema = @Schema(implementation = TarefaResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiBusinessRuleResponse + ResponseEntity reatribuir(Long id, Long idResponsavel); + + @Operation(summary = "Exclui uma tarefa") + @ApiResponse(responseCode = "204", description = "Tarefa excluída") + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiBusinessRuleResponse + ResponseEntity excluir(Long id); +} diff --git a/src/main/java/br/com/acta/controller/MetaController.java b/src/main/java/br/com/acta/controller/MetaController.java index d3ab8ab..f70f90f 100644 --- a/src/main/java/br/com/acta/controller/MetaController.java +++ b/src/main/java/br/com/acta/controller/MetaController.java @@ -1,5 +1,6 @@ package br.com.acta.controller; +import br.com.acta.common.config.swagger.openapi.MetaOpenapi; import br.com.acta.dto.core.usuario.UsuarioSummaryResponseDTO; import br.com.acta.dto.pdca.meta.MetaRequestDTO; import br.com.acta.dto.pdca.meta.MetaResponseDTO; @@ -22,58 +23,67 @@ @RestController @RequestMapping(value = "api/v1", produces = MediaType.APPLICATION_JSON_VALUE) @RequiredArgsConstructor -public class MetaController { +public class MetaController implements MetaOpenapi { private final MetaService service; @GetMapping("/ciclos/{idCiclo}/meta") + @Override public ResponseEntity> buscar(@PathVariable @Positive Long idCiclo, @RequestParam(required = false) StatusMeta status, @RequestParam(required = false) Prioridade prioridade) { List metas = service.buscar(idCiclo, status, prioridade); return ResponseEntity.ok(metas); } @GetMapping("/meta/{id}") + @Override public ResponseEntity buscar(@PathVariable @Positive Long id) { MetaResponseDTO meta = service.buscar(id); return ResponseEntity.ok(meta); } @PostMapping("/plano-acao/{idPlanoAcao}/meta") + @Override public ResponseEntity inserir(@PathVariable @Positive Long idPlanoAcao, @Valid @RequestBody MetaRequestDTO dto) { MetaResponseDTO meta = service.inserir(idPlanoAcao, dto); return ResponseEntity.status(201).body(meta); } @PatchMapping("/meta/{id}") + @Override public ResponseEntity patch(@PathVariable @Positive Long id, @RequestBody Map dto) { MetaResponseDTO meta = service.patch(id, dto); return ResponseEntity.ok(meta); } @PatchMapping("/meta/{id}/status") + @Override public ResponseEntity patchStatus(@PathVariable @Positive Long id, StatusMeta status) { MetaResponseDTO meta = service.patchStatus(id, status); return ResponseEntity.ok(meta); } @DeleteMapping("/meta/{id}") + @Override public ResponseEntity delete(@PathVariable @Positive Long id) { service.excluir(id); return ResponseEntity.noContent().build(); } @GetMapping("/meta/{id}/responsaveis") + @Override public ResponseEntity> buscarResponsaveis(@PathVariable @Positive Long id) { List responsaveis = service.buscarResponsaveis(id); return ResponseEntity.ok(responsaveis); } @PostMapping("/meta/{id}/responsaveis") + @Override public ResponseEntity> adicionarResponsavel(@RequestParam @NotEmpty List<@Positive Long> idsResponsaveis, @PathVariable Long id) { List responsaveis = service.inserirResponsaveis(id, idsResponsaveis); return ResponseEntity.status(201).body(responsaveis); } @DeleteMapping("/meta/{id}/responsaveis") + @Override public ResponseEntity excluirResponsaveis(@PathVariable Long id, @RequestParam List idsResponsaveis) { service.excluirResponsaveis(id, idsResponsaveis); return ResponseEntity.noContent().build(); diff --git a/src/main/java/br/com/acta/controller/PlanoAcaoController.java b/src/main/java/br/com/acta/controller/PlanoAcaoController.java index 9a06b10..7f174ed 100644 --- a/src/main/java/br/com/acta/controller/PlanoAcaoController.java +++ b/src/main/java/br/com/acta/controller/PlanoAcaoController.java @@ -1,5 +1,6 @@ package br.com.acta.controller; +import br.com.acta.common.config.swagger.openapi.PlanoAcaoOpenapi; import br.com.acta.dto.pdca.plano_acao.PlanoAcaoRequestDTO; import br.com.acta.dto.pdca.plano_acao.PlanoAcaoResponseDTO; import br.com.acta.entity.enums.Prioridade; @@ -20,40 +21,46 @@ @RestController @RequestMapping(value = "api/v1", produces = MediaType.APPLICATION_JSON_VALUE) @RequiredArgsConstructor -public class PlanoAcaoController { +public class PlanoAcaoController implements PlanoAcaoOpenapi { private final PlanoAcaoService service; @GetMapping("/ciclo/{idCiclo}/plano-acao") + @Override public ResponseEntity> buscar(@PathVariable @Positive Long idCiclo, @RequestParam(required = false) StatusPlanoAcao status, @RequestParam(required = false) Prioridade prioridade) { List planos = service.buscar(idCiclo, status, prioridade); return ResponseEntity.ok(planos); } @GetMapping("/plano-acao/{id}") + @Override public ResponseEntity buscar(@PathVariable @Positive Long id) { PlanoAcaoResponseDTO plano = service.buscar(id); return ResponseEntity.ok(plano); } @PostMapping("/ciclo/{idCiclo}/plano-acao") + @Override public ResponseEntity inserir(@PathVariable @Positive Long idCiclo, @Valid @RequestBody PlanoAcaoRequestDTO dto, @RequestParam @Positive Long idCriadoPor) { PlanoAcaoResponseDTO plano = service.inserir(dto, idCiclo, idCriadoPor); return ResponseEntity.status(201).body(plano); } @PatchMapping("/plano-acao/{id}") + @Override public ResponseEntity patch(@PathVariable @Positive Long id, @RequestBody Map campos) { PlanoAcaoResponseDTO plano = service.patch(id, campos); return ResponseEntity.ok(plano); } @PatchMapping("/plano-acao/{id}/status") + @Override public ResponseEntity patchStatus(@PathVariable @Positive Long id, @RequestParam StatusPlanoAcao status) { PlanoAcaoResponseDTO plano = service.patchStatus(id, status); return ResponseEntity.ok(plano); } @DeleteMapping("/plano-acao/{id}") + @Override public ResponseEntity excluir(@PathVariable @Positive Long id) { service.excluir(id); return ResponseEntity.noContent().build(); diff --git a/src/main/java/br/com/acta/controller/TarefaController.java b/src/main/java/br/com/acta/controller/TarefaController.java index 3e4120a..03a2282 100644 --- a/src/main/java/br/com/acta/controller/TarefaController.java +++ b/src/main/java/br/com/acta/controller/TarefaController.java @@ -1,5 +1,6 @@ package br.com.acta.controller; +import br.com.acta.common.config.swagger.openapi.TarefaOpenapi; import br.com.acta.dto.pdca.tarefa.TarefaRequestDTO; import br.com.acta.dto.pdca.tarefa.TarefaResponseDTO; import br.com.acta.dto.pdca.tarefa.TarefaStatusUpdateDTO; @@ -22,52 +23,60 @@ @RestController @RequestMapping(value = "api/v1", produces = MediaType.APPLICATION_JSON_VALUE) @RequiredArgsConstructor -public class TarefaController { +public class TarefaController implements TarefaOpenapi { private final TarefaService service; @GetMapping("/plano-acao/{idPlanoAcao}/tarefa") + @Override public ResponseEntity> buscar(@PathVariable Long idPlanoAcao, @RequestParam(required = false) StatusTarefa status, @RequestParam(required = false) Long idResponsavel, @RequestParam(required = false) Prioridade prioridade) { List tarefas = service.buscar(idPlanoAcao, status, idResponsavel, prioridade); return ResponseEntity.ok(tarefas); } @GetMapping("/tarefa/{id}") + @Override public ResponseEntity buscar(@PathVariable @Positive Long id) { TarefaResponseDTO tarefa = service.buscar(id); return ResponseEntity.ok(tarefa); } @PostMapping("/plano-acao/{idPlanoAcao}/tarefa") + @Override public ResponseEntity inserir(@PathVariable @Positive Long idPlanoAcao, @Valid @RequestBody TarefaRequestDTO dto) { TarefaResponseDTO tarefa = service.inserir(idPlanoAcao, dto); return ResponseEntity.status(201).body(tarefa); } @PatchMapping("/tarefa/{id}") + @Override public ResponseEntity patch(@PathVariable @Positive Long id, @RequestBody Map campos) { TarefaResponseDTO tarefa = service.patch(id, campos); return ResponseEntity.ok(tarefa); } @PatchMapping("/tarefa/{id}/status") + @Override public ResponseEntity patchStatus(@PathVariable @Positive Long id, @RequestBody @Valid TarefaStatusUpdateDTO dto) { TarefaResponseDTO tarefa = service.patchStatus(id, dto); return ResponseEntity.ok(tarefa); } @PatchMapping("/tarefa/{id}/reabrir") + @Override public ResponseEntity reabrir(@PathVariable @Positive Long id, @RequestParam LocalDate novoPrazo) { TarefaResponseDTO tarefa = service.reabrir(id, novoPrazo); return ResponseEntity.ok(tarefa); } @PatchMapping("/tarefa/{id}/reatribuir") + @Override public ResponseEntity reatribuir(@PathVariable @Positive Long id, @RequestParam Long idResponsavel) { TarefaResponseDTO tarefa = service.reatribuir(id, idResponsavel); return ResponseEntity.ok(tarefa); } @DeleteMapping("/tarefa/{id}") + @Override public ResponseEntity excluir(@PathVariable @Positive Long id) { service.excluir(id); return ResponseEntity.noContent().build(); From a52aaa658cc100835361d0a7a0d6fe352070aa65 Mon Sep 17 00:00:00 2001 From: Davi Aliaga Date: Sun, 20 Sep 2026 12:22:07 -0300 Subject: [PATCH 09/16] feat/swagger: adiciona interfaces OpenAPI para gerenciamento de problemas, causas-raiz e planos 5W2H --- .../examples/SwaggerOpenapiDescriptions.java | 32 ++++++++ .../swagger/openapi/CausaRaizOpenapi.java | 74 ++++++++++++++++++ .../swagger/openapi/Plano5W2HOpenapi.java | 59 ++++++++++++++ .../swagger/openapi/ProblemaOpenapi.java | 76 +++++++++++++++++++ .../acta/controller/CausaRaizController.java | 9 ++- .../acta/controller/Plano5W2HController.java | 7 +- .../acta/controller/ProblemaController.java | 9 ++- 7 files changed, 263 insertions(+), 3 deletions(-) create mode 100644 src/main/java/br/com/acta/common/config/swagger/openapi/CausaRaizOpenapi.java create mode 100644 src/main/java/br/com/acta/common/config/swagger/openapi/Plano5W2HOpenapi.java create mode 100644 src/main/java/br/com/acta/common/config/swagger/openapi/ProblemaOpenapi.java diff --git a/src/main/java/br/com/acta/common/config/swagger/examples/SwaggerOpenapiDescriptions.java b/src/main/java/br/com/acta/common/config/swagger/examples/SwaggerOpenapiDescriptions.java index e87a7b8..72a2e2c 100644 --- a/src/main/java/br/com/acta/common/config/swagger/examples/SwaggerOpenapiDescriptions.java +++ b/src/main/java/br/com/acta/common/config/swagger/examples/SwaggerOpenapiDescriptions.java @@ -85,6 +85,38 @@ public final class SwaggerOpenapiDescriptions { - Excluir planos de ação. """; + public static final String PROBLEMA_CONTROLLER = """ + Endpoints responsáveis pelo gerenciamento de problemas dos ciclos PDCA. + + A API permite: + + - Criar e consultar problemas; + - Filtrar problemas por ciclo, status e problema pai; + - Atualizar dados e status; + - Excluir problemas. + """; + + public static final String CAUSA_RAIZ_CONTROLLER = """ + Endpoints responsáveis pelo gerenciamento das causas-raiz dos ciclos PDCA. + + A API permite: + + - Criar e consultar causas-raiz; + - Filtrar causas por ciclo, problema, aceite e indicação principal; + - Atualizar e validar causas-raiz; + - Excluir causas-raiz. + """; + + public static final String PLANO_5W2H_CONTROLLER = """ + Endpoints responsáveis pelo gerenciamento do plano 5W2H de um plano de ação. + + A API permite: + + - Criar e consultar um plano 5W2H; + - Atualizar parcialmente os dados do plano; + - Excluir o plano 5W2H. + """; + public static final String CICLO_CONTROLLER = """ Endpoints responsáveis pelo gerenciamento dos ciclos PDCA. diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/CausaRaizOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/CausaRaizOpenapi.java new file mode 100644 index 0000000..b256f0d --- /dev/null +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/CausaRaizOpenapi.java @@ -0,0 +1,74 @@ +package br.com.acta.common.config.swagger.openapi; + +import br.com.acta.common.config.swagger.annotation.ApiAuthenticationResponses; +import br.com.acta.common.config.swagger.annotation.ApiBadRequestResponse; +import br.com.acta.common.config.swagger.annotation.ApiBusinessRuleResponse; +import br.com.acta.common.config.swagger.annotation.ApiConflictResponse; +import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; +import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; +import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; +import br.com.acta.dto.pdca.causa_raiz.CausaRaizRequestDTO; +import br.com.acta.dto.pdca.causa_raiz.CausaRaizResponseDTO; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.ArraySchema; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.http.ResponseEntity; + +import java.util.List; +import java.util.Map; + +@Tag(name = "Causas-raiz", description = SwaggerOpenapiDescriptions.CAUSA_RAIZ_CONTROLLER) +public interface CausaRaizOpenapi { + + @Operation(summary = "Lista as causas-raiz de um ciclo") + @ApiResponse(responseCode = "200", description = "Causas-raiz encontradas", content = @Content(array = @ArraySchema(schema = @Schema(implementation = CausaRaizResponseDTO.class)))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + ResponseEntity> buscar(Long idCiclo, Boolean aceita, Boolean principal, Long idProblema); + + @Operation(summary = "Busca uma causa-raiz") + @ApiResponse(responseCode = "200", description = "Causa-raiz encontrada", content = @Content(schema = @Schema(implementation = CausaRaizResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + ResponseEntity buscar(Long id); + + @Operation(summary = "Cria uma causa-raiz") + @ApiResponse(responseCode = "201", description = "Causa-raiz criada", content = @Content(schema = @Schema(implementation = CausaRaizResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiBusinessRuleResponse + @ApiUnsupportedMediaTypeResponse + ResponseEntity inserir(Long idCiclo, CausaRaizRequestDTO dto); + + @Operation(summary = "Atualiza parcialmente uma causa-raiz") + @ApiResponse(responseCode = "200", description = "Causa-raiz atualizada", content = @Content(schema = @Schema(implementation = CausaRaizResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiUnsupportedMediaTypeResponse + ResponseEntity patch(Long id, Map campos); + + @Operation(summary = "Valida uma causa-raiz") + @ApiResponse(responseCode = "200", description = "Causa-raiz validada", content = @Content(schema = @Schema(implementation = CausaRaizResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiBusinessRuleResponse + ResponseEntity validar(Long id, Long idUsuario, Boolean aceita); + + @Operation(summary = "Exclui uma causa-raiz") + @ApiResponse(responseCode = "204", description = "Causa-raiz excluída") + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + ResponseEntity excluir(Long id); +} diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/Plano5W2HOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/Plano5W2HOpenapi.java new file mode 100644 index 0000000..1357f2b --- /dev/null +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/Plano5W2HOpenapi.java @@ -0,0 +1,59 @@ +package br.com.acta.common.config.swagger.openapi; + +import br.com.acta.common.config.swagger.annotation.ApiAuthenticationResponses; +import br.com.acta.common.config.swagger.annotation.ApiBadRequestResponse; +import br.com.acta.common.config.swagger.annotation.ApiBusinessRuleResponse; +import br.com.acta.common.config.swagger.annotation.ApiConflictResponse; +import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; +import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; +import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; +import br.com.acta.dto.pdca.plano_5w2h.Plano5W2HRequestDTO; +import br.com.acta.dto.pdca.plano_5w2h.Plano5W2HResponseDTO; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.http.ResponseEntity; + +import java.util.Map; + +@Tag(name = "Planos 5W2H", description = SwaggerOpenapiDescriptions.PLANO_5W2H_CONTROLLER) +public interface Plano5W2HOpenapi { + + @Operation(summary = "Busca o plano 5W2H de um plano de ação") + @ApiResponse(responseCode = "200", description = "Plano 5W2H encontrado", content = @Content(schema = @Schema(implementation = Plano5W2HResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + ResponseEntity buscar(Long idPlanoAcao); + + @Operation(summary = "Cria um plano 5W2H") + @ApiResponse(responseCode = "201", description = "Plano 5W2H criado", content = @Content(schema = @Schema(implementation = Plano5W2HResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiBusinessRuleResponse + @ApiUnsupportedMediaTypeResponse + ResponseEntity inserir(Long idPlanoAcao, Plano5W2HRequestDTO dto); + + @Operation(summary = "Atualiza parcialmente um plano 5W2H") + @ApiResponse(responseCode = "200", description = "Plano 5W2H atualizado", content = @Content(schema = @Schema(implementation = Plano5W2HResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiBusinessRuleResponse + @ApiUnsupportedMediaTypeResponse + ResponseEntity patch(Long id, Map campos); + + @Operation(summary = "Exclui um plano 5W2H") + @ApiResponse(responseCode = "204", description = "Plano 5W2H excluído") + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiBusinessRuleResponse + ResponseEntity excluir(Long id); +} diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/ProblemaOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/ProblemaOpenapi.java new file mode 100644 index 0000000..575c8ef --- /dev/null +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/ProblemaOpenapi.java @@ -0,0 +1,76 @@ +package br.com.acta.common.config.swagger.openapi; + +import br.com.acta.common.config.swagger.annotation.ApiAuthenticationResponses; +import br.com.acta.common.config.swagger.annotation.ApiBadRequestResponse; +import br.com.acta.common.config.swagger.annotation.ApiBusinessRuleResponse; +import br.com.acta.common.config.swagger.annotation.ApiConflictResponse; +import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; +import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; +import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; +import br.com.acta.dto.pdca.problema.ProblemaRequestDTO; +import br.com.acta.dto.pdca.problema.ProblemaResponseDTO; +import br.com.acta.entity.enums.StatusProblema; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.ArraySchema; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.http.ResponseEntity; + +import java.util.List; +import java.util.Map; + +@Tag(name = "Problemas", description = SwaggerOpenapiDescriptions.PROBLEMA_CONTROLLER) +public interface ProblemaOpenapi { + + @Operation(summary = "Lista os problemas de um ciclo") + @ApiResponse(responseCode = "200", description = "Problemas encontrados", content = @Content(array = @ArraySchema(schema = @Schema(implementation = ProblemaResponseDTO.class)))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + ResponseEntity> buscar(Long idCiclo, StatusProblema status, Long idProblemaPai); + + @Operation(summary = "Busca um problema") + @ApiResponse(responseCode = "200", description = "Problema encontrado", content = @Content(schema = @Schema(implementation = ProblemaResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + ResponseEntity buscar(Long id); + + @Operation(summary = "Cria um problema") + @ApiResponse(responseCode = "201", description = "Problema criado", content = @Content(schema = @Schema(implementation = ProblemaResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiBusinessRuleResponse + @ApiUnsupportedMediaTypeResponse + ResponseEntity inserir(Long idCiclo, ProblemaRequestDTO dto); + + @Operation(summary = "Atualiza parcialmente um problema") + @ApiResponse(responseCode = "200", description = "Problema atualizado", content = @Content(schema = @Schema(implementation = ProblemaResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiBusinessRuleResponse + @ApiUnsupportedMediaTypeResponse + ResponseEntity patch(Long id, Map campos); + + @Operation(summary = "Atualiza o status de um problema") + @ApiResponse(responseCode = "200", description = "Status atualizado", content = @Content(schema = @Schema(implementation = ProblemaResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiBusinessRuleResponse + ResponseEntity patchStatus(Long id, StatusProblema status); + + @Operation(summary = "Exclui um problema") + @ApiResponse(responseCode = "204", description = "Problema excluído") + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + ResponseEntity excluir(Long id); +} diff --git a/src/main/java/br/com/acta/controller/CausaRaizController.java b/src/main/java/br/com/acta/controller/CausaRaizController.java index 5478bda..2dcc3fd 100644 --- a/src/main/java/br/com/acta/controller/CausaRaizController.java +++ b/src/main/java/br/com/acta/controller/CausaRaizController.java @@ -1,5 +1,6 @@ package br.com.acta.controller; +import br.com.acta.common.config.swagger.openapi.CausaRaizOpenapi; import br.com.acta.dto.pdca.causa_raiz.CausaRaizRequestDTO; import br.com.acta.dto.pdca.causa_raiz.CausaRaizResponseDTO; import br.com.acta.service.CausaRaizService; @@ -18,40 +19,46 @@ @RestController @RequestMapping(value = "/api/v1", produces = MediaType.APPLICATION_JSON_VALUE) @RequiredArgsConstructor -public class CausaRaizController { +public class CausaRaizController implements CausaRaizOpenapi { private final CausaRaizService service; @GetMapping("/ciclos/{idCiclo}/causas-raiz") + @Override public ResponseEntity> buscar(@PathVariable @Positive Long idCiclo, @RequestParam(required = false) Boolean aceita, @RequestParam(required = false) Boolean principal, @RequestParam(required = false) Long idProblema) { List ciclos = service.buscar(idCiclo, idProblema, aceita, principal); return ResponseEntity.ok(ciclos); } @GetMapping("/causas-raiz/{id}") + @Override public ResponseEntity buscar(@PathVariable @Positive Long id) { CausaRaizResponseDTO ciclo = service.buscar(id); return ResponseEntity.ok(ciclo); } @PostMapping("/ciclos/{idCiclo}/causas-raiz") + @Override public ResponseEntity inserir(@PathVariable @Positive Long idCiclo, @Valid @RequestBody CausaRaizRequestDTO dto) { CausaRaizResponseDTO ciclo = service.inserir(dto, idCiclo); return ResponseEntity.status(201).body(ciclo); } @PatchMapping("/causas-raiz/{id}") + @Override public ResponseEntity patch(@PathVariable @Positive Long id, @RequestBody Map campos) { CausaRaizResponseDTO ciclo = service.patch(id, campos); return ResponseEntity.ok(ciclo); } @PatchMapping("/causas-raiz/{id}/validar") + @Override public ResponseEntity validar(@PathVariable @Positive Long id, @RequestParam @Positive Long idUsuario, @RequestParam Boolean aceita) { CausaRaizResponseDTO ciclo = service.validar(id, idUsuario, aceita); return ResponseEntity.ok(ciclo); } @DeleteMapping("/causas-raiz/{id}") + @Override public ResponseEntity excluir(@PathVariable @Positive Long id) { service.excluir(id); return ResponseEntity.noContent().build(); diff --git a/src/main/java/br/com/acta/controller/Plano5W2HController.java b/src/main/java/br/com/acta/controller/Plano5W2HController.java index acd5671..c06f11c 100644 --- a/src/main/java/br/com/acta/controller/Plano5W2HController.java +++ b/src/main/java/br/com/acta/controller/Plano5W2HController.java @@ -1,5 +1,6 @@ package br.com.acta.controller; +import br.com.acta.common.config.swagger.openapi.Plano5W2HOpenapi; import br.com.acta.dto.pdca.plano_5w2h.Plano5W2HRequestDTO; import br.com.acta.dto.pdca.plano_5w2h.Plano5W2HResponseDTO; import br.com.acta.service.Plano5W2HService; @@ -17,28 +18,32 @@ @RestController @RequestMapping(value = "api/v1", produces = MediaType.APPLICATION_JSON_VALUE) @RequiredArgsConstructor -public class Plano5W2HController { +public class Plano5W2HController implements Plano5W2HOpenapi { private final Plano5W2HService service; @GetMapping("plano-acao/{idPlanoAcao}/5w2h") + @Override public ResponseEntity buscar(@PathVariable @Positive Long idPlanoAcao) { Plano5W2HResponseDTO plano = service.buscarPorPlanoAcao(idPlanoAcao); return ResponseEntity.ok(plano); } @PostMapping("plano-acao/{idPlanoAcao}/5w2h") + @Override public ResponseEntity inserir(@PathVariable @Positive Long idPlanoAcao, @Valid @RequestBody Plano5W2HRequestDTO dto) { Plano5W2HResponseDTO plano = service.inserir(dto, idPlanoAcao); return ResponseEntity.status(201).body(plano); } @PatchMapping("plano-acao/5w2h/{id}") + @Override public ResponseEntity patch(@PathVariable @Positive Long id, @RequestBody Map campos) { Plano5W2HResponseDTO plano = service.patch(id, campos); return ResponseEntity.ok(plano); } @DeleteMapping("plano-acao/5w2h/{id}") + @Override public ResponseEntity excluir(@PathVariable @Positive Long id) { service.excluir(id); return ResponseEntity.noContent().build(); diff --git a/src/main/java/br/com/acta/controller/ProblemaController.java b/src/main/java/br/com/acta/controller/ProblemaController.java index d2c9f72..6dfff3b 100644 --- a/src/main/java/br/com/acta/controller/ProblemaController.java +++ b/src/main/java/br/com/acta/controller/ProblemaController.java @@ -1,5 +1,6 @@ package br.com.acta.controller; +import br.com.acta.common.config.swagger.openapi.ProblemaOpenapi; import br.com.acta.dto.pdca.problema.ProblemaRequestDTO; import br.com.acta.dto.pdca.problema.ProblemaResponseDTO; import br.com.acta.entity.enums.StatusProblema; @@ -19,40 +20,46 @@ @RestController @RequestMapping(value = "api/v1", produces = MediaType.APPLICATION_JSON_VALUE) @RequiredArgsConstructor -public class ProblemaController { +public class ProblemaController implements ProblemaOpenapi { private final ProblemaService service; @GetMapping("/ciclo/{idCiclo}/problema") + @Override public ResponseEntity> buscar(@PathVariable @Positive Long idCiclo, @RequestParam(required = false) StatusProblema status, @RequestParam(required = false) @Positive Long idProblemaPai) { List problemas = service.buscar(idCiclo, status, idProblemaPai); return ResponseEntity.ok(problemas); } @GetMapping("/problema/{id}") + @Override public ResponseEntity buscar(@PathVariable @Positive Long id) { ProblemaResponseDTO problema = service.buscar(id); return ResponseEntity.ok(problema); } @PostMapping("/ciclos/{idCiclo}/problema") + @Override public ResponseEntity inserir(@PathVariable @Positive Long idCiclo, @RequestBody @Valid ProblemaRequestDTO dto) { ProblemaResponseDTO problema = service.inserir(dto, idCiclo); return ResponseEntity.status(201).body(problema); } @PatchMapping("/problema/{id}") + @Override public ResponseEntity patch(@PathVariable @Positive Long id, @RequestBody Map campos) { ProblemaResponseDTO problema = service.patch(id, campos); return ResponseEntity.ok(problema); } @PatchMapping("/problema/{id}/status") + @Override public ResponseEntity patchStatus(@PathVariable @Positive Long id, @RequestParam StatusProblema status) { ProblemaResponseDTO problema = service.patchStatus(id, status); return ResponseEntity.ok(problema); } @DeleteMapping("/problema/{id}") + @Override public ResponseEntity excluir(@PathVariable @Positive Long id) { service.excluir(id); return ResponseEntity.noContent().build(); From 8bdaf5bc2548da4f89245d2393d30518bd8075be Mon Sep 17 00:00:00 2001 From: Davi Aliaga Date: Sun, 20 Sep 2026 12:35:54 -0300 Subject: [PATCH 10/16] =?UTF-8?q?feat/swagger:=20adiciona=20descri=C3=A7?= =?UTF-8?q?=C3=B5es=20da=20OpenAPI=20para=20gerenciamento=20de=20ciclos,?= =?UTF-8?q?=20prioriza=C3=A7=C3=B5es,=20tarefas,=20treinamentos=20e=20aler?= =?UTF-8?q?tas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../examples/SwaggerOpenapiDescriptions.java | 113 ++++++++++++++++++ 1 file changed, 113 insertions(+) diff --git a/src/main/java/br/com/acta/common/config/swagger/examples/SwaggerOpenapiDescriptions.java b/src/main/java/br/com/acta/common/config/swagger/examples/SwaggerOpenapiDescriptions.java index 72a2e2c..862339b 100644 --- a/src/main/java/br/com/acta/common/config/swagger/examples/SwaggerOpenapiDescriptions.java +++ b/src/main/java/br/com/acta/common/config/swagger/examples/SwaggerOpenapiDescriptions.java @@ -117,6 +117,119 @@ public final class SwaggerOpenapiDescriptions { - Excluir o plano 5W2H. """; + public static final String USUARIO_CICLO_CONTROLLER = """ + Endpoints responsáveis pelo vínculo entre usuários e ciclos PDCA. + + A API permite: + + - Consultar os usuários de um ciclo; + - Adicionar e remover usuários; + - Alterar o papel de um usuário no ciclo; + - Substituir o responsável pelo ciclo. + """; + + public static final String PRIORIZACAO_PROBLEMA_CONTROLLER = """ + Endpoints responsáveis pela priorização de problemas. + + A API permite: + + - Consultar e registrar priorizações; + - Atualizar os critérios de uma priorização; + - Aplicar o peso calculado ao problema. + """; + + public static final String TAREFA_DEPENDENTE_CONTROLLER = """ + Endpoints responsáveis pelas dependências entre tarefas. + + A API permite: + + - Consultar as dependências de uma tarefa; + - Adicionar uma tarefa dependente; + - Remover uma dependência. + """; + + public static final String USUARIO_TREINAMENTO_CONTROLLER = """ + Endpoints responsáveis pelo vínculo entre usuários e treinamentos. + + A API permite: + + - Consultar os usuários de um treinamento; + - Vincular usuários; + - Atualizar o status do vínculo; + - Remover usuários do treinamento. + """; + + public static final String TREINAMENTO_CONTROLLER = """ + Endpoints responsáveis pelo gerenciamento de treinamentos dos ciclos PDCA. + + A API permite: + + - Criar e consultar treinamentos; + - Consultar os treinamentos de um ciclo; + - Atualizar parcialmente os dados; + - Excluir treinamentos. + """; + + public static final String VERIFICACAO_RESULTADO_CONTROLLER = """ + Endpoints responsáveis pelo registro e acompanhamento das verificações de resultado. + + A API permite: + + - Criar e consultar verificações; + - Consultar as verificações de um ciclo; + - Atualizar parcialmente os resultados; + - Excluir verificações. + """; + + public static final String EFEITO_SECUNDARIO_CONTROLLER = """ + Endpoints responsáveis pelos efeitos secundários de uma verificação de resultado. + + A API permite: + + - Criar e consultar efeitos secundários; + - Atualizar parcialmente os efeitos; + - Excluir efeitos secundários. + """; + + public static final String ALERTA_PRAZO_CONTROLLER = """ + Endpoints responsáveis pelos alertas de prazo das tarefas. + + A API permite: + + - Consultar o alerta de uma tarefa; + - Marcar um alerta como lido. + """; + + public static final String ENDERECO_EMPRESA_CONTROLLER = """ + Endpoints responsáveis pelos endereços das empresas. + + A API permite: + + - Consultar os endereços de uma empresa; + - Adicionar um endereço; + - Excluir um endereço. + """; + + public static final String EMAIL_CONTROLLER = """ + Endpoints responsáveis pelos e-mails de empresas e colaboradores. + + A API permite: + + - Consultar e-mails; + - Adicionar e-mails; + - Excluir e-mails de empresas e colaboradores. + """; + + public static final String TELEFONE_CONTROLLER = """ + Endpoints responsáveis pelos telefones de empresas e colaboradores. + + A API permite: + + - Consultar telefones; + - Adicionar telefones; + - Excluir telefones de empresas e colaboradores. + """; + public static final String CICLO_CONTROLLER = """ Endpoints responsáveis pelo gerenciamento dos ciclos PDCA. From 3e53bb46d8936edd495642402c245e6cc4b0c8fe Mon Sep 17 00:00:00 2001 From: Davi Aliaga Date: Sun, 20 Sep 2026 12:38:58 -0300 Subject: [PATCH 11/16] =?UTF-8?q?feat/swagger:=20adiciona=20interfaces=20O?= =?UTF-8?q?penAPI=20para=20gerenciamento=20de=20prioriza=C3=A7=C3=B5es,=20?= =?UTF-8?q?depend=C3=AAncias=20de=20tarefas,=20usu=C3=A1rios=20de=20ciclos?= =?UTF-8?q?=20e=20treinamentos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../openapi/PriorizacaoProblemaOpenapi.java | 61 ++++++++++++++++ .../openapi/TarefaDependenteOpenapi.java | 48 +++++++++++++ .../swagger/openapi/UsuarioCicloOpenapi.java | 69 +++++++++++++++++++ .../openapi/UsuarioTreinamentoOpenapi.java | 59 ++++++++++++++++ .../PriorizacaoProblemaController.java | 7 +- .../TarefaDependenteController.java | 6 +- .../controller/UsuarioCicloController.java | 8 ++- .../UsuarioTreinamentoController.java | 7 +- 8 files changed, 261 insertions(+), 4 deletions(-) create mode 100644 src/main/java/br/com/acta/common/config/swagger/openapi/PriorizacaoProblemaOpenapi.java create mode 100644 src/main/java/br/com/acta/common/config/swagger/openapi/TarefaDependenteOpenapi.java create mode 100644 src/main/java/br/com/acta/common/config/swagger/openapi/UsuarioCicloOpenapi.java create mode 100644 src/main/java/br/com/acta/common/config/swagger/openapi/UsuarioTreinamentoOpenapi.java diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/PriorizacaoProblemaOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/PriorizacaoProblemaOpenapi.java new file mode 100644 index 0000000..b4d917c --- /dev/null +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/PriorizacaoProblemaOpenapi.java @@ -0,0 +1,61 @@ +package br.com.acta.common.config.swagger.openapi; + +import br.com.acta.common.config.swagger.annotation.ApiAuthenticationResponses; +import br.com.acta.common.config.swagger.annotation.ApiBadRequestResponse; +import br.com.acta.common.config.swagger.annotation.ApiBusinessRuleResponse; +import br.com.acta.common.config.swagger.annotation.ApiConflictResponse; +import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; +import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; +import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; +import br.com.acta.dto.join.priorizacao_problema.PriorizacaoProblemaRequestDTO; +import br.com.acta.dto.join.priorizacao_problema.PriorizacaoProblemaResponseDTO; +import br.com.acta.dto.pdca.problema.ProblemaResponseDTO; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.ArraySchema; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.http.ResponseEntity; + +import java.util.List; +import java.util.Map; + +@Tag(name = "Priorização de problemas", description = SwaggerOpenapiDescriptions.PRIORIZACAO_PROBLEMA_CONTROLLER) +public interface PriorizacaoProblemaOpenapi { + + @Operation(summary = "Lista as priorizações de um problema") + @ApiResponse(responseCode = "200", description = "Priorizações encontradas", content = @Content(array = @ArraySchema(schema = @Schema(implementation = PriorizacaoProblemaResponseDTO.class)))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiBusinessRuleResponse + ResponseEntity> buscar(Long idProblema, Long idUsuario); + + @Operation(summary = "Cria uma priorização") + @ApiResponse(responseCode = "201", description = "Priorização criada", content = @Content(schema = @Schema(implementation = PriorizacaoProblemaResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiBusinessRuleResponse + @ApiUnsupportedMediaTypeResponse + ResponseEntity inserir(Long idProblema, PriorizacaoProblemaRequestDTO dto); + + @Operation(summary = "Atualiza uma priorização") + @ApiResponse(responseCode = "200", description = "Priorização atualizada", content = @Content(schema = @Schema(implementation = PriorizacaoProblemaResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiUnsupportedMediaTypeResponse + ResponseEntity patch(Long idProblema, Long idUsuario, Map campos); + + @Operation(summary = "Aplica o peso da priorização ao problema") + @ApiResponse(responseCode = "200", description = "Peso aplicado", content = @Content(schema = @Schema(implementation = ProblemaResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + ResponseEntity aplicarPeso(Long idProblema); +} diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/TarefaDependenteOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/TarefaDependenteOpenapi.java new file mode 100644 index 0000000..8108e6e --- /dev/null +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/TarefaDependenteOpenapi.java @@ -0,0 +1,48 @@ +package br.com.acta.common.config.swagger.openapi; + +import br.com.acta.common.config.swagger.annotation.ApiAuthenticationResponses; +import br.com.acta.common.config.swagger.annotation.ApiBadRequestResponse; +import br.com.acta.common.config.swagger.annotation.ApiBusinessRuleResponse; +import br.com.acta.common.config.swagger.annotation.ApiConflictResponse; +import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; +import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; +import br.com.acta.dto.pdca.tarefa.TarefaResponseDTO; +import br.com.acta.dto.pdca.tarefa.TarefaSummaryResponseDTO; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.ArraySchema; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.http.ResponseEntity; + +import java.util.List; + +@Tag(name = "Dependências de tarefas", description = SwaggerOpenapiDescriptions.TAREFA_DEPENDENTE_CONTROLLER) +public interface TarefaDependenteOpenapi { + + @Operation(summary = "Lista as dependências de uma tarefa") + @ApiResponse(responseCode = "200", description = "Dependências encontradas", content = @Content(array = @ArraySchema(schema = @Schema(implementation = TarefaSummaryResponseDTO.class)))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + ResponseEntity> buscar(Long id); + + @Operation(summary = "Adiciona uma dependência à tarefa") + @ApiResponse(responseCode = "201", description = "Dependência adicionada", content = @Content(schema = @Schema(implementation = TarefaResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiBusinessRuleResponse + ResponseEntity adicionar(Long id, Long idDependente); + + @Operation(summary = "Remove uma dependência da tarefa") + @ApiResponse(responseCode = "204", description = "Dependência removida") + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiBusinessRuleResponse + ResponseEntity remover(Long id, Long idDependente); +} diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/UsuarioCicloOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/UsuarioCicloOpenapi.java new file mode 100644 index 0000000..af56a70 --- /dev/null +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/UsuarioCicloOpenapi.java @@ -0,0 +1,69 @@ +package br.com.acta.common.config.swagger.openapi; + +import br.com.acta.common.config.swagger.annotation.ApiAuthenticationResponses; +import br.com.acta.common.config.swagger.annotation.ApiBadRequestResponse; +import br.com.acta.common.config.swagger.annotation.ApiBusinessRuleResponse; +import br.com.acta.common.config.swagger.annotation.ApiConflictResponse; +import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; +import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; +import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; +import br.com.acta.dto.join.usuario_ciclo.UsuarioCicloRequestDTO; +import br.com.acta.dto.join.usuario_ciclo.UsuarioCicloResponseDTO; +import br.com.acta.entity.enums.PapelCiclo; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.ArraySchema; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.http.ResponseEntity; + +import java.util.List; + +@Tag(name = "Usuários do ciclo", description = SwaggerOpenapiDescriptions.USUARIO_CICLO_CONTROLLER) +public interface UsuarioCicloOpenapi { + + @Operation(summary = "Lista os usuários de um ciclo") + @ApiResponse(responseCode = "200", description = "Usuários encontrados", content = @Content(array = @ArraySchema(schema = @Schema(implementation = UsuarioCicloResponseDTO.class)))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + ResponseEntity> buscar(Long idCiclo); + + @Operation(summary = "Adiciona um usuário ao ciclo") + @ApiResponse(responseCode = "201", description = "Usuário adicionado", content = @Content(schema = @Schema(implementation = UsuarioCicloResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiBusinessRuleResponse + @ApiUnsupportedMediaTypeResponse + ResponseEntity inserir(Long idCiclo, UsuarioCicloRequestDTO dto); + + @Operation(summary = "Atualiza o papel de um usuário no ciclo") + @ApiResponse(responseCode = "200", description = "Papel atualizado", content = @Content(schema = @Schema(implementation = UsuarioCicloResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiBusinessRuleResponse + ResponseEntity patch(Long idCiclo, Long idUsuario, PapelCiclo papelCiclo); + + @Operation(summary = "Substitui o responsável pelo ciclo") + @ApiResponse(responseCode = "200", description = "Responsável substituído", content = @Content(array = @ArraySchema(schema = @Schema(implementation = UsuarioCicloResponseDTO.class)))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiBusinessRuleResponse + ResponseEntity> substituirResponsavel(Long idCiclo, Long idUsuarioAntigo, Long idUsuarioNovo); + + @Operation(summary = "Remove um usuário do ciclo") + @ApiResponse(responseCode = "204", description = "Usuário removido") + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiBusinessRuleResponse + ResponseEntity excluir(Long idCiclo, Long idUsuario); +} diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/UsuarioTreinamentoOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/UsuarioTreinamentoOpenapi.java new file mode 100644 index 0000000..e345975 --- /dev/null +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/UsuarioTreinamentoOpenapi.java @@ -0,0 +1,59 @@ +package br.com.acta.common.config.swagger.openapi; + +import br.com.acta.common.config.swagger.annotation.ApiAuthenticationResponses; +import br.com.acta.common.config.swagger.annotation.ApiBadRequestResponse; +import br.com.acta.common.config.swagger.annotation.ApiBusinessRuleResponse; +import br.com.acta.common.config.swagger.annotation.ApiConflictResponse; +import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; +import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; +import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; +import br.com.acta.dto.join.usuario_treinamento.UsuarioTreinamentoRequestDTO; +import br.com.acta.dto.join.usuario_treinamento.UsuarioTreinamentoResponseDTO; +import br.com.acta.entity.enums.StatusTreinamento; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.ArraySchema; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.http.ResponseEntity; + +import java.util.List; + +@Tag(name = "Usuários de treinamentos", description = SwaggerOpenapiDescriptions.USUARIO_TREINAMENTO_CONTROLLER) +public interface UsuarioTreinamentoOpenapi { + + @Operation(summary = "Lista os usuários de um treinamento") + @ApiResponse(responseCode = "200", description = "Usuários encontrados", content = @Content(array = @ArraySchema(schema = @Schema(implementation = UsuarioTreinamentoResponseDTO.class)))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + ResponseEntity> buscar(Long id); + + @Operation(summary = "Adiciona um usuário ao treinamento") + @ApiResponse(responseCode = "201", description = "Usuário adicionado", content = @Content(schema = @Schema(implementation = UsuarioTreinamentoResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiBusinessRuleResponse + @ApiUnsupportedMediaTypeResponse + ResponseEntity inserir(Long id, UsuarioTreinamentoRequestDTO dto); + + @Operation(summary = "Atualiza o status do usuário no treinamento") + @ApiResponse(responseCode = "200", description = "Status atualizado", content = @Content(schema = @Schema(implementation = UsuarioTreinamentoResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiBusinessRuleResponse + ResponseEntity patchStatus(Long id, Long idUsuario, StatusTreinamento status); + + @Operation(summary = "Remove um usuário do treinamento") + @ApiResponse(responseCode = "204", description = "Usuário removido") + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiBusinessRuleResponse + ResponseEntity excluir(Long id, Long idUsuario); +} diff --git a/src/main/java/br/com/acta/controller/PriorizacaoProblemaController.java b/src/main/java/br/com/acta/controller/PriorizacaoProblemaController.java index 334aba7..9b68c8c 100644 --- a/src/main/java/br/com/acta/controller/PriorizacaoProblemaController.java +++ b/src/main/java/br/com/acta/controller/PriorizacaoProblemaController.java @@ -1,5 +1,6 @@ package br.com.acta.controller; +import br.com.acta.common.config.swagger.openapi.PriorizacaoProblemaOpenapi; import br.com.acta.dto.join.priorizacao_problema.PriorizacaoProblemaRequestDTO; import br.com.acta.dto.join.priorizacao_problema.PriorizacaoProblemaResponseDTO; import br.com.acta.dto.pdca.problema.ProblemaResponseDTO; @@ -19,28 +20,32 @@ @RestController @RequestMapping(value = "api/v1/problema/{idProblema}/priorizacao", produces = MediaType.APPLICATION_JSON_VALUE) @RequiredArgsConstructor -public class PriorizacaoProblemaController { +public class PriorizacaoProblemaController implements PriorizacaoProblemaOpenapi { private final PriorizacaoProblemaService service; @GetMapping + @Override public ResponseEntity> buscar(@PathVariable @Positive Long idProblema, @RequestParam(required = false) Long idUsuario) { List priorizacao = service.buscar(idProblema, idUsuario); return ResponseEntity.ok(priorizacao); } @PostMapping + @Override public ResponseEntity inserir(@PathVariable @Positive Long idProblema, @RequestBody @Valid PriorizacaoProblemaRequestDTO dto) { PriorizacaoProblemaResponseDTO priorizacao = service.inserir(idProblema, dto); return ResponseEntity.status(201).body(priorizacao); } @PatchMapping("/{idUsuario}") + @Override public ResponseEntity patch(@PathVariable @Positive Long idProblema, @PathVariable @Positive Long idUsuario, @RequestBody Map campos) { PriorizacaoProblemaResponseDTO priorizacao = service.patch(idProblema, idUsuario, campos); return ResponseEntity.ok(priorizacao); } @PatchMapping("/aplicar-peso") + @Override public ResponseEntity aplicarPeso(@PathVariable @Positive Long idProblema){ ProblemaResponseDTO priorizacao = service.aplicarPeso(idProblema); return ResponseEntity.ok(priorizacao); diff --git a/src/main/java/br/com/acta/controller/TarefaDependenteController.java b/src/main/java/br/com/acta/controller/TarefaDependenteController.java index fbc6712..00e70c0 100644 --- a/src/main/java/br/com/acta/controller/TarefaDependenteController.java +++ b/src/main/java/br/com/acta/controller/TarefaDependenteController.java @@ -1,5 +1,6 @@ package br.com.acta.controller; +import br.com.acta.common.config.swagger.openapi.TarefaDependenteOpenapi; import br.com.acta.dto.pdca.tarefa.TarefaResponseDTO; import br.com.acta.dto.pdca.tarefa.TarefaSummaryResponseDTO; import br.com.acta.service.TarefaService; @@ -16,22 +17,25 @@ @RestController @RequestMapping(value = "api/v1/tarefa/{id}/dependencia", produces = MediaType.APPLICATION_JSON_VALUE) @RequiredArgsConstructor -public class TarefaDependenteController { +public class TarefaDependenteController implements TarefaDependenteOpenapi { private final TarefaService service; @GetMapping + @Override public ResponseEntity> buscar(@PathVariable @Positive Long id) { List dependentes = service.buscarDependentes(id); return ResponseEntity.ok(dependentes); } @PostMapping("/{idDependente}") + @Override public ResponseEntity adicionar(@PathVariable @Positive Long id, @PathVariable @Positive Long idDependente){ TarefaResponseDTO tarefa = service.adicionarDependencia(id, idDependente); return ResponseEntity.status(201).body(tarefa); } @DeleteMapping("/{idDependente}") + @Override public ResponseEntity remover(@PathVariable @Positive Long id, @PathVariable @Positive Long idDependente){ service.removerDependencia(id, idDependente); return ResponseEntity.noContent().build(); diff --git a/src/main/java/br/com/acta/controller/UsuarioCicloController.java b/src/main/java/br/com/acta/controller/UsuarioCicloController.java index 6bc7555..c381db9 100644 --- a/src/main/java/br/com/acta/controller/UsuarioCicloController.java +++ b/src/main/java/br/com/acta/controller/UsuarioCicloController.java @@ -1,5 +1,6 @@ package br.com.acta.controller; +import br.com.acta.common.config.swagger.openapi.UsuarioCicloOpenapi; import br.com.acta.dto.join.usuario_ciclo.UsuarioCicloRequestDTO; import br.com.acta.dto.join.usuario_ciclo.UsuarioCicloResponseDTO; import br.com.acta.entity.enums.PapelCiclo; @@ -18,34 +19,39 @@ @RestController @RequestMapping(value = "api/v1/ciclo/{idCiclo}/usuario", produces = MediaType.APPLICATION_JSON_VALUE) @RequiredArgsConstructor -public class UsuarioCicloController { +public class UsuarioCicloController implements UsuarioCicloOpenapi { private final UsuarioCicloService service; @GetMapping + @Override public ResponseEntity> buscar(@PathVariable @Positive Long idCiclo){ List usuario = service.buscarPorCiclo(idCiclo); return ResponseEntity.ok(usuario); } @PostMapping + @Override public ResponseEntity inserir(@PathVariable @Positive Long idCiclo, @RequestBody @Valid UsuarioCicloRequestDTO dto){ UsuarioCicloResponseDTO usuario = service.inserir(dto, idCiclo); return ResponseEntity.status(201).body(usuario); } @PatchMapping("/{idUsuario}") + @Override public ResponseEntity patch(@PathVariable @Positive Long idCiclo, @PathVariable @Positive Long idUsuario, @RequestParam PapelCiclo papelCiclo) { UsuarioCicloResponseDTO usuario = service.patch(idUsuario, idCiclo, papelCiclo); return ResponseEntity.ok(usuario); } @PatchMapping("/substituir-responsavel") + @Override public ResponseEntity> substituirResponsavel(@PathVariable @Positive Long idCiclo, @RequestParam @Positive Long idUsuarioAntigo, @RequestParam @Positive Long idUsuarioNovo) { List usuarios = service.substituirResponsavel(idCiclo, idUsuarioAntigo, idUsuarioNovo); return ResponseEntity.ok(usuarios); } @DeleteMapping("/{idUsuario}") + @Override public ResponseEntity excluir(@PathVariable @Positive Long idCiclo, @PathVariable @Positive Long idUsuario) { service.excluir(idUsuario, idCiclo); return ResponseEntity.noContent().build(); diff --git a/src/main/java/br/com/acta/controller/UsuarioTreinamentoController.java b/src/main/java/br/com/acta/controller/UsuarioTreinamentoController.java index 5e07669..f0a367a 100644 --- a/src/main/java/br/com/acta/controller/UsuarioTreinamentoController.java +++ b/src/main/java/br/com/acta/controller/UsuarioTreinamentoController.java @@ -1,5 +1,6 @@ package br.com.acta.controller; +import br.com.acta.common.config.swagger.openapi.UsuarioTreinamentoOpenapi; import br.com.acta.dto.join.usuario_treinamento.UsuarioTreinamentoRequestDTO; import br.com.acta.dto.join.usuario_treinamento.UsuarioTreinamentoResponseDTO; import br.com.acta.entity.enums.StatusTreinamento; @@ -16,28 +17,32 @@ @RestController @RequestMapping(value = "api/v1/treinamento/{id}/usuario", produces = MediaType.APPLICATION_JSON_VALUE) @RequiredArgsConstructor -public class UsuarioTreinamentoController { +public class UsuarioTreinamentoController implements UsuarioTreinamentoOpenapi { private final UsuarioTreinamentoService service; @GetMapping + @Override public ResponseEntity> buscar(@PathVariable @Positive Long id) { List usuarios = service.buscar(id); return ResponseEntity.ok(usuarios); } @PostMapping + @Override public ResponseEntity inserir(@PathVariable @Positive Long id, @RequestBody @Valid UsuarioTreinamentoRequestDTO dto){ UsuarioTreinamentoResponseDTO usuario = service.inserir(id, dto); return ResponseEntity.status(201).body(usuario); } @PatchMapping("/{idUsuario}") + @Override public ResponseEntity patchStatus(@PathVariable @Positive Long id, @PathVariable @Positive Long idUsuario, @RequestParam StatusTreinamento status){ UsuarioTreinamentoResponseDTO usuario = service.patchStatus(id, idUsuario, status); return ResponseEntity.ok(usuario); } @DeleteMapping("/{idUsuario}") + @Override public ResponseEntity excluir(@PathVariable @Positive Long id, @PathVariable @Positive Long idUsuario){ service.excluir(id, idUsuario); return ResponseEntity.noContent().build(); From acaa165c57bf79637f91221b8b3b2d95c36eaf74 Mon Sep 17 00:00:00 2001 From: Davi Aliaga Date: Sun, 20 Sep 2026 12:41:02 -0300 Subject: [PATCH 12/16] =?UTF-8?q?feat/swagger:=20adiciona=20interfaces=20O?= =?UTF-8?q?penAPI=20para=20gerenciamento=20de=20alertas=20de=20prazo,=20ef?= =?UTF-8?q?eitos=20secund=C3=A1rios,=20treinamentos=20e=20verifica=C3=A7?= =?UTF-8?q?=C3=B5es=20de=20resultado?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../swagger/openapi/AlertaPrazoOpenapi.java | 35 ++++++++++ .../openapi/EfeitoSecundarioOpenapi.java | 61 +++++++++++++++++ .../swagger/openapi/TreinamentoOpenapi.java | 67 ++++++++++++++++++ .../openapi/VerificacaoResultadoOpenapi.java | 68 +++++++++++++++++++ .../controller/AlertaPrazoController.java | 5 +- .../EfeitoSecundarioController.java | 7 +- .../controller/TreinamentoController.java | 8 ++- .../VerificacaoResultadoController.java | 8 ++- 8 files changed, 255 insertions(+), 4 deletions(-) create mode 100644 src/main/java/br/com/acta/common/config/swagger/openapi/AlertaPrazoOpenapi.java create mode 100644 src/main/java/br/com/acta/common/config/swagger/openapi/EfeitoSecundarioOpenapi.java create mode 100644 src/main/java/br/com/acta/common/config/swagger/openapi/TreinamentoOpenapi.java create mode 100644 src/main/java/br/com/acta/common/config/swagger/openapi/VerificacaoResultadoOpenapi.java diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/AlertaPrazoOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/AlertaPrazoOpenapi.java new file mode 100644 index 0000000..08bc31f --- /dev/null +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/AlertaPrazoOpenapi.java @@ -0,0 +1,35 @@ +package br.com.acta.common.config.swagger.openapi; + +import br.com.acta.common.config.swagger.annotation.ApiAuthenticationResponses; +import br.com.acta.common.config.swagger.annotation.ApiBadRequestResponse; +import br.com.acta.common.config.swagger.annotation.ApiBusinessRuleResponse; +import br.com.acta.common.config.swagger.annotation.ApiConflictResponse; +import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; +import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; +import br.com.acta.dto.pdca.alerta_prazo.AlertaPrazoResponseDTO; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.http.ResponseEntity; + +@Tag(name = "Alertas de prazo", description = SwaggerOpenapiDescriptions.ALERTA_PRAZO_CONTROLLER) +public interface AlertaPrazoOpenapi { + + @Operation(summary = "Busca o alerta de prazo de uma tarefa") + @ApiResponse(responseCode = "200", description = "Alerta encontrado", content = @Content(schema = @Schema(implementation = AlertaPrazoResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + ResponseEntity buscar(Long idTarefa); + + @Operation(summary = "Marca um alerta como lido") + @ApiResponse(responseCode = "200", description = "Alerta marcado como lido", content = @Content(schema = @Schema(implementation = AlertaPrazoResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiBusinessRuleResponse + ResponseEntity marcarLido(Long idTarefa, Long id, Long idUsuario); +} diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/EfeitoSecundarioOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/EfeitoSecundarioOpenapi.java new file mode 100644 index 0000000..925c155 --- /dev/null +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/EfeitoSecundarioOpenapi.java @@ -0,0 +1,61 @@ +package br.com.acta.common.config.swagger.openapi; + +import br.com.acta.common.config.swagger.annotation.ApiAuthenticationResponses; +import br.com.acta.common.config.swagger.annotation.ApiBadRequestResponse; +import br.com.acta.common.config.swagger.annotation.ApiBusinessRuleResponse; +import br.com.acta.common.config.swagger.annotation.ApiConflictResponse; +import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; +import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; +import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; +import br.com.acta.dto.pdca.efeito_secundario.EfeitoSecundarioRequestDTO; +import br.com.acta.dto.pdca.efeito_secundario.EfeitoSecundarioResponseDTO; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.ArraySchema; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.http.ResponseEntity; + +import java.util.List; +import java.util.Map; + +@Tag(name = "Efeitos secundários", description = SwaggerOpenapiDescriptions.EFEITO_SECUNDARIO_CONTROLLER) +public interface EfeitoSecundarioOpenapi { + + @Operation(summary = "Lista os efeitos secundários de uma verificação") + @ApiResponse(responseCode = "200", description = "Efeitos secundários encontrados", content = @Content(array = @ArraySchema(schema = @Schema(implementation = EfeitoSecundarioResponseDTO.class)))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + ResponseEntity> buscarEfeitosSecundarios(Long idResultado); + + @Operation(summary = "Cria um efeito secundário") + @ApiResponse(responseCode = "201", description = "Efeito secundário criado", content = @Content(schema = @Schema(implementation = EfeitoSecundarioResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiBusinessRuleResponse + @ApiUnsupportedMediaTypeResponse + ResponseEntity inserir(Long idResultado, EfeitoSecundarioRequestDTO dto); + + @Operation(summary = "Atualiza parcialmente um efeito secundário") + @ApiResponse(responseCode = "200", description = "Efeito secundário atualizado", content = @Content(schema = @Schema(implementation = EfeitoSecundarioResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiBusinessRuleResponse + @ApiUnsupportedMediaTypeResponse + ResponseEntity patch(Long idResultado, Long idEfeitoSecundario, Map campos); + + @Operation(summary = "Exclui um efeito secundário") + @ApiResponse(responseCode = "204", description = "Efeito secundário excluído") + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiBusinessRuleResponse + ResponseEntity excluir(Long idResultado, Long idEfeitoSecundario); +} diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/TreinamentoOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/TreinamentoOpenapi.java new file mode 100644 index 0000000..4a5905a --- /dev/null +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/TreinamentoOpenapi.java @@ -0,0 +1,67 @@ +package br.com.acta.common.config.swagger.openapi; + +import br.com.acta.common.config.swagger.annotation.ApiAuthenticationResponses; +import br.com.acta.common.config.swagger.annotation.ApiBadRequestResponse; +import br.com.acta.common.config.swagger.annotation.ApiBusinessRuleResponse; +import br.com.acta.common.config.swagger.annotation.ApiConflictResponse; +import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; +import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; +import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; +import br.com.acta.dto.pdca.treinamento.TreinamentoRequestDTO; +import br.com.acta.dto.pdca.treinamento.TreinamentoResponseDTO; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.ArraySchema; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.http.ResponseEntity; + +import java.util.List; +import java.util.Map; + +@Tag(name = "Treinamentos", description = SwaggerOpenapiDescriptions.TREINAMENTO_CONTROLLER) +public interface TreinamentoOpenapi { + + @Operation(summary = "Lista os treinamentos de um ciclo") + @ApiResponse(responseCode = "200", description = "Treinamentos encontrados", content = @Content(array = @ArraySchema(schema = @Schema(implementation = TreinamentoResponseDTO.class)))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + ResponseEntity> buscarTreinamentos(Long idCiclo); + + @Operation(summary = "Busca um treinamento") + @ApiResponse(responseCode = "200", description = "Treinamento encontrado", content = @Content(schema = @Schema(implementation = TreinamentoResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + ResponseEntity buscar(Long id); + + @Operation(summary = "Cria um treinamento") + @ApiResponse(responseCode = "201", description = "Treinamento criado", content = @Content(schema = @Schema(implementation = TreinamentoResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiBusinessRuleResponse + @ApiUnsupportedMediaTypeResponse + ResponseEntity inserir(Long idCiclo, TreinamentoRequestDTO dto); + + @Operation(summary = "Atualiza parcialmente um treinamento") + @ApiResponse(responseCode = "200", description = "Treinamento atualizado", content = @Content(schema = @Schema(implementation = TreinamentoResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiUnsupportedMediaTypeResponse + ResponseEntity patch(Long id, Map campos); + + @Operation(summary = "Exclui um treinamento") + @ApiResponse(responseCode = "204", description = "Treinamento excluído") + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiBusinessRuleResponse + ResponseEntity excluir(Long id); +} diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/VerificacaoResultadoOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/VerificacaoResultadoOpenapi.java new file mode 100644 index 0000000..c045bcc --- /dev/null +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/VerificacaoResultadoOpenapi.java @@ -0,0 +1,68 @@ +package br.com.acta.common.config.swagger.openapi; + +import br.com.acta.common.config.swagger.annotation.ApiAuthenticationResponses; +import br.com.acta.common.config.swagger.annotation.ApiBadRequestResponse; +import br.com.acta.common.config.swagger.annotation.ApiBusinessRuleResponse; +import br.com.acta.common.config.swagger.annotation.ApiConflictResponse; +import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; +import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; +import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; +import br.com.acta.dto.pdca.verificacao_resultado.VerificacaoResultadoRequestDTO; +import br.com.acta.dto.pdca.verificacao_resultado.VerificacaoResultadoResponseDTO; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.ArraySchema; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.http.ResponseEntity; + +import java.util.List; +import java.util.Map; + +@Tag(name = "Verificações de resultado", description = SwaggerOpenapiDescriptions.VERIFICACAO_RESULTADO_CONTROLLER) +public interface VerificacaoResultadoOpenapi { + + @Operation(summary = "Lista as verificações de um ciclo") + @ApiResponse(responseCode = "200", description = "Verificações encontradas", content = @Content(array = @ArraySchema(schema = @Schema(implementation = VerificacaoResultadoResponseDTO.class)))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + ResponseEntity> buscar(Long idCiclo); + + @Operation(summary = "Busca uma verificação") + @ApiResponse(responseCode = "200", description = "Verificação encontrada", content = @Content(schema = @Schema(implementation = VerificacaoResultadoResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + ResponseEntity buscarPorId(Long id); + + @Operation(summary = "Cria uma verificação") + @ApiResponse(responseCode = "201", description = "Verificação criada", content = @Content(schema = @Schema(implementation = VerificacaoResultadoResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiBusinessRuleResponse + @ApiUnsupportedMediaTypeResponse + ResponseEntity inserir(Long idCiclo, Long idCriadoPor, VerificacaoResultadoRequestDTO dto); + + @Operation(summary = "Atualiza parcialmente uma verificação") + @ApiResponse(responseCode = "200", description = "Verificação atualizada", content = @Content(schema = @Schema(implementation = VerificacaoResultadoResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiBusinessRuleResponse + @ApiUnsupportedMediaTypeResponse + ResponseEntity patch(Long id, Map campos); + + @Operation(summary = "Exclui uma verificação") + @ApiResponse(responseCode = "204", description = "Verificação excluída") + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiBusinessRuleResponse + ResponseEntity excluir(Long id); +} diff --git a/src/main/java/br/com/acta/controller/AlertaPrazoController.java b/src/main/java/br/com/acta/controller/AlertaPrazoController.java index 0c13cfe..fecf2c9 100644 --- a/src/main/java/br/com/acta/controller/AlertaPrazoController.java +++ b/src/main/java/br/com/acta/controller/AlertaPrazoController.java @@ -1,5 +1,6 @@ package br.com.acta.controller; +import br.com.acta.common.config.swagger.openapi.AlertaPrazoOpenapi; import br.com.acta.dto.pdca.alerta_prazo.AlertaPrazoResponseDTO; import br.com.acta.service.AlertaPrazoService; import jakarta.validation.constraints.Positive; @@ -13,16 +14,18 @@ @RestController @RequestMapping(value = "/api/v1/tarefa/{idTarefa}/alerta", produces = MediaType.APPLICATION_JSON_VALUE) @RequiredArgsConstructor -public class AlertaPrazoController { +public class AlertaPrazoController implements AlertaPrazoOpenapi { private final AlertaPrazoService service; @GetMapping + @Override public ResponseEntity buscar(@PathVariable @Positive Long idTarefa) { AlertaPrazoResponseDTO alerta = service.buscar(idTarefa); return ResponseEntity.ok(alerta); } @PatchMapping("/{id}") + @Override public ResponseEntity marcarLido(@PathVariable @Positive Long idTarefa, @PathVariable @Positive Long id, @RequestParam @Positive Long idUsuario) { AlertaPrazoResponseDTO alerta = service.marcarLido(idTarefa, id, idUsuario); return ResponseEntity.ok(alerta); diff --git a/src/main/java/br/com/acta/controller/EfeitoSecundarioController.java b/src/main/java/br/com/acta/controller/EfeitoSecundarioController.java index c3c0bd4..59320c3 100644 --- a/src/main/java/br/com/acta/controller/EfeitoSecundarioController.java +++ b/src/main/java/br/com/acta/controller/EfeitoSecundarioController.java @@ -1,5 +1,6 @@ package br.com.acta.controller; +import br.com.acta.common.config.swagger.openapi.EfeitoSecundarioOpenapi; import br.com.acta.dto.pdca.efeito_secundario.EfeitoSecundarioRequestDTO; import br.com.acta.dto.pdca.efeito_secundario.EfeitoSecundarioResponseDTO; import br.com.acta.service.EfeitoSecundarioService; @@ -18,28 +19,32 @@ @RestController @RequestMapping(value = "api/v1/verificacao/{idResultado}/efeito-secundario", produces = MediaType.APPLICATION_JSON_VALUE) @RequiredArgsConstructor -public class EfeitoSecundarioController { +public class EfeitoSecundarioController implements EfeitoSecundarioOpenapi { private final EfeitoSecundarioService service; @GetMapping + @Override public ResponseEntity> buscarEfeitosSecundarios(@PathVariable @Positive Long idResultado) { List efeitoSecundario = service.buscar(idResultado); return ResponseEntity.ok(efeitoSecundario); } @PostMapping + @Override public ResponseEntity inserir(@PathVariable @Positive Long idResultado, @RequestBody @Valid EfeitoSecundarioRequestDTO dto) { EfeitoSecundarioResponseDTO efeitoSecundario = service.inserir(idResultado, dto); return ResponseEntity.status(201).body(efeitoSecundario); } @PatchMapping("{idEfeitoSecundario}") + @Override public ResponseEntity patch(@PathVariable @Positive Long idResultado, @PathVariable @Positive Long idEfeitoSecundario, @RequestBody Map campos) { EfeitoSecundarioResponseDTO efeitoSecundario = service.patch(idResultado, idEfeitoSecundario, campos); return ResponseEntity.ok(efeitoSecundario); } @DeleteMapping("/{idEfeitoSecundario}") + @Override public ResponseEntity excluir(@PathVariable @Positive Long idResultado, @PathVariable @Positive Long idEfeitoSecundario) { service.excluir(idResultado, idEfeitoSecundario); return ResponseEntity.noContent().build(); diff --git a/src/main/java/br/com/acta/controller/TreinamentoController.java b/src/main/java/br/com/acta/controller/TreinamentoController.java index 524687e..091e853 100644 --- a/src/main/java/br/com/acta/controller/TreinamentoController.java +++ b/src/main/java/br/com/acta/controller/TreinamentoController.java @@ -1,5 +1,6 @@ package br.com.acta.controller; +import br.com.acta.common.config.swagger.openapi.TreinamentoOpenapi; import br.com.acta.dto.pdca.treinamento.TreinamentoRequestDTO; import br.com.acta.dto.pdca.treinamento.TreinamentoResponseDTO; import br.com.acta.service.TreinamentoService; @@ -16,34 +17,39 @@ @RestController @RequestMapping(value = "api/v1", produces = MediaType.APPLICATION_JSON_VALUE) @RequiredArgsConstructor -public class TreinamentoController { +public class TreinamentoController implements TreinamentoOpenapi { private final TreinamentoService service; @GetMapping("/ciclo/{idCiclo}/treinamento") + @Override public ResponseEntity> buscarTreinamentos(@PathVariable @Positive Long idCiclo) { List treinamentos = service.buscarTreinamentos(idCiclo); return ResponseEntity.ok(treinamentos); } @GetMapping("/treinamento/{id}") + @Override public ResponseEntity buscar(@PathVariable @Positive Long id){ TreinamentoResponseDTO treinamento = service.buscar(id); return ResponseEntity.ok(treinamento); } @PostMapping("/ciclo/{idCiclo}/treinamento") + @Override public ResponseEntity inserir(@PathVariable @Positive Long idCiclo, @RequestBody @Valid TreinamentoRequestDTO dto) { TreinamentoResponseDTO treinamento = service.inserir(idCiclo, dto); return ResponseEntity.status(201).body(treinamento); } @PatchMapping("/treinamento/{id}") + @Override public ResponseEntity patch(@PathVariable @Positive Long id, @RequestBody Map campos) { TreinamentoResponseDTO treinamento = service.patch(id, campos); return ResponseEntity.ok(treinamento); } @DeleteMapping("/treinamento/{id}") + @Override public ResponseEntity excluir(@PathVariable @Positive Long id) { service.excluir(id); return ResponseEntity.noContent().build(); diff --git a/src/main/java/br/com/acta/controller/VerificacaoResultadoController.java b/src/main/java/br/com/acta/controller/VerificacaoResultadoController.java index 39c3c6d..0d4394f 100644 --- a/src/main/java/br/com/acta/controller/VerificacaoResultadoController.java +++ b/src/main/java/br/com/acta/controller/VerificacaoResultadoController.java @@ -1,5 +1,6 @@ package br.com.acta.controller; +import br.com.acta.common.config.swagger.openapi.VerificacaoResultadoOpenapi; import br.com.acta.dto.pdca.verificacao_resultado.VerificacaoResultadoRequestDTO; import br.com.acta.dto.pdca.verificacao_resultado.VerificacaoResultadoResponseDTO; import br.com.acta.service.VerificacaoResultadoService; @@ -16,34 +17,39 @@ @RestController @RequestMapping(value = "api/v1", produces = MediaType.APPLICATION_JSON_VALUE) @RequiredArgsConstructor -public class VerificacaoResultadoController { +public class VerificacaoResultadoController implements VerificacaoResultadoOpenapi { private final VerificacaoResultadoService service; @GetMapping("/ciclos/{idCiclo}/verificacoes") + @Override public ResponseEntity< List> buscar(@PathVariable @Positive Long idCiclo) { List resultados = service.buscarVerificacoes(idCiclo); return ResponseEntity.ok(resultados); } @GetMapping("/verificacoes/{id}") + @Override public ResponseEntity buscarPorId(@PathVariable @Positive Long id) { VerificacaoResultadoResponseDTO resultado = service.buscar(id); return ResponseEntity.ok(resultado); } @PostMapping("/ciclos/{idCiclo}/verificacoes") + @Override public ResponseEntity inserir(@PathVariable @Positive Long idCiclo, @RequestParam @Positive Long idCriadoPor, @Valid @RequestBody VerificacaoResultadoRequestDTO dto){ VerificacaoResultadoResponseDTO resultado = service.inserir(idCiclo, dto, idCriadoPor); return ResponseEntity.status(201).body(resultado); } @PatchMapping("/verificacoes/{id}") + @Override public ResponseEntity patch(@PathVariable @Positive Long id, @RequestBody Map campos) { VerificacaoResultadoResponseDTO resultado = service.patch(id, campos); return ResponseEntity.ok(resultado); } @DeleteMapping("/verificacoes/{id}") + @Override public ResponseEntity excluir(@PathVariable @Positive Long id) { service.excluir(id); return ResponseEntity.noContent().build(); From 55e8b17825b9e0f63e4e6bed1e5eee0b4364c0ae Mon Sep 17 00:00:00 2001 From: Davi Aliaga Date: Sun, 20 Sep 2026 12:42:03 -0300 Subject: [PATCH 13/16] =?UTF-8?q?feat/swagger:=20adiciona=20interfaces=20O?= =?UTF-8?q?penAPI=20para=20gerenciamento=20de=20e-mails,=20endere=C3=A7os?= =?UTF-8?q?=20e=20telefones=20de=20empresas=20e=20colaboradores?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/swagger/openapi/EmailOpenapi.java | 71 +++++++++++++++++++ .../openapi/EnderecoEmpresaOpenapi.java | 54 ++++++++++++++ .../swagger/openapi/TelefoneOpenapi.java | 71 +++++++++++++++++++ .../controller/EnderecoEmpresaController.java | 7 +- .../controller/contato/EmailController.java | 9 ++- .../contato/TelefoneController.java | 9 ++- 6 files changed, 218 insertions(+), 3 deletions(-) create mode 100644 src/main/java/br/com/acta/common/config/swagger/openapi/EmailOpenapi.java create mode 100644 src/main/java/br/com/acta/common/config/swagger/openapi/EnderecoEmpresaOpenapi.java create mode 100644 src/main/java/br/com/acta/common/config/swagger/openapi/TelefoneOpenapi.java diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/EmailOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/EmailOpenapi.java new file mode 100644 index 0000000..a5cbc13 --- /dev/null +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/EmailOpenapi.java @@ -0,0 +1,71 @@ +package br.com.acta.common.config.swagger.openapi; + +import br.com.acta.common.config.swagger.annotation.ApiAuthenticationResponses; +import br.com.acta.common.config.swagger.annotation.ApiBadRequestResponse; +import br.com.acta.common.config.swagger.annotation.ApiConflictResponse; +import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; +import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; +import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; +import br.com.acta.dto.core.contato.email.EmailRequestDTO; +import br.com.acta.dto.core.contato.email.EmailResponseDTO; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.ArraySchema; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.http.ResponseEntity; + +import java.util.List; + +@Tag(name = "E-mails", description = SwaggerOpenapiDescriptions.EMAIL_CONTROLLER) +public interface EmailOpenapi { + + @Operation(summary = "Lista os e-mails de uma empresa") + @ApiResponse(responseCode = "200", description = "E-mails encontrados", content = @Content(array = @ArraySchema(schema = @Schema(implementation = EmailResponseDTO.class)))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + ResponseEntity> buscarEmailEmpresa(Long idEmpresa); + + @Operation(summary = "Adiciona um e-mail a uma empresa") + @ApiResponse(responseCode = "201", description = "E-mail adicionado", content = @Content(schema = @Schema(implementation = EmailResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiUnsupportedMediaTypeResponse + ResponseEntity inserirEmailEmpresa(Long idEmpresa, EmailRequestDTO dto); + + @Operation(summary = "Exclui um e-mail de uma empresa") + @ApiResponse(responseCode = "204", description = "E-mail excluído") + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + ResponseEntity excluirEmailEmpresa(Long idEmpresa, Long idEmail); + + @Operation(summary = "Lista os e-mails de um colaborador") + @ApiResponse(responseCode = "200", description = "E-mails encontrados", content = @Content(array = @ArraySchema(schema = @Schema(implementation = EmailResponseDTO.class)))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + ResponseEntity> buscarEmailColaborador(Long idColaborador); + + @Operation(summary = "Adiciona um e-mail a um colaborador") + @ApiResponse(responseCode = "201", description = "E-mail adicionado", content = @Content(schema = @Schema(implementation = EmailResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiUnsupportedMediaTypeResponse + ResponseEntity inserirEmailColaborador(Long idColaborador, EmailRequestDTO dto); + + @Operation(summary = "Exclui um e-mail de um colaborador") + @ApiResponse(responseCode = "204", description = "E-mail excluído") + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + ResponseEntity excluirEmailColaborador(Long idColaborador, Long idEmail); +} diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/EnderecoEmpresaOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/EnderecoEmpresaOpenapi.java new file mode 100644 index 0000000..4c6a35c --- /dev/null +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/EnderecoEmpresaOpenapi.java @@ -0,0 +1,54 @@ +package br.com.acta.common.config.swagger.openapi; + +import br.com.acta.common.config.swagger.annotation.ApiAuthenticationResponses; +import br.com.acta.common.config.swagger.annotation.ApiBadRequestResponse; +import br.com.acta.common.config.swagger.annotation.ApiConflictResponse; +import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; +import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; +import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; +import br.com.acta.dto.core.empresa.endereco.EnderecoRequestDTO; +import br.com.acta.dto.core.empresa.endereco.EnderecoResponseDTO; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.ArraySchema; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.http.ResponseEntity; + +import java.util.List; + +@Tag(name = "Endereços de empresas", description = SwaggerOpenapiDescriptions.ENDERECO_EMPRESA_CONTROLLER) +public interface EnderecoEmpresaOpenapi { + + @Operation(summary = "Busca um endereço de uma empresa") + @ApiResponse(responseCode = "200", description = "Endereço encontrado", content = @Content(schema = @Schema(implementation = EnderecoResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + ResponseEntity buscar(Long idEmpresa, Long idEndereco); + + @Operation(summary = "Lista os endereços de uma empresa") + @ApiResponse(responseCode = "200", description = "Endereços encontrados", content = @Content(array = @ArraySchema(schema = @Schema(implementation = EnderecoResponseDTO.class)))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + ResponseEntity> buscar(Long idEmpresa); + + @Operation(summary = "Adiciona um endereço a uma empresa") + @ApiResponse(responseCode = "201", description = "Endereço adicionado", content = @Content(schema = @Schema(implementation = EnderecoResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiUnsupportedMediaTypeResponse + ResponseEntity inserir(Long idEmpresa, EnderecoRequestDTO dto); + + @Operation(summary = "Exclui um endereço de uma empresa") + @ApiResponse(responseCode = "204", description = "Endereço excluído") + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + ResponseEntity excluir(Long idEmpresa, Long idEndereco); +} diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/TelefoneOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/TelefoneOpenapi.java new file mode 100644 index 0000000..3824ec7 --- /dev/null +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/TelefoneOpenapi.java @@ -0,0 +1,71 @@ +package br.com.acta.common.config.swagger.openapi; + +import br.com.acta.common.config.swagger.annotation.ApiAuthenticationResponses; +import br.com.acta.common.config.swagger.annotation.ApiBadRequestResponse; +import br.com.acta.common.config.swagger.annotation.ApiConflictResponse; +import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; +import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; +import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; +import br.com.acta.dto.core.contato.telefone.TelefoneRequestDTO; +import br.com.acta.dto.core.contato.telefone.TelefoneResponseDTO; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.ArraySchema; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.http.ResponseEntity; + +import java.util.List; + +@Tag(name = "Telefones", description = SwaggerOpenapiDescriptions.TELEFONE_CONTROLLER) +public interface TelefoneOpenapi { + + @Operation(summary = "Lista os telefones de uma empresa") + @ApiResponse(responseCode = "200", description = "Telefones encontrados", content = @Content(array = @ArraySchema(schema = @Schema(implementation = TelefoneResponseDTO.class)))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + ResponseEntity> buscarTelefoneEmpresa(Long idEmpresa); + + @Operation(summary = "Adiciona um telefone a uma empresa") + @ApiResponse(responseCode = "201", description = "Telefone adicionado", content = @Content(schema = @Schema(implementation = TelefoneResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiUnsupportedMediaTypeResponse + ResponseEntity inserirTelefoneEmpresa(Long idEmpresa, TelefoneRequestDTO dto); + + @Operation(summary = "Exclui um telefone de uma empresa") + @ApiResponse(responseCode = "204", description = "Telefone excluído") + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + ResponseEntity excluirTelefoneEmpresa(Long idEmpresa, Long idTelefone); + + @Operation(summary = "Lista os telefones de um colaborador") + @ApiResponse(responseCode = "200", description = "Telefones encontrados", content = @Content(array = @ArraySchema(schema = @Schema(implementation = TelefoneResponseDTO.class)))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + ResponseEntity> buscarTelefoneColaborador(Long idColaborador); + + @Operation(summary = "Adiciona um telefone a um colaborador") + @ApiResponse(responseCode = "201", description = "Telefone adicionado", content = @Content(schema = @Schema(implementation = TelefoneResponseDTO.class))) + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + @ApiUnsupportedMediaTypeResponse + ResponseEntity inserirTelefoneColaborador(Long idColaborador, TelefoneRequestDTO dto); + + @Operation(summary = "Exclui um telefone de um colaborador") + @ApiResponse(responseCode = "204", description = "Telefone excluído") + @ApiAuthenticationResponses + @ApiBadRequestResponse + @ApiNotFoundResponse + @ApiConflictResponse + ResponseEntity excluirTelefoneColaborador(Long idColaborador, Long idTelefone); +} diff --git a/src/main/java/br/com/acta/controller/EnderecoEmpresaController.java b/src/main/java/br/com/acta/controller/EnderecoEmpresaController.java index f53ef1a..bb6664d 100644 --- a/src/main/java/br/com/acta/controller/EnderecoEmpresaController.java +++ b/src/main/java/br/com/acta/controller/EnderecoEmpresaController.java @@ -1,5 +1,6 @@ package br.com.acta.controller; +import br.com.acta.common.config.swagger.openapi.EnderecoEmpresaOpenapi; import br.com.acta.dto.core.empresa.endereco.EnderecoRequestDTO; import br.com.acta.dto.core.empresa.endereco.EnderecoResponseDTO; import br.com.acta.service.EnderecoEmpresaService; @@ -17,28 +18,32 @@ @RestController @RequestMapping(value = "api/v1/empresa/{idEmpresa}/endereco", produces = MediaType.APPLICATION_JSON_VALUE) @RequiredArgsConstructor -public class EnderecoEmpresaController { +public class EnderecoEmpresaController implements EnderecoEmpresaOpenapi { private final EnderecoEmpresaService service; @GetMapping("/{idEndereco}") + @Override public ResponseEntity buscar(@PathVariable @Positive Long idEmpresa, @PathVariable @Positive Long idEndereco){ EnderecoResponseDTO endereco = service.buscarEndereco(idEmpresa, idEndereco); return ResponseEntity.ok(endereco); } @GetMapping + @Override public ResponseEntity> buscar(@PathVariable @Positive Long idEmpresa){ List enderecos = service.buscarEndereco(idEmpresa); return ResponseEntity.ok(enderecos); } @PostMapping + @Override public ResponseEntity inserir(@PathVariable @Positive Long idEmpresa, @Valid @RequestBody EnderecoRequestDTO dto){ EnderecoResponseDTO endereco = service.inserirEndereco(idEmpresa, dto); return ResponseEntity.status(201).body(endereco); } @DeleteMapping("/{idEndereco}") + @Override public ResponseEntity excluir(@PathVariable @Positive Long idEmpresa, @PathVariable @Positive Long idEndereco){ service.excluirEndereco(idEmpresa, idEndereco); return ResponseEntity.noContent().build(); diff --git a/src/main/java/br/com/acta/controller/contato/EmailController.java b/src/main/java/br/com/acta/controller/contato/EmailController.java index ac588f6..f705383 100644 --- a/src/main/java/br/com/acta/controller/contato/EmailController.java +++ b/src/main/java/br/com/acta/controller/contato/EmailController.java @@ -1,5 +1,6 @@ package br.com.acta.controller.contato; +import br.com.acta.common.config.swagger.openapi.EmailOpenapi; import br.com.acta.dto.core.contato.email.EmailRequestDTO; import br.com.acta.dto.core.contato.email.EmailResponseDTO; import br.com.acta.service.EmailService; @@ -17,40 +18,46 @@ @RestController @RequestMapping(value = "/api/v1", produces = MediaType.APPLICATION_JSON_VALUE) @RequiredArgsConstructor -public class EmailController { +public class EmailController implements EmailOpenapi { private final EmailService service; @GetMapping("/empresa/{idEmpresa}/email") + @Override public ResponseEntity> buscarEmailEmpresa(@PathVariable @Positive Long idEmpresa) { List emails = service.buscarEmailsEmpresa(idEmpresa); return ResponseEntity.ok(emails); } @PostMapping("/empresa/{idEmpresa}/email/") + @Override public ResponseEntity inserirEmailEmpresa(@PathVariable @Positive Long idEmpresa, @RequestBody @Valid EmailRequestDTO dto) { EmailResponseDTO email = service.inserirEmailEmpresa(idEmpresa, dto); return ResponseEntity.status(201).body(email); } @DeleteMapping("/empresa/{idEmpresa}/email/{idEmail}") + @Override public ResponseEntity excluirEmailEmpresa(@PathVariable @Positive Long idEmpresa, @PathVariable @Positive Long idEmail) { service.excluirEmailEmpresa(idEmpresa, idEmail); return ResponseEntity.noContent().build(); } @GetMapping("/colaborador/{idColaborador}/email") + @Override public ResponseEntity> buscarEmailColaborador(@PathVariable @Positive Long idColaborador) { List emails = service.buscarEmailsColaborador(idColaborador); return ResponseEntity.ok(emails); } @PostMapping("/colaborador/{idColaborador}/email/") + @Override public ResponseEntity inserirEmailColaborador(@PathVariable @Positive Long idColaborador, @RequestBody @Valid EmailRequestDTO dto) { EmailResponseDTO email = service.inserirEmailColaborador(idColaborador, dto); return ResponseEntity.status(201).body(email); } @DeleteMapping("/colaborador/{idColaborador}/email/{idEmail}") + @Override public ResponseEntity excluirEmailColaborador(@PathVariable @Positive Long idColaborador, @PathVariable @Positive Long idEmail) { service.excluirEmailColaborador(idColaborador, idEmail); return ResponseEntity.noContent().build(); diff --git a/src/main/java/br/com/acta/controller/contato/TelefoneController.java b/src/main/java/br/com/acta/controller/contato/TelefoneController.java index bd6b38b..1b64390 100644 --- a/src/main/java/br/com/acta/controller/contato/TelefoneController.java +++ b/src/main/java/br/com/acta/controller/contato/TelefoneController.java @@ -1,5 +1,6 @@ package br.com.acta.controller.contato; +import br.com.acta.common.config.swagger.openapi.TelefoneOpenapi; import br.com.acta.dto.core.contato.telefone.TelefoneRequestDTO; import br.com.acta.dto.core.contato.telefone.TelefoneResponseDTO; import br.com.acta.service.TelefoneService; @@ -17,40 +18,46 @@ @RestController @RequiredArgsConstructor @RequestMapping(value = "/api/v1", produces = MediaType.APPLICATION_JSON_VALUE) -public class TelefoneController { +public class TelefoneController implements TelefoneOpenapi { private final TelefoneService service; @GetMapping("/empresa/{idEmpresa}/telefone") + @Override public ResponseEntity> buscarTelefoneEmpresa(@PathVariable @Positive Long idEmpresa) { List telefones = service.buscarTelefonesEmpresa(idEmpresa); return ResponseEntity.ok(telefones); } @PostMapping("/empresa/{idEmpresa}/telefone/") + @Override public ResponseEntity inserirTelefoneEmpresa(@PathVariable @Positive Long idEmpresa, @RequestBody @Valid TelefoneRequestDTO dto) { TelefoneResponseDTO telefone = service.inserirTelefoneEmpresa(idEmpresa, dto); return ResponseEntity.status(201).body(telefone); } @DeleteMapping("/empresa/{idEmpresa}/telefone/{idTelefone}") + @Override public ResponseEntity excluirTelefoneEmpresa(@PathVariable @Positive Long idEmpresa, @PathVariable @Positive Long idTelefone) { service.excluirTelefoneEmpresa(idEmpresa, idTelefone); return ResponseEntity.noContent().build(); } @GetMapping("/colaborador/{idColaborador}/telefone") + @Override public ResponseEntity> buscarTelefoneColaborador(@PathVariable @Positive Long idColaborador) { List telefones = service.buscarTelefonesColaborador(idColaborador); return ResponseEntity.ok(telefones); } @PostMapping("/colaborador/{idColaborador}/telefone/") + @Override public ResponseEntity inserirTelefoneColaborador(@PathVariable @Positive Long idColaborador, @RequestBody @Valid TelefoneRequestDTO dto) { TelefoneResponseDTO telefone = service.inserirTelefoneColaborador(idColaborador, dto); return ResponseEntity.status(201).body(telefone); } @DeleteMapping("/colaborador/{idColaborador}/telefone/{idTelefone}") + @Override public ResponseEntity excluirTelefoneColaborador(@PathVariable @Positive Long idColaborador, @PathVariable @Positive Long idTelefone) { service.excluirTelefoneColaborador(idColaborador, idTelefone); return ResponseEntity.noContent().build(); From ee5b7e05793cf067f285a877ae48340290d82dde Mon Sep 17 00:00:00 2001 From: Davi Aliaga Date: Sun, 20 Sep 2026 12:51:32 -0300 Subject: [PATCH 14/16] =?UTF-8?q?refactor/openapi:=20Altera=20anota=C3=A7?= =?UTF-8?q?=C3=B5es=20da=20openapi=20juntando=20casos=20onde=20muitas=20an?= =?UTF-8?q?ota=C3=A7=C3=B5es=20s=C3=A3o=20usadas=20juntas=20para=20um=20bi?= =?UTF-8?q?nding?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ApiAuthenticationResponses.java | 2 +- .../annotation/ApiBadRequestResponse.java | 2 +- .../annotation/ApiConflictResponse.java | 2 +- .../annotation/ApiNotFoundResponse.java | 2 +- .../annotation/ApiResourceResponses.java | 15 +++++++++ .../swagger/openapi/AlertaPrazoOpenapi.java | 7 ++-- .../swagger/openapi/CausaRaizOpenapi.java | 22 +++---------- .../config/swagger/openapi/CicloOpenapi.java | 22 +++---------- .../swagger/openapi/ColaboradorOpenapi.java | 17 +++------- .../openapi/EfeitoSecundarioOpenapi.java | 17 +++------- .../config/swagger/openapi/EmailOpenapi.java | 22 +++---------- .../swagger/openapi/EmpresaOpenapi.java | 11 ++----- .../openapi/EnderecoEmpresaOpenapi.java | 12 ++----- .../config/swagger/openapi/MetaOpenapi.java | 32 ++++--------------- .../swagger/openapi/Plano5W2HOpenapi.java | 17 +++------- .../swagger/openapi/PlanoAcaoOpenapi.java | 22 +++---------- .../openapi/PriorizacaoProblemaOpenapi.java | 17 +++------- .../swagger/openapi/ProblemaOpenapi.java | 22 +++---------- .../openapi/TarefaDependenteOpenapi.java | 12 ++----- .../config/swagger/openapi/TarefaOpenapi.java | 32 ++++--------------- .../swagger/openapi/TelefoneOpenapi.java | 22 +++---------- .../swagger/openapi/TreinamentoOpenapi.java | 17 +++------- .../swagger/openapi/UsuarioCicloOpenapi.java | 22 +++---------- .../swagger/openapi/UsuarioOpenapi.java | 22 +++---------- .../openapi/UsuarioTreinamentoOpenapi.java | 18 +++-------- .../openapi/VerificacaoResultadoOpenapi.java | 17 +++------- 26 files changed, 112 insertions(+), 313 deletions(-) create mode 100644 src/main/java/br/com/acta/common/config/swagger/annotation/ApiResourceResponses.java diff --git a/src/main/java/br/com/acta/common/config/swagger/annotation/ApiAuthenticationResponses.java b/src/main/java/br/com/acta/common/config/swagger/annotation/ApiAuthenticationResponses.java index fdd46c2..51e4807 100644 --- a/src/main/java/br/com/acta/common/config/swagger/annotation/ApiAuthenticationResponses.java +++ b/src/main/java/br/com/acta/common/config/swagger/annotation/ApiAuthenticationResponses.java @@ -11,7 +11,7 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; -@Target(ElementType.METHOD) +@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE}) @Retention(RetentionPolicy.RUNTIME) @ApiResponses({ @ApiResponse( diff --git a/src/main/java/br/com/acta/common/config/swagger/annotation/ApiBadRequestResponse.java b/src/main/java/br/com/acta/common/config/swagger/annotation/ApiBadRequestResponse.java index 2c5f310..af9efdc 100644 --- a/src/main/java/br/com/acta/common/config/swagger/annotation/ApiBadRequestResponse.java +++ b/src/main/java/br/com/acta/common/config/swagger/annotation/ApiBadRequestResponse.java @@ -10,7 +10,7 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; -@Target(ElementType.METHOD) +@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE}) @Retention(RetentionPolicy.RUNTIME) @ApiResponse( responseCode = "400", diff --git a/src/main/java/br/com/acta/common/config/swagger/annotation/ApiConflictResponse.java b/src/main/java/br/com/acta/common/config/swagger/annotation/ApiConflictResponse.java index 7ea4532..e3049b0 100644 --- a/src/main/java/br/com/acta/common/config/swagger/annotation/ApiConflictResponse.java +++ b/src/main/java/br/com/acta/common/config/swagger/annotation/ApiConflictResponse.java @@ -10,7 +10,7 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; -@Target(ElementType.METHOD) +@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE}) @Retention(RetentionPolicy.RUNTIME) @ApiResponse( responseCode = "409", diff --git a/src/main/java/br/com/acta/common/config/swagger/annotation/ApiNotFoundResponse.java b/src/main/java/br/com/acta/common/config/swagger/annotation/ApiNotFoundResponse.java index b609d8b..4fa157e 100644 --- a/src/main/java/br/com/acta/common/config/swagger/annotation/ApiNotFoundResponse.java +++ b/src/main/java/br/com/acta/common/config/swagger/annotation/ApiNotFoundResponse.java @@ -10,7 +10,7 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; -@Target(ElementType.METHOD) +@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE}) @Retention(RetentionPolicy.RUNTIME) @ApiResponse( responseCode = "404", diff --git a/src/main/java/br/com/acta/common/config/swagger/annotation/ApiResourceResponses.java b/src/main/java/br/com/acta/common/config/swagger/annotation/ApiResourceResponses.java new file mode 100644 index 0000000..712a68d --- /dev/null +++ b/src/main/java/br/com/acta/common/config/swagger/annotation/ApiResourceResponses.java @@ -0,0 +1,15 @@ +package br.com.acta.common.config.swagger.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +@ApiAuthenticationResponses +@ApiBadRequestResponse +@ApiNotFoundResponse +@ApiConflictResponse +public @interface ApiResourceResponses { +} \ No newline at end of file diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/AlertaPrazoOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/AlertaPrazoOpenapi.java index 08bc31f..bf331dc 100644 --- a/src/main/java/br/com/acta/common/config/swagger/openapi/AlertaPrazoOpenapi.java +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/AlertaPrazoOpenapi.java @@ -1,9 +1,9 @@ package br.com.acta.common.config.swagger.openapi; import br.com.acta.common.config.swagger.annotation.ApiAuthenticationResponses; +import br.com.acta.common.config.swagger.annotation.ApiResourceResponses; import br.com.acta.common.config.swagger.annotation.ApiBadRequestResponse; import br.com.acta.common.config.swagger.annotation.ApiBusinessRuleResponse; -import br.com.acta.common.config.swagger.annotation.ApiConflictResponse; import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; import br.com.acta.dto.pdca.alerta_prazo.AlertaPrazoResponseDTO; @@ -26,10 +26,7 @@ public interface AlertaPrazoOpenapi { @Operation(summary = "Marca um alerta como lido") @ApiResponse(responseCode = "200", description = "Alerta marcado como lido", content = @Content(schema = @Schema(implementation = AlertaPrazoResponseDTO.class))) - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiBusinessRuleResponse ResponseEntity marcarLido(Long idTarefa, Long id, Long idUsuario); } diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/CausaRaizOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/CausaRaizOpenapi.java index b256f0d..bd26ea5 100644 --- a/src/main/java/br/com/acta/common/config/swagger/openapi/CausaRaizOpenapi.java +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/CausaRaizOpenapi.java @@ -1,9 +1,9 @@ package br.com.acta.common.config.swagger.openapi; import br.com.acta.common.config.swagger.annotation.ApiAuthenticationResponses; +import br.com.acta.common.config.swagger.annotation.ApiResourceResponses; import br.com.acta.common.config.swagger.annotation.ApiBadRequestResponse; import br.com.acta.common.config.swagger.annotation.ApiBusinessRuleResponse; -import br.com.acta.common.config.swagger.annotation.ApiConflictResponse; import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; @@ -38,37 +38,25 @@ public interface CausaRaizOpenapi { @Operation(summary = "Cria uma causa-raiz") @ApiResponse(responseCode = "201", description = "Causa-raiz criada", content = @Content(schema = @Schema(implementation = CausaRaizResponseDTO.class))) - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiBusinessRuleResponse @ApiUnsupportedMediaTypeResponse ResponseEntity inserir(Long idCiclo, CausaRaizRequestDTO dto); @Operation(summary = "Atualiza parcialmente uma causa-raiz") @ApiResponse(responseCode = "200", description = "Causa-raiz atualizada", content = @Content(schema = @Schema(implementation = CausaRaizResponseDTO.class))) - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiUnsupportedMediaTypeResponse ResponseEntity patch(Long id, Map campos); @Operation(summary = "Valida uma causa-raiz") @ApiResponse(responseCode = "200", description = "Causa-raiz validada", content = @Content(schema = @Schema(implementation = CausaRaizResponseDTO.class))) - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiBusinessRuleResponse ResponseEntity validar(Long id, Long idUsuario, Boolean aceita); @Operation(summary = "Exclui uma causa-raiz") @ApiResponse(responseCode = "204", description = "Causa-raiz excluída") - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses ResponseEntity excluir(Long id); } diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/CicloOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/CicloOpenapi.java index f2c4af9..1323817 100644 --- a/src/main/java/br/com/acta/common/config/swagger/openapi/CicloOpenapi.java +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/CicloOpenapi.java @@ -1,9 +1,9 @@ package br.com.acta.common.config.swagger.openapi; import br.com.acta.common.config.swagger.annotation.ApiAuthenticationResponses; +import br.com.acta.common.config.swagger.annotation.ApiResourceResponses; import br.com.acta.common.config.swagger.annotation.ApiBadRequestResponse; import br.com.acta.common.config.swagger.annotation.ApiBusinessRuleResponse; -import br.com.acta.common.config.swagger.annotation.ApiConflictResponse; import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; @@ -39,38 +39,26 @@ public interface CicloOpenapi { @Operation(summary = "Cria um ciclo") @ApiResponse(responseCode = "201", description = "Ciclo criado", content = @Content(schema = @Schema(implementation = CicloResponseDTO.class))) - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiUnsupportedMediaTypeResponse ResponseEntity inserir(CicloRequestDTO cicloRequest); @Operation(summary = "Atualiza parcialmente um ciclo") @ApiResponse(responseCode = "200", description = "Ciclo atualizado", content = @Content(schema = @Schema(implementation = CicloResponseDTO.class))) - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiBusinessRuleResponse @ApiUnsupportedMediaTypeResponse ResponseEntity patch(Long id, Map campos); @Operation(summary = "Atualiza o status de um ciclo") @ApiResponse(responseCode = "200", description = "Status atualizado", content = @Content(schema = @Schema(implementation = CicloResponseDTO.class))) - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiBusinessRuleResponse ResponseEntity patchStatus(Long id, StatusCiclo status); @Operation(summary = "Cancela um ciclo") @ApiResponse(responseCode = "204", description = "Ciclo cancelado") - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiBusinessRuleResponse ResponseEntity excluir(Long id); diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/ColaboradorOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/ColaboradorOpenapi.java index 8c558a4..26d2175 100644 --- a/src/main/java/br/com/acta/common/config/swagger/openapi/ColaboradorOpenapi.java +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/ColaboradorOpenapi.java @@ -1,9 +1,9 @@ package br.com.acta.common.config.swagger.openapi; import br.com.acta.common.config.swagger.annotation.ApiAuthenticationResponses; +import br.com.acta.common.config.swagger.annotation.ApiResourceResponses; import br.com.acta.common.config.swagger.annotation.ApiBadRequestResponse; import br.com.acta.common.config.swagger.annotation.ApiBusinessRuleResponse; -import br.com.acta.common.config.swagger.annotation.ApiConflictResponse; import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; @@ -45,28 +45,19 @@ public interface ColaboradorOpenapi { @Operation(summary = "Cria um colaborador") @ApiResponse(responseCode = "201", description = "Colaborador criado", content = @Content(schema = @Schema(implementation = ColaboradorResponseDTO.class))) - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiBusinessRuleResponse @ApiUnsupportedMediaTypeResponse ResponseEntity inserir(ColaboradorRequestDTO dto); @Operation(summary = "Atualiza parcialmente um colaborador") @ApiResponse(responseCode = "200", description = "Colaborador atualizado", content = @Content(schema = @Schema(implementation = ColaboradorResponseDTO.class))) - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiUnsupportedMediaTypeResponse ResponseEntity patch(Long id, Map dto); @Operation(summary = "Inativa um colaborador") @ApiResponse(responseCode = "204", description = "Colaborador inativado") - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses ResponseEntity excluir(Long id); } diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/EfeitoSecundarioOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/EfeitoSecundarioOpenapi.java index 925c155..12c49f7 100644 --- a/src/main/java/br/com/acta/common/config/swagger/openapi/EfeitoSecundarioOpenapi.java +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/EfeitoSecundarioOpenapi.java @@ -1,9 +1,9 @@ package br.com.acta.common.config.swagger.openapi; import br.com.acta.common.config.swagger.annotation.ApiAuthenticationResponses; +import br.com.acta.common.config.swagger.annotation.ApiResourceResponses; import br.com.acta.common.config.swagger.annotation.ApiBadRequestResponse; import br.com.acta.common.config.swagger.annotation.ApiBusinessRuleResponse; -import br.com.acta.common.config.swagger.annotation.ApiConflictResponse; import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; @@ -32,30 +32,21 @@ public interface EfeitoSecundarioOpenapi { @Operation(summary = "Cria um efeito secundário") @ApiResponse(responseCode = "201", description = "Efeito secundário criado", content = @Content(schema = @Schema(implementation = EfeitoSecundarioResponseDTO.class))) - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiBusinessRuleResponse @ApiUnsupportedMediaTypeResponse ResponseEntity inserir(Long idResultado, EfeitoSecundarioRequestDTO dto); @Operation(summary = "Atualiza parcialmente um efeito secundário") @ApiResponse(responseCode = "200", description = "Efeito secundário atualizado", content = @Content(schema = @Schema(implementation = EfeitoSecundarioResponseDTO.class))) - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiBusinessRuleResponse @ApiUnsupportedMediaTypeResponse ResponseEntity patch(Long idResultado, Long idEfeitoSecundario, Map campos); @Operation(summary = "Exclui um efeito secundário") @ApiResponse(responseCode = "204", description = "Efeito secundário excluído") - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiBusinessRuleResponse ResponseEntity excluir(Long idResultado, Long idEfeitoSecundario); } diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/EmailOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/EmailOpenapi.java index a5cbc13..759537f 100644 --- a/src/main/java/br/com/acta/common/config/swagger/openapi/EmailOpenapi.java +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/EmailOpenapi.java @@ -1,8 +1,8 @@ package br.com.acta.common.config.swagger.openapi; import br.com.acta.common.config.swagger.annotation.ApiAuthenticationResponses; +import br.com.acta.common.config.swagger.annotation.ApiResourceResponses; import br.com.acta.common.config.swagger.annotation.ApiBadRequestResponse; -import br.com.acta.common.config.swagger.annotation.ApiConflictResponse; import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; @@ -30,19 +30,13 @@ public interface EmailOpenapi { @Operation(summary = "Adiciona um e-mail a uma empresa") @ApiResponse(responseCode = "201", description = "E-mail adicionado", content = @Content(schema = @Schema(implementation = EmailResponseDTO.class))) - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiUnsupportedMediaTypeResponse ResponseEntity inserirEmailEmpresa(Long idEmpresa, EmailRequestDTO dto); @Operation(summary = "Exclui um e-mail de uma empresa") @ApiResponse(responseCode = "204", description = "E-mail excluído") - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses ResponseEntity excluirEmailEmpresa(Long idEmpresa, Long idEmail); @Operation(summary = "Lista os e-mails de um colaborador") @@ -54,18 +48,12 @@ public interface EmailOpenapi { @Operation(summary = "Adiciona um e-mail a um colaborador") @ApiResponse(responseCode = "201", description = "E-mail adicionado", content = @Content(schema = @Schema(implementation = EmailResponseDTO.class))) - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiUnsupportedMediaTypeResponse ResponseEntity inserirEmailColaborador(Long idColaborador, EmailRequestDTO dto); @Operation(summary = "Exclui um e-mail de um colaborador") @ApiResponse(responseCode = "204", description = "E-mail excluído") - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses ResponseEntity excluirEmailColaborador(Long idColaborador, Long idEmail); } diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/EmpresaOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/EmpresaOpenapi.java index b25041e..93283e5 100644 --- a/src/main/java/br/com/acta/common/config/swagger/openapi/EmpresaOpenapi.java +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/EmpresaOpenapi.java @@ -1,6 +1,7 @@ package br.com.acta.common.config.swagger.openapi; import br.com.acta.common.config.swagger.annotation.ApiAuthenticationResponses; +import br.com.acta.common.config.swagger.annotation.ApiResourceResponses; import br.com.acta.common.config.swagger.annotation.ApiBadRequestResponse; import br.com.acta.common.config.swagger.annotation.ApiConflictResponse; import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; @@ -46,18 +47,12 @@ public interface EmpresaOpenapi { @Operation(summary = "Atualiza parcialmente uma empresa") @ApiResponse(responseCode = "200", description = "Empresa atualizada", content = @Content(schema = @Schema(implementation = EmpresaResponseDTO.class))) - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiUnsupportedMediaTypeResponse ResponseEntity patch(Long id, Map campos); @Operation(summary = "Inativa uma empresa") @ApiResponse(responseCode = "204", description = "Empresa inativada") - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses ResponseEntity excluir(Long id); } diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/EnderecoEmpresaOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/EnderecoEmpresaOpenapi.java index 4c6a35c..885c4ce 100644 --- a/src/main/java/br/com/acta/common/config/swagger/openapi/EnderecoEmpresaOpenapi.java +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/EnderecoEmpresaOpenapi.java @@ -1,8 +1,8 @@ package br.com.acta.common.config.swagger.openapi; import br.com.acta.common.config.swagger.annotation.ApiAuthenticationResponses; +import br.com.acta.common.config.swagger.annotation.ApiResourceResponses; import br.com.acta.common.config.swagger.annotation.ApiBadRequestResponse; -import br.com.acta.common.config.swagger.annotation.ApiConflictResponse; import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; @@ -37,18 +37,12 @@ public interface EnderecoEmpresaOpenapi { @Operation(summary = "Adiciona um endereço a uma empresa") @ApiResponse(responseCode = "201", description = "Endereço adicionado", content = @Content(schema = @Schema(implementation = EnderecoResponseDTO.class))) - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiUnsupportedMediaTypeResponse ResponseEntity inserir(Long idEmpresa, EnderecoRequestDTO dto); @Operation(summary = "Exclui um endereço de uma empresa") @ApiResponse(responseCode = "204", description = "Endereço excluído") - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses ResponseEntity excluir(Long idEmpresa, Long idEndereco); } diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/MetaOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/MetaOpenapi.java index 12ae698..265111a 100644 --- a/src/main/java/br/com/acta/common/config/swagger/openapi/MetaOpenapi.java +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/MetaOpenapi.java @@ -1,9 +1,9 @@ package br.com.acta.common.config.swagger.openapi; import br.com.acta.common.config.swagger.annotation.ApiAuthenticationResponses; +import br.com.acta.common.config.swagger.annotation.ApiResourceResponses; import br.com.acta.common.config.swagger.annotation.ApiBadRequestResponse; import br.com.acta.common.config.swagger.annotation.ApiBusinessRuleResponse; -import br.com.acta.common.config.swagger.annotation.ApiConflictResponse; import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; @@ -41,37 +41,25 @@ public interface MetaOpenapi { @Operation(summary = "Cria uma meta") @ApiResponse(responseCode = "201", description = "Meta criada", content = @Content(schema = @Schema(implementation = MetaResponseDTO.class))) - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiBusinessRuleResponse @ApiUnsupportedMediaTypeResponse ResponseEntity inserir(Long idPlanoAcao, MetaRequestDTO dto); @Operation(summary = "Atualiza parcialmente uma meta") @ApiResponse(responseCode = "200", description = "Meta atualizada", content = @Content(schema = @Schema(implementation = MetaResponseDTO.class))) - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiUnsupportedMediaTypeResponse ResponseEntity patch(Long id, Map dto); @Operation(summary = "Atualiza o status de uma meta") @ApiResponse(responseCode = "200", description = "Status atualizado", content = @Content(schema = @Schema(implementation = MetaResponseDTO.class))) - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses ResponseEntity patchStatus(Long id, StatusMeta status); @Operation(summary = "Exclui uma meta") @ApiResponse(responseCode = "204", description = "Meta excluída") - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses ResponseEntity delete(Long id); @Operation(summary = "Lista os responsáveis por uma meta") @@ -83,19 +71,13 @@ public interface MetaOpenapi { @Operation(summary = "Adiciona responsáveis a uma meta") @ApiResponse(responseCode = "201", description = "Responsáveis adicionados", content = @Content(array = @ArraySchema(schema = @Schema(implementation = UsuarioSummaryResponseDTO.class)))) - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiBusinessRuleResponse ResponseEntity> adicionarResponsavel(List idsResponsaveis, Long id); @Operation(summary = "Remove responsáveis de uma meta") @ApiResponse(responseCode = "204", description = "Responsáveis removidos") - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiBusinessRuleResponse ResponseEntity excluirResponsaveis(Long id, List idsResponsaveis); } diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/Plano5W2HOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/Plano5W2HOpenapi.java index 1357f2b..e782782 100644 --- a/src/main/java/br/com/acta/common/config/swagger/openapi/Plano5W2HOpenapi.java +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/Plano5W2HOpenapi.java @@ -1,9 +1,9 @@ package br.com.acta.common.config.swagger.openapi; import br.com.acta.common.config.swagger.annotation.ApiAuthenticationResponses; +import br.com.acta.common.config.swagger.annotation.ApiResourceResponses; import br.com.acta.common.config.swagger.annotation.ApiBadRequestResponse; import br.com.acta.common.config.swagger.annotation.ApiBusinessRuleResponse; -import br.com.acta.common.config.swagger.annotation.ApiConflictResponse; import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; @@ -30,30 +30,21 @@ public interface Plano5W2HOpenapi { @Operation(summary = "Cria um plano 5W2H") @ApiResponse(responseCode = "201", description = "Plano 5W2H criado", content = @Content(schema = @Schema(implementation = Plano5W2HResponseDTO.class))) - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiBusinessRuleResponse @ApiUnsupportedMediaTypeResponse ResponseEntity inserir(Long idPlanoAcao, Plano5W2HRequestDTO dto); @Operation(summary = "Atualiza parcialmente um plano 5W2H") @ApiResponse(responseCode = "200", description = "Plano 5W2H atualizado", content = @Content(schema = @Schema(implementation = Plano5W2HResponseDTO.class))) - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiBusinessRuleResponse @ApiUnsupportedMediaTypeResponse ResponseEntity patch(Long id, Map campos); @Operation(summary = "Exclui um plano 5W2H") @ApiResponse(responseCode = "204", description = "Plano 5W2H excluído") - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiBusinessRuleResponse ResponseEntity excluir(Long id); } diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/PlanoAcaoOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/PlanoAcaoOpenapi.java index ad725e6..4885703 100644 --- a/src/main/java/br/com/acta/common/config/swagger/openapi/PlanoAcaoOpenapi.java +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/PlanoAcaoOpenapi.java @@ -1,9 +1,9 @@ package br.com.acta.common.config.swagger.openapi; import br.com.acta.common.config.swagger.annotation.ApiAuthenticationResponses; +import br.com.acta.common.config.swagger.annotation.ApiResourceResponses; import br.com.acta.common.config.swagger.annotation.ApiBadRequestResponse; import br.com.acta.common.config.swagger.annotation.ApiBusinessRuleResponse; -import br.com.acta.common.config.swagger.annotation.ApiConflictResponse; import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; @@ -40,38 +40,26 @@ public interface PlanoAcaoOpenapi { @Operation(summary = "Cria um plano de ação") @ApiResponse(responseCode = "201", description = "Plano de ação criado", content = @Content(schema = @Schema(implementation = PlanoAcaoResponseDTO.class))) - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiBusinessRuleResponse @ApiUnsupportedMediaTypeResponse ResponseEntity inserir(Long idCiclo, PlanoAcaoRequestDTO dto, Long idCriadoPor); @Operation(summary = "Atualiza parcialmente um plano de ação") @ApiResponse(responseCode = "200", description = "Plano de ação atualizado", content = @Content(schema = @Schema(implementation = PlanoAcaoResponseDTO.class))) - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiUnsupportedMediaTypeResponse ResponseEntity patch(Long id, Map campos); @Operation(summary = "Atualiza o status de um plano de ação") @ApiResponse(responseCode = "200", description = "Status atualizado", content = @Content(schema = @Schema(implementation = PlanoAcaoResponseDTO.class))) - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiBusinessRuleResponse ResponseEntity patchStatus(Long id, StatusPlanoAcao status); @Operation(summary = "Exclui um plano de ação") @ApiResponse(responseCode = "204", description = "Plano de ação excluído") - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiBusinessRuleResponse ResponseEntity excluir(Long id); } diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/PriorizacaoProblemaOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/PriorizacaoProblemaOpenapi.java index b4d917c..b36c31c 100644 --- a/src/main/java/br/com/acta/common/config/swagger/openapi/PriorizacaoProblemaOpenapi.java +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/PriorizacaoProblemaOpenapi.java @@ -1,9 +1,9 @@ package br.com.acta.common.config.swagger.openapi; import br.com.acta.common.config.swagger.annotation.ApiAuthenticationResponses; +import br.com.acta.common.config.swagger.annotation.ApiResourceResponses; import br.com.acta.common.config.swagger.annotation.ApiBadRequestResponse; import br.com.acta.common.config.swagger.annotation.ApiBusinessRuleResponse; -import br.com.acta.common.config.swagger.annotation.ApiConflictResponse; import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; @@ -34,28 +34,19 @@ public interface PriorizacaoProblemaOpenapi { @Operation(summary = "Cria uma priorização") @ApiResponse(responseCode = "201", description = "Priorização criada", content = @Content(schema = @Schema(implementation = PriorizacaoProblemaResponseDTO.class))) - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiBusinessRuleResponse @ApiUnsupportedMediaTypeResponse ResponseEntity inserir(Long idProblema, PriorizacaoProblemaRequestDTO dto); @Operation(summary = "Atualiza uma priorização") @ApiResponse(responseCode = "200", description = "Priorização atualizada", content = @Content(schema = @Schema(implementation = PriorizacaoProblemaResponseDTO.class))) - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiUnsupportedMediaTypeResponse ResponseEntity patch(Long idProblema, Long idUsuario, Map campos); @Operation(summary = "Aplica o peso da priorização ao problema") @ApiResponse(responseCode = "200", description = "Peso aplicado", content = @Content(schema = @Schema(implementation = ProblemaResponseDTO.class))) - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses ResponseEntity aplicarPeso(Long idProblema); } diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/ProblemaOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/ProblemaOpenapi.java index 575c8ef..ba20969 100644 --- a/src/main/java/br/com/acta/common/config/swagger/openapi/ProblemaOpenapi.java +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/ProblemaOpenapi.java @@ -1,9 +1,9 @@ package br.com.acta.common.config.swagger.openapi; import br.com.acta.common.config.swagger.annotation.ApiAuthenticationResponses; +import br.com.acta.common.config.swagger.annotation.ApiResourceResponses; import br.com.acta.common.config.swagger.annotation.ApiBadRequestResponse; import br.com.acta.common.config.swagger.annotation.ApiBusinessRuleResponse; -import br.com.acta.common.config.swagger.annotation.ApiConflictResponse; import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; @@ -39,38 +39,26 @@ public interface ProblemaOpenapi { @Operation(summary = "Cria um problema") @ApiResponse(responseCode = "201", description = "Problema criado", content = @Content(schema = @Schema(implementation = ProblemaResponseDTO.class))) - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiBusinessRuleResponse @ApiUnsupportedMediaTypeResponse ResponseEntity inserir(Long idCiclo, ProblemaRequestDTO dto); @Operation(summary = "Atualiza parcialmente um problema") @ApiResponse(responseCode = "200", description = "Problema atualizado", content = @Content(schema = @Schema(implementation = ProblemaResponseDTO.class))) - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiBusinessRuleResponse @ApiUnsupportedMediaTypeResponse ResponseEntity patch(Long id, Map campos); @Operation(summary = "Atualiza o status de um problema") @ApiResponse(responseCode = "200", description = "Status atualizado", content = @Content(schema = @Schema(implementation = ProblemaResponseDTO.class))) - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiBusinessRuleResponse ResponseEntity patchStatus(Long id, StatusProblema status); @Operation(summary = "Exclui um problema") @ApiResponse(responseCode = "204", description = "Problema excluído") - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses ResponseEntity excluir(Long id); } diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/TarefaDependenteOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/TarefaDependenteOpenapi.java index 8108e6e..5583679 100644 --- a/src/main/java/br/com/acta/common/config/swagger/openapi/TarefaDependenteOpenapi.java +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/TarefaDependenteOpenapi.java @@ -1,9 +1,9 @@ package br.com.acta.common.config.swagger.openapi; import br.com.acta.common.config.swagger.annotation.ApiAuthenticationResponses; +import br.com.acta.common.config.swagger.annotation.ApiResourceResponses; import br.com.acta.common.config.swagger.annotation.ApiBadRequestResponse; import br.com.acta.common.config.swagger.annotation.ApiBusinessRuleResponse; -import br.com.acta.common.config.swagger.annotation.ApiConflictResponse; import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; import br.com.acta.dto.pdca.tarefa.TarefaResponseDTO; @@ -30,19 +30,13 @@ public interface TarefaDependenteOpenapi { @Operation(summary = "Adiciona uma dependência à tarefa") @ApiResponse(responseCode = "201", description = "Dependência adicionada", content = @Content(schema = @Schema(implementation = TarefaResponseDTO.class))) - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiBusinessRuleResponse ResponseEntity adicionar(Long id, Long idDependente); @Operation(summary = "Remove uma dependência da tarefa") @ApiResponse(responseCode = "204", description = "Dependência removida") - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiBusinessRuleResponse ResponseEntity remover(Long id, Long idDependente); } diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/TarefaOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/TarefaOpenapi.java index 7356cc8..590d86d 100644 --- a/src/main/java/br/com/acta/common/config/swagger/openapi/TarefaOpenapi.java +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/TarefaOpenapi.java @@ -1,9 +1,9 @@ package br.com.acta.common.config.swagger.openapi; import br.com.acta.common.config.swagger.annotation.ApiAuthenticationResponses; +import br.com.acta.common.config.swagger.annotation.ApiResourceResponses; import br.com.acta.common.config.swagger.annotation.ApiBadRequestResponse; import br.com.acta.common.config.swagger.annotation.ApiBusinessRuleResponse; -import br.com.acta.common.config.swagger.annotation.ApiConflictResponse; import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; @@ -43,58 +43,40 @@ public interface TarefaOpenapi { @Operation(summary = "Cria uma tarefa") @ApiResponse(responseCode = "201", description = "Tarefa criada", content = @Content(schema = @Schema(implementation = TarefaResponseDTO.class))) - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiBusinessRuleResponse @ApiUnsupportedMediaTypeResponse ResponseEntity inserir(Long idPlanoAcao, TarefaRequestDTO dto); @Operation(summary = "Atualiza parcialmente uma tarefa") @ApiResponse(responseCode = "200", description = "Tarefa atualizada", content = @Content(schema = @Schema(implementation = TarefaResponseDTO.class))) - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiBusinessRuleResponse @ApiUnsupportedMediaTypeResponse ResponseEntity patch(Long id, Map campos); @Operation(summary = "Atualiza o status de uma tarefa") @ApiResponse(responseCode = "200", description = "Status atualizado", content = @Content(schema = @Schema(implementation = TarefaResponseDTO.class))) - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiBusinessRuleResponse @ApiUnsupportedMediaTypeResponse ResponseEntity patchStatus(Long id, TarefaStatusUpdateDTO dto); @Operation(summary = "Reabre uma tarefa") @ApiResponse(responseCode = "200", description = "Tarefa reaberta", content = @Content(schema = @Schema(implementation = TarefaResponseDTO.class))) - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiBusinessRuleResponse ResponseEntity reabrir(Long id, LocalDate novoPrazo); @Operation(summary = "Reatribui uma tarefa") @ApiResponse(responseCode = "200", description = "Tarefa reatribuída", content = @Content(schema = @Schema(implementation = TarefaResponseDTO.class))) - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiBusinessRuleResponse ResponseEntity reatribuir(Long id, Long idResponsavel); @Operation(summary = "Exclui uma tarefa") @ApiResponse(responseCode = "204", description = "Tarefa excluída") - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiBusinessRuleResponse ResponseEntity excluir(Long id); } diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/TelefoneOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/TelefoneOpenapi.java index 3824ec7..d2efa8d 100644 --- a/src/main/java/br/com/acta/common/config/swagger/openapi/TelefoneOpenapi.java +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/TelefoneOpenapi.java @@ -1,8 +1,8 @@ package br.com.acta.common.config.swagger.openapi; import br.com.acta.common.config.swagger.annotation.ApiAuthenticationResponses; +import br.com.acta.common.config.swagger.annotation.ApiResourceResponses; import br.com.acta.common.config.swagger.annotation.ApiBadRequestResponse; -import br.com.acta.common.config.swagger.annotation.ApiConflictResponse; import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; @@ -30,19 +30,13 @@ public interface TelefoneOpenapi { @Operation(summary = "Adiciona um telefone a uma empresa") @ApiResponse(responseCode = "201", description = "Telefone adicionado", content = @Content(schema = @Schema(implementation = TelefoneResponseDTO.class))) - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiUnsupportedMediaTypeResponse ResponseEntity inserirTelefoneEmpresa(Long idEmpresa, TelefoneRequestDTO dto); @Operation(summary = "Exclui um telefone de uma empresa") @ApiResponse(responseCode = "204", description = "Telefone excluído") - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses ResponseEntity excluirTelefoneEmpresa(Long idEmpresa, Long idTelefone); @Operation(summary = "Lista os telefones de um colaborador") @@ -54,18 +48,12 @@ public interface TelefoneOpenapi { @Operation(summary = "Adiciona um telefone a um colaborador") @ApiResponse(responseCode = "201", description = "Telefone adicionado", content = @Content(schema = @Schema(implementation = TelefoneResponseDTO.class))) - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiUnsupportedMediaTypeResponse ResponseEntity inserirTelefoneColaborador(Long idColaborador, TelefoneRequestDTO dto); @Operation(summary = "Exclui um telefone de um colaborador") @ApiResponse(responseCode = "204", description = "Telefone excluído") - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses ResponseEntity excluirTelefoneColaborador(Long idColaborador, Long idTelefone); } diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/TreinamentoOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/TreinamentoOpenapi.java index 4a5905a..9bdc4a0 100644 --- a/src/main/java/br/com/acta/common/config/swagger/openapi/TreinamentoOpenapi.java +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/TreinamentoOpenapi.java @@ -1,9 +1,9 @@ package br.com.acta.common.config.swagger.openapi; import br.com.acta.common.config.swagger.annotation.ApiAuthenticationResponses; +import br.com.acta.common.config.swagger.annotation.ApiResourceResponses; import br.com.acta.common.config.swagger.annotation.ApiBadRequestResponse; import br.com.acta.common.config.swagger.annotation.ApiBusinessRuleResponse; -import br.com.acta.common.config.swagger.annotation.ApiConflictResponse; import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; @@ -39,29 +39,20 @@ public interface TreinamentoOpenapi { @Operation(summary = "Cria um treinamento") @ApiResponse(responseCode = "201", description = "Treinamento criado", content = @Content(schema = @Schema(implementation = TreinamentoResponseDTO.class))) - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiBusinessRuleResponse @ApiUnsupportedMediaTypeResponse ResponseEntity inserir(Long idCiclo, TreinamentoRequestDTO dto); @Operation(summary = "Atualiza parcialmente um treinamento") @ApiResponse(responseCode = "200", description = "Treinamento atualizado", content = @Content(schema = @Schema(implementation = TreinamentoResponseDTO.class))) - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiUnsupportedMediaTypeResponse ResponseEntity patch(Long id, Map campos); @Operation(summary = "Exclui um treinamento") @ApiResponse(responseCode = "204", description = "Treinamento excluído") - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiBusinessRuleResponse ResponseEntity excluir(Long id); } diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/UsuarioCicloOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/UsuarioCicloOpenapi.java index af56a70..1057618 100644 --- a/src/main/java/br/com/acta/common/config/swagger/openapi/UsuarioCicloOpenapi.java +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/UsuarioCicloOpenapi.java @@ -1,9 +1,9 @@ package br.com.acta.common.config.swagger.openapi; import br.com.acta.common.config.swagger.annotation.ApiAuthenticationResponses; +import br.com.acta.common.config.swagger.annotation.ApiResourceResponses; import br.com.acta.common.config.swagger.annotation.ApiBadRequestResponse; import br.com.acta.common.config.swagger.annotation.ApiBusinessRuleResponse; -import br.com.acta.common.config.swagger.annotation.ApiConflictResponse; import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; @@ -32,38 +32,26 @@ public interface UsuarioCicloOpenapi { @Operation(summary = "Adiciona um usuário ao ciclo") @ApiResponse(responseCode = "201", description = "Usuário adicionado", content = @Content(schema = @Schema(implementation = UsuarioCicloResponseDTO.class))) - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiBusinessRuleResponse @ApiUnsupportedMediaTypeResponse ResponseEntity inserir(Long idCiclo, UsuarioCicloRequestDTO dto); @Operation(summary = "Atualiza o papel de um usuário no ciclo") @ApiResponse(responseCode = "200", description = "Papel atualizado", content = @Content(schema = @Schema(implementation = UsuarioCicloResponseDTO.class))) - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiBusinessRuleResponse ResponseEntity patch(Long idCiclo, Long idUsuario, PapelCiclo papelCiclo); @Operation(summary = "Substitui o responsável pelo ciclo") @ApiResponse(responseCode = "200", description = "Responsável substituído", content = @Content(array = @ArraySchema(schema = @Schema(implementation = UsuarioCicloResponseDTO.class)))) - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiBusinessRuleResponse ResponseEntity> substituirResponsavel(Long idCiclo, Long idUsuarioAntigo, Long idUsuarioNovo); @Operation(summary = "Remove um usuário do ciclo") @ApiResponse(responseCode = "204", description = "Usuário removido") - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiBusinessRuleResponse ResponseEntity excluir(Long idCiclo, Long idUsuario); } diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/UsuarioOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/UsuarioOpenapi.java index 6be4f2e..a031b18 100644 --- a/src/main/java/br/com/acta/common/config/swagger/openapi/UsuarioOpenapi.java +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/UsuarioOpenapi.java @@ -1,8 +1,8 @@ package br.com.acta.common.config.swagger.openapi; import br.com.acta.common.config.swagger.annotation.ApiAuthenticationResponses; +import br.com.acta.common.config.swagger.annotation.ApiResourceResponses; import br.com.acta.common.config.swagger.annotation.ApiBadRequestResponse; -import br.com.acta.common.config.swagger.annotation.ApiConflictResponse; import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; @@ -46,35 +46,23 @@ public interface UsuarioOpenapi { @Operation(summary = "Cria um usuário") @ApiResponse(responseCode = "201", description = "Usuário criado", content = @Content(schema = @Schema(implementation = UsuarioResponseDTO.class))) - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiUnsupportedMediaTypeResponse ResponseEntity inserir(UsuarioRequestDTO dto); @Operation(summary = "Atualiza parcialmente um usuário") @ApiResponse(responseCode = "200", description = "Usuário atualizado", content = @Content(schema = @Schema(implementation = UsuarioResponseDTO.class))) - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiUnsupportedMediaTypeResponse ResponseEntity patch(Long id, Map campos); @Operation(summary = "Remove a foto de um usuário") @ApiResponse(responseCode = "200", description = "Foto removida", content = @Content(schema = @Schema(implementation = UsuarioResponseDTO.class))) - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses ResponseEntity excluirFoto(Long id); @Operation(summary = "Inativa um usuário") @ApiResponse(responseCode = "204", description = "Usuário inativado") - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses ResponseEntity excluir(Long id); } diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/UsuarioTreinamentoOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/UsuarioTreinamentoOpenapi.java index e345975..f996d43 100644 --- a/src/main/java/br/com/acta/common/config/swagger/openapi/UsuarioTreinamentoOpenapi.java +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/UsuarioTreinamentoOpenapi.java @@ -1,10 +1,9 @@ package br.com.acta.common.config.swagger.openapi; import br.com.acta.common.config.swagger.annotation.ApiAuthenticationResponses; +import br.com.acta.common.config.swagger.annotation.ApiResourceResponses; import br.com.acta.common.config.swagger.annotation.ApiBadRequestResponse; import br.com.acta.common.config.swagger.annotation.ApiBusinessRuleResponse; -import br.com.acta.common.config.swagger.annotation.ApiConflictResponse; -import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; import br.com.acta.dto.join.usuario_treinamento.UsuarioTreinamentoRequestDTO; @@ -31,29 +30,20 @@ public interface UsuarioTreinamentoOpenapi { @Operation(summary = "Adiciona um usuário ao treinamento") @ApiResponse(responseCode = "201", description = "Usuário adicionado", content = @Content(schema = @Schema(implementation = UsuarioTreinamentoResponseDTO.class))) - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiBusinessRuleResponse @ApiUnsupportedMediaTypeResponse ResponseEntity inserir(Long id, UsuarioTreinamentoRequestDTO dto); @Operation(summary = "Atualiza o status do usuário no treinamento") @ApiResponse(responseCode = "200", description = "Status atualizado", content = @Content(schema = @Schema(implementation = UsuarioTreinamentoResponseDTO.class))) - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiBusinessRuleResponse ResponseEntity patchStatus(Long id, Long idUsuario, StatusTreinamento status); @Operation(summary = "Remove um usuário do treinamento") @ApiResponse(responseCode = "204", description = "Usuário removido") - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiBusinessRuleResponse ResponseEntity excluir(Long id, Long idUsuario); } diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/VerificacaoResultadoOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/VerificacaoResultadoOpenapi.java index c045bcc..2e82610 100644 --- a/src/main/java/br/com/acta/common/config/swagger/openapi/VerificacaoResultadoOpenapi.java +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/VerificacaoResultadoOpenapi.java @@ -1,9 +1,9 @@ package br.com.acta.common.config.swagger.openapi; import br.com.acta.common.config.swagger.annotation.ApiAuthenticationResponses; +import br.com.acta.common.config.swagger.annotation.ApiResourceResponses; import br.com.acta.common.config.swagger.annotation.ApiBadRequestResponse; import br.com.acta.common.config.swagger.annotation.ApiBusinessRuleResponse; -import br.com.acta.common.config.swagger.annotation.ApiConflictResponse; import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; @@ -39,30 +39,21 @@ public interface VerificacaoResultadoOpenapi { @Operation(summary = "Cria uma verificação") @ApiResponse(responseCode = "201", description = "Verificação criada", content = @Content(schema = @Schema(implementation = VerificacaoResultadoResponseDTO.class))) - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiBusinessRuleResponse @ApiUnsupportedMediaTypeResponse ResponseEntity inserir(Long idCiclo, Long idCriadoPor, VerificacaoResultadoRequestDTO dto); @Operation(summary = "Atualiza parcialmente uma verificação") @ApiResponse(responseCode = "200", description = "Verificação atualizada", content = @Content(schema = @Schema(implementation = VerificacaoResultadoResponseDTO.class))) - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiBusinessRuleResponse @ApiUnsupportedMediaTypeResponse ResponseEntity patch(Long id, Map campos); @Operation(summary = "Exclui uma verificação") @ApiResponse(responseCode = "204", description = "Verificação excluída") - @ApiAuthenticationResponses - @ApiBadRequestResponse - @ApiNotFoundResponse - @ApiConflictResponse + @ApiResourceResponses @ApiBusinessRuleResponse ResponseEntity excluir(Long id); } From ab1adc43b9edcbea2f547339cbd09eff25bfb9b6 Mon Sep 17 00:00:00 2001 From: Davi Aliaga Date: Sun, 20 Sep 2026 13:03:01 -0300 Subject: [PATCH 15/16] =?UTF-8?q?feat/swagger:=20adiciona=20exemplos=20de?= =?UTF-8?q?=20respostas=20de=20erro=20para=20autentica=C3=A7=C3=A3o=20e=20?= =?UTF-8?q?requisi=C3=A7=C3=B5es=20inv=C3=A1lidas=20na=20documenta=C3=A7?= =?UTF-8?q?=C3=A3o=20OpenAPI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ApiAuthenticationResponses.java | 6 ++- .../annotation/ApiBadRequestResponse.java | 4 +- .../annotation/ApiBusinessRuleResponse.java | 4 +- .../annotation/ApiConflictResponse.java | 4 +- .../annotation/ApiNotFoundResponse.java | 4 +- .../ApiUnsupportedMediaTypeResponse.java | 4 +- .../examples/SwaggerResponseExamples.java | 40 +++++++++++++++++++ 7 files changed, 59 insertions(+), 7 deletions(-) diff --git a/src/main/java/br/com/acta/common/config/swagger/annotation/ApiAuthenticationResponses.java b/src/main/java/br/com/acta/common/config/swagger/annotation/ApiAuthenticationResponses.java index 51e4807..9ef35d5 100644 --- a/src/main/java/br/com/acta/common/config/swagger/annotation/ApiAuthenticationResponses.java +++ b/src/main/java/br/com/acta/common/config/swagger/annotation/ApiAuthenticationResponses.java @@ -1,7 +1,9 @@ package br.com.acta.common.config.swagger.annotation; +import br.com.acta.common.config.swagger.examples.SwaggerResponseExamples; import br.com.acta.common.handler.ErroResponse; import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.ExampleObject; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; @@ -17,12 +19,12 @@ @ApiResponse( responseCode = "401", description = "ID Token do Firebase ausente ou inválido", - content = @Content(mediaType = "application/json", schema = @Schema(implementation = ErroResponse.class)) + content = @Content(mediaType = "application/json", schema = @Schema(implementation = ErroResponse.class), examples = @ExampleObject(value = SwaggerResponseExamples.ERRO_401)) ), @ApiResponse( responseCode = "403", description = "Usuário sem permissão para acessar o recurso", - content = @Content(mediaType = "application/json", schema = @Schema(implementation = ErroResponse.class)) + content = @Content(mediaType = "application/json", schema = @Schema(implementation = ErroResponse.class), examples = @ExampleObject(value = SwaggerResponseExamples.ERRO_403)) ) }) public @interface ApiAuthenticationResponses { diff --git a/src/main/java/br/com/acta/common/config/swagger/annotation/ApiBadRequestResponse.java b/src/main/java/br/com/acta/common/config/swagger/annotation/ApiBadRequestResponse.java index af9efdc..08e51eb 100644 --- a/src/main/java/br/com/acta/common/config/swagger/annotation/ApiBadRequestResponse.java +++ b/src/main/java/br/com/acta/common/config/swagger/annotation/ApiBadRequestResponse.java @@ -1,7 +1,9 @@ package br.com.acta.common.config.swagger.annotation; +import br.com.acta.common.config.swagger.examples.SwaggerResponseExamples; import br.com.acta.common.handler.ErroResponse; import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.ExampleObject; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; @@ -15,7 +17,7 @@ @ApiResponse( responseCode = "400", description = "Requisição inválida", - content = @Content(mediaType = "application/json", schema = @Schema(implementation = ErroResponse.class)) + content = @Content(mediaType = "application/json", schema = @Schema(implementation = ErroResponse.class), examples = @ExampleObject(value = SwaggerResponseExamples.ERRO_400)) ) public @interface ApiBadRequestResponse { } diff --git a/src/main/java/br/com/acta/common/config/swagger/annotation/ApiBusinessRuleResponse.java b/src/main/java/br/com/acta/common/config/swagger/annotation/ApiBusinessRuleResponse.java index 6969909..06eefc1 100644 --- a/src/main/java/br/com/acta/common/config/swagger/annotation/ApiBusinessRuleResponse.java +++ b/src/main/java/br/com/acta/common/config/swagger/annotation/ApiBusinessRuleResponse.java @@ -1,7 +1,9 @@ package br.com.acta.common.config.swagger.annotation; +import br.com.acta.common.config.swagger.examples.SwaggerResponseExamples; import br.com.acta.common.handler.ErroResponse; import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.ExampleObject; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; @@ -15,7 +17,7 @@ @ApiResponse( responseCode = "422", description = "Regra de negócio não atendida", - content = @Content(mediaType = "application/json", schema = @Schema(implementation = ErroResponse.class)) + content = @Content(mediaType = "application/json", schema = @Schema(implementation = ErroResponse.class), examples = @ExampleObject(value = SwaggerResponseExamples.ERRO_422)) ) public @interface ApiBusinessRuleResponse { } diff --git a/src/main/java/br/com/acta/common/config/swagger/annotation/ApiConflictResponse.java b/src/main/java/br/com/acta/common/config/swagger/annotation/ApiConflictResponse.java index e3049b0..e49a633 100644 --- a/src/main/java/br/com/acta/common/config/swagger/annotation/ApiConflictResponse.java +++ b/src/main/java/br/com/acta/common/config/swagger/annotation/ApiConflictResponse.java @@ -1,7 +1,9 @@ package br.com.acta.common.config.swagger.annotation; +import br.com.acta.common.config.swagger.examples.SwaggerResponseExamples; import br.com.acta.common.handler.ErroResponse; import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.ExampleObject; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; @@ -15,7 +17,7 @@ @ApiResponse( responseCode = "409", description = "Conflito com os dados existentes", - content = @Content(mediaType = "application/json", schema = @Schema(implementation = ErroResponse.class)) + content = @Content(mediaType = "application/json", schema = @Schema(implementation = ErroResponse.class), examples = @ExampleObject(value = SwaggerResponseExamples.ERRO_409)) ) public @interface ApiConflictResponse { } diff --git a/src/main/java/br/com/acta/common/config/swagger/annotation/ApiNotFoundResponse.java b/src/main/java/br/com/acta/common/config/swagger/annotation/ApiNotFoundResponse.java index 4fa157e..d5b1184 100644 --- a/src/main/java/br/com/acta/common/config/swagger/annotation/ApiNotFoundResponse.java +++ b/src/main/java/br/com/acta/common/config/swagger/annotation/ApiNotFoundResponse.java @@ -1,7 +1,9 @@ package br.com.acta.common.config.swagger.annotation; +import br.com.acta.common.config.swagger.examples.SwaggerResponseExamples; import br.com.acta.common.handler.ErroResponse; import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.ExampleObject; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; @@ -15,7 +17,7 @@ @ApiResponse( responseCode = "404", description = "Recurso não encontrado", - content = @Content(mediaType = "application/json", schema = @Schema(implementation = ErroResponse.class)) + content = @Content(mediaType = "application/json", schema = @Schema(implementation = ErroResponse.class), examples = @ExampleObject(value = SwaggerResponseExamples.ERRO_404)) ) public @interface ApiNotFoundResponse { } diff --git a/src/main/java/br/com/acta/common/config/swagger/annotation/ApiUnsupportedMediaTypeResponse.java b/src/main/java/br/com/acta/common/config/swagger/annotation/ApiUnsupportedMediaTypeResponse.java index ed68387..a521a7f 100644 --- a/src/main/java/br/com/acta/common/config/swagger/annotation/ApiUnsupportedMediaTypeResponse.java +++ b/src/main/java/br/com/acta/common/config/swagger/annotation/ApiUnsupportedMediaTypeResponse.java @@ -1,7 +1,9 @@ package br.com.acta.common.config.swagger.annotation; +import br.com.acta.common.config.swagger.examples.SwaggerResponseExamples; import br.com.acta.common.handler.ErroResponse; import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.ExampleObject; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; @@ -15,7 +17,7 @@ @ApiResponse( responseCode = "415", description = "Tipo de conteúdo enviado não suportado", - content = @Content(mediaType = "application/json", schema = @Schema(implementation = ErroResponse.class)) + content = @Content(mediaType = "application/json", schema = @Schema(implementation = ErroResponse.class), examples = @ExampleObject(value = SwaggerResponseExamples.ERRO_415)) ) public @interface ApiUnsupportedMediaTypeResponse { } diff --git a/src/main/java/br/com/acta/common/config/swagger/examples/SwaggerResponseExamples.java b/src/main/java/br/com/acta/common/config/swagger/examples/SwaggerResponseExamples.java index fc0b741..199c5ce 100644 --- a/src/main/java/br/com/acta/common/config/swagger/examples/SwaggerResponseExamples.java +++ b/src/main/java/br/com/acta/common/config/swagger/examples/SwaggerResponseExamples.java @@ -11,6 +11,26 @@ public final class SwaggerResponseExamples { } """; + public static final String ERRO_401 = """ + { + "mensagens": [ + "ID Token do Firebase ausente ou inválido" + ], + "httpStatus": 401, + "timestamp": "2026-08-06T12:07:00" + } + """; + + public static final String ERRO_403 = """ + { + "mensagens": [ + "Usuário sem permissão para acessar o recurso" + ], + "httpStatus": 403, + "timestamp": "2026-08-06T12:07:00" + } + """; + public static final String ERRO_404 = """ { "mensagens": [ @@ -30,4 +50,24 @@ public final class SwaggerResponseExamples { "timestamp": "2026-08-06T12:07:00" } """; + + public static final String ERRO_415 = """ + { + "mensagens": [ + "Tipo de conteúdo enviado não suportado" + ], + "httpStatus": 415, + "timestamp": "2026-08-06T12:07:00" + } + """; + + public static final String ERRO_422 = """ + { + "mensagens": [ + "Regra de negócio não atendida" + ], + "httpStatus": 422, + "timestamp": "2026-08-06T12:07:00" + } + """; } \ No newline at end of file From 375b8dd85fc453454e906b0ea7bcbab8e57510fe Mon Sep 17 00:00:00 2001 From: Davi Aliaga Date: Sun, 20 Sep 2026 13:24:13 -0300 Subject: [PATCH 16/16] =?UTF-8?q?docs/swagger:=20melhora=20documenta=C3=A7?= =?UTF-8?q?=C3=A3o=20da=20api,=20ampliando=20para=20documenta=C3=A7=C3=A3o?= =?UTF-8?q?=20de=20par=C3=A2metrs=20dos=20m=C3=A9todos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SwaggerParameterDescriptions.java | 62 +++++++++++++++++++ .../swagger/openapi/AlertaPrazoOpenapi.java | 6 +- .../config/swagger/openapi/AuthOpenapi.java | 5 +- .../swagger/openapi/CausaRaizOpenapi.java | 15 +++-- .../config/swagger/openapi/CicloOpenapi.java | 17 ++--- .../swagger/openapi/ColaboradorOpenapi.java | 13 ++-- .../openapi/EfeitoSecundarioOpenapi.java | 11 ++-- .../config/swagger/openapi/EmailOpenapi.java | 15 +++-- .../swagger/openapi/EmpresaOpenapi.java | 13 ++-- .../openapi/EnderecoEmpresaOpenapi.java | 11 ++-- .../config/swagger/openapi/MetaOpenapi.java | 21 ++++--- .../swagger/openapi/Plano5W2HOpenapi.java | 11 ++-- .../swagger/openapi/PlanoAcaoOpenapi.java | 15 +++-- .../openapi/PriorizacaoProblemaOpenapi.java | 11 ++-- .../swagger/openapi/ProblemaOpenapi.java | 15 +++-- .../openapi/TarefaDependenteOpenapi.java | 8 ++- .../config/swagger/openapi/TarefaOpenapi.java | 19 +++--- .../swagger/openapi/TelefoneOpenapi.java | 15 +++-- .../swagger/openapi/TreinamentoOpenapi.java | 13 ++-- .../swagger/openapi/UsuarioCicloOpenapi.java | 13 ++-- .../swagger/openapi/UsuarioOpenapi.java | 17 ++--- .../openapi/UsuarioTreinamentoOpenapi.java | 11 ++-- .../openapi/VerificacaoResultadoOpenapi.java | 13 ++-- 23 files changed, 237 insertions(+), 113 deletions(-) create mode 100644 src/main/java/br/com/acta/common/config/swagger/examples/SwaggerParameterDescriptions.java diff --git a/src/main/java/br/com/acta/common/config/swagger/examples/SwaggerParameterDescriptions.java b/src/main/java/br/com/acta/common/config/swagger/examples/SwaggerParameterDescriptions.java new file mode 100644 index 0000000..8d42d4b --- /dev/null +++ b/src/main/java/br/com/acta/common/config/swagger/examples/SwaggerParameterDescriptions.java @@ -0,0 +1,62 @@ +package br.com.acta.common.config.swagger.examples; + +public final class SwaggerParameterDescriptions { + public static final String ID_ALERTA = "ID do alerta de prazo"; + public static final String ID_CAUSA_RAIZ = "ID da causa-raiz"; + public static final String ID_CICLO = "ID do ciclo"; + public static final String ID_COLABORADOR = "ID do colaborador"; + public static final String ID_EFEITO_SECUNDARIO = "ID do efeito secundário"; + public static final String ID_EMAIL = "ID do e-mail"; + public static final String ID_EMPRESA = "ID da empresa"; + public static final String ID_ENDERECO = "ID do endereço"; + public static final String ID_META = "ID da meta"; + public static final String ID_PLANO_5W2H = "ID do plano 5W2H"; + public static final String ID_PLANO_ACAO = "ID do plano de ação"; + public static final String ID_PROBLEMA = "ID do problema"; + public static final String ID_RESULTADO = "ID da verificação de resulta0do"; + public static final String ID_TAREFA = "ID da tarefa"; + public static final String ID_TELEFONE = "ID do telefone"; + public static final String ID_TREINAMENTO = "ID do treinamento"; + public static final String ID_USUARIO = "ID do usuário"; + public static final String ID_CRIADO_POR = "ID do usuário responsável pela criação"; + public static final String ID_DEPENDENTE = "ID da tarefa dependente"; + public static final String ID_GESTOR = "ID do gestor usado para filtrar os ciclos"; + public static final String ID_PROBLEMA_PAI = "ID do problema pai usado no filtro"; + public static final String ID_RESPONSAVEL = "ID do responsável"; + public static final String IDS_RESPONSAVEIS = "IDs dos responsáveis pela meta"; + public static final String ID_USUARIO_ANTIGO = "ID do usuário que deixará de ser responsável pelo ciclo"; + public static final String ID_USUARIO_NOVO = "ID do novo responsável pelo ciclo"; + + public static final String FILTRO_ACEITA = "Filtra pelo aceite da causa-raiz"; + public static final String FILTRO_ID_EMPRESA = "ID da empresa usado no filtro"; + public static final String FILTRO_ID_PROBLEMA = "ID do problema usado no filtro"; + public static final String FILTRO_ID_RESPONSAVEL = "ID do responsável usado no filtro"; + public static final String FILTRO_ID_USUARIO = "ID do usuário usado no filtro"; + public static final String FILTRO_PRINCIPAL = "Filtra pela indicação de causa-raiz principal"; + public static final String FILTRO_PRIORIDADE = "Filtra pela prioridade"; + public static final String FILTRO_STATUS = "Filtra pelo status"; + public static final String NOVO_STATUS = "Novo status do recurso"; + public static final String ACEITA_CAUSA_RAIZ = "Indica se a causa-raiz foi aceita"; + public static final String NOVO_PRAZO = "Novo prazo da tarefa reaberta"; + public static final String PAPEL_CICLO = "Novo papel do usuário no ciclo"; + public static final String TAMANHO_EMPRESA = "Filtra as empresas pelo tamanho"; + public static final String TIPO_USUARIO = "Filtra os usuários pelo tipo"; + + public static final String CAMPOS_CAUSA_RAIZ = "Campos da causa-raiz a serem atualizados"; + public static final String CAMPOS_CICLO = "Campos do ciclo a serem atualizados"; + public static final String CAMPOS_COLABORADOR = "Campos do colaborador a serem atualizados"; + public static final String CAMPOS_EFEITO_SECUNDARIO = "Campos do efeito secundário a serem atualizados"; + public static final String CAMPOS_EMPRESA = "Campos da empresa a serem atualizados"; + public static final String CAMPOS_META = "Campos da meta a serem atualizados"; + public static final String CAMPOS_PLANO_5W2H = "Campos do plano 5W2H a serem atualizados"; + public static final String CAMPOS_PLANO_ACAO = "Campos do plano de ação a serem atualizados"; + public static final String CAMPOS_PRIORIZACAO = "Campos da priorização a serem atualizados"; + public static final String CAMPOS_PROBLEMA = "Campos do problema a serem atualizados"; + public static final String CAMPOS_TAREFA = "Campos da tarefa a serem atualizados"; + public static final String CAMPOS_TREINAMENTO = "Campos do treinamento a serem atualizados"; + public static final String CAMPOS_USUARIO = "Campos do usuário a serem atualizados"; + public static final String CAMPOS_VERIFICACAO = "Campos da verificação de resultado a serem atualizados"; + + private SwaggerParameterDescriptions() { + } +} diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/AlertaPrazoOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/AlertaPrazoOpenapi.java index bf331dc..b78455c 100644 --- a/src/main/java/br/com/acta/common/config/swagger/openapi/AlertaPrazoOpenapi.java +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/AlertaPrazoOpenapi.java @@ -6,8 +6,10 @@ import br.com.acta.common.config.swagger.annotation.ApiBusinessRuleResponse; import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; +import br.com.acta.common.config.swagger.examples.SwaggerParameterDescriptions; import br.com.acta.dto.pdca.alerta_prazo.AlertaPrazoResponseDTO; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; @@ -22,11 +24,11 @@ public interface AlertaPrazoOpenapi { @ApiAuthenticationResponses @ApiBadRequestResponse @ApiNotFoundResponse - ResponseEntity buscar(Long idTarefa); + ResponseEntity buscar(@Parameter(description = SwaggerParameterDescriptions.ID_TAREFA) Long idTarefa); @Operation(summary = "Marca um alerta como lido") @ApiResponse(responseCode = "200", description = "Alerta marcado como lido", content = @Content(schema = @Schema(implementation = AlertaPrazoResponseDTO.class))) @ApiResourceResponses @ApiBusinessRuleResponse - ResponseEntity marcarLido(Long idTarefa, Long id, Long idUsuario); + ResponseEntity marcarLido(@Parameter(description = SwaggerParameterDescriptions.ID_TAREFA) Long idTarefa, @Parameter(description = SwaggerParameterDescriptions.ID_ALERTA) Long id, @Parameter(description = SwaggerParameterDescriptions.ID_USUARIO) Long idUsuario); } diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/AuthOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/AuthOpenapi.java index c5a0807..010ec2e 100644 --- a/src/main/java/br/com/acta/common/config/swagger/openapi/AuthOpenapi.java +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/AuthOpenapi.java @@ -8,6 +8,7 @@ import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; import br.com.acta.dto.auth.MeResponseDTO; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; @@ -20,12 +21,12 @@ public interface AuthOpenapi { @Operation(summary = "Consulta o usuário autenticado") @ApiResponse(responseCode = "200", description = "Usuário autenticado", content = @Content(schema = @Schema(implementation = MeResponseDTO.class))) @ApiAuthenticationResponses - ResponseEntity me(UsuarioAutenticado usuario); + ResponseEntity me(@Parameter(hidden = true) UsuarioAutenticado usuario); @Operation(summary = "Ativa o usuário autenticado") @ApiResponse(responseCode = "200", description = "Usuário ativado", content = @Content(schema = @Schema(implementation = MeResponseDTO.class))) @ApiAuthenticationResponses @ApiNotFoundResponse @ApiConflictResponse - ResponseEntity ativar(FirebaseIdentity identity); + ResponseEntity ativar(@Parameter(hidden = true) FirebaseIdentity identity); } diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/CausaRaizOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/CausaRaizOpenapi.java index bd26ea5..9f46a25 100644 --- a/src/main/java/br/com/acta/common/config/swagger/openapi/CausaRaizOpenapi.java +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/CausaRaizOpenapi.java @@ -7,14 +7,17 @@ import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; +import br.com.acta.common.config.swagger.examples.SwaggerParameterDescriptions; import br.com.acta.dto.pdca.causa_raiz.CausaRaizRequestDTO; import br.com.acta.dto.pdca.causa_raiz.CausaRaizResponseDTO; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.media.ArraySchema; import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.parameters.RequestBody; import org.springframework.http.ResponseEntity; import java.util.List; @@ -27,36 +30,36 @@ public interface CausaRaizOpenapi { @ApiResponse(responseCode = "200", description = "Causas-raiz encontradas", content = @Content(array = @ArraySchema(schema = @Schema(implementation = CausaRaizResponseDTO.class)))) @ApiAuthenticationResponses @ApiBadRequestResponse - ResponseEntity> buscar(Long idCiclo, Boolean aceita, Boolean principal, Long idProblema); + ResponseEntity> buscar(@Parameter(description = SwaggerParameterDescriptions.ID_CICLO) Long idCiclo, @Parameter(description = SwaggerParameterDescriptions.FILTRO_ACEITA) Boolean aceita, @Parameter(description = SwaggerParameterDescriptions.FILTRO_PRINCIPAL) Boolean principal, @Parameter(description = SwaggerParameterDescriptions.FILTRO_ID_PROBLEMA) Long idProblema); @Operation(summary = "Busca uma causa-raiz") @ApiResponse(responseCode = "200", description = "Causa-raiz encontrada", content = @Content(schema = @Schema(implementation = CausaRaizResponseDTO.class))) @ApiAuthenticationResponses @ApiBadRequestResponse @ApiNotFoundResponse - ResponseEntity buscar(Long id); + ResponseEntity buscar(@Parameter(description = SwaggerParameterDescriptions.ID_CAUSA_RAIZ) Long id); @Operation(summary = "Cria uma causa-raiz") @ApiResponse(responseCode = "201", description = "Causa-raiz criada", content = @Content(schema = @Schema(implementation = CausaRaizResponseDTO.class))) @ApiResourceResponses @ApiBusinessRuleResponse @ApiUnsupportedMediaTypeResponse - ResponseEntity inserir(Long idCiclo, CausaRaizRequestDTO dto); + ResponseEntity inserir(@Parameter(description = SwaggerParameterDescriptions.ID_CICLO) Long idCiclo, @RequestBody(description = "Dados da causa-raiz", required = true) CausaRaizRequestDTO dto); @Operation(summary = "Atualiza parcialmente uma causa-raiz") @ApiResponse(responseCode = "200", description = "Causa-raiz atualizada", content = @Content(schema = @Schema(implementation = CausaRaizResponseDTO.class))) @ApiResourceResponses @ApiUnsupportedMediaTypeResponse - ResponseEntity patch(Long id, Map campos); + ResponseEntity patch(@Parameter(description = SwaggerParameterDescriptions.ID_CAUSA_RAIZ) Long id, @RequestBody(description = SwaggerParameterDescriptions.CAMPOS_CAUSA_RAIZ, required = true) Map campos); @Operation(summary = "Valida uma causa-raiz") @ApiResponse(responseCode = "200", description = "Causa-raiz validada", content = @Content(schema = @Schema(implementation = CausaRaizResponseDTO.class))) @ApiResourceResponses @ApiBusinessRuleResponse - ResponseEntity validar(Long id, Long idUsuario, Boolean aceita); + ResponseEntity validar(@Parameter(description = SwaggerParameterDescriptions.ID_CAUSA_RAIZ) Long id, @Parameter(description = SwaggerParameterDescriptions.ID_USUARIO) Long idUsuario, @Parameter(description = SwaggerParameterDescriptions.ACEITA_CAUSA_RAIZ) Boolean aceita); @Operation(summary = "Exclui uma causa-raiz") @ApiResponse(responseCode = "204", description = "Causa-raiz excluída") @ApiResourceResponses - ResponseEntity excluir(Long id); + ResponseEntity excluir(@Parameter(description = SwaggerParameterDescriptions.ID_CAUSA_RAIZ) Long id); } diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/CicloOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/CicloOpenapi.java index 1323817..61061b3 100644 --- a/src/main/java/br/com/acta/common/config/swagger/openapi/CicloOpenapi.java +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/CicloOpenapi.java @@ -7,15 +7,18 @@ import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; +import br.com.acta.common.config.swagger.examples.SwaggerParameterDescriptions; import br.com.acta.dto.pdca.ciclo.CicloRequestDTO; import br.com.acta.dto.pdca.ciclo.CicloResponseDTO; import br.com.acta.entity.enums.StatusCiclo; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.media.ArraySchema; import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.parameters.RequestBody; import org.springframework.http.ResponseEntity; import java.util.List; @@ -28,43 +31,43 @@ public interface CicloOpenapi { @ApiResponse(responseCode = "200", description = "Ciclos encontrados", content = @Content(array = @ArraySchema(schema = @Schema(implementation = CicloResponseDTO.class)))) @ApiAuthenticationResponses @ApiBadRequestResponse - ResponseEntity> buscar(Long idEmpresa, Long idGestor, StatusCiclo status); + ResponseEntity> buscar(@Parameter(description = SwaggerParameterDescriptions.FILTRO_ID_EMPRESA) Long idEmpresa, @Parameter(description = SwaggerParameterDescriptions.ID_GESTOR) Long idGestor, @Parameter(description = SwaggerParameterDescriptions.FILTRO_STATUS) StatusCiclo status); @Operation(summary = "Busca um ciclo") @ApiResponse(responseCode = "200", description = "Ciclo encontrado", content = @Content(schema = @Schema(implementation = CicloResponseDTO.class))) @ApiAuthenticationResponses @ApiBadRequestResponse @ApiNotFoundResponse - ResponseEntity buscar(Long id); + ResponseEntity buscar(@Parameter(description = SwaggerParameterDescriptions.ID_CICLO) Long id); @Operation(summary = "Cria um ciclo") @ApiResponse(responseCode = "201", description = "Ciclo criado", content = @Content(schema = @Schema(implementation = CicloResponseDTO.class))) @ApiResourceResponses @ApiUnsupportedMediaTypeResponse - ResponseEntity inserir(CicloRequestDTO cicloRequest); + ResponseEntity inserir(@RequestBody(description = "Dados do ciclo", required = true) CicloRequestDTO cicloRequest); @Operation(summary = "Atualiza parcialmente um ciclo") @ApiResponse(responseCode = "200", description = "Ciclo atualizado", content = @Content(schema = @Schema(implementation = CicloResponseDTO.class))) @ApiResourceResponses @ApiBusinessRuleResponse @ApiUnsupportedMediaTypeResponse - ResponseEntity patch(Long id, Map campos); + ResponseEntity patch(@Parameter(description = SwaggerParameterDescriptions.ID_CICLO) Long id, @RequestBody(description = SwaggerParameterDescriptions.CAMPOS_CICLO, required = true) Map campos); @Operation(summary = "Atualiza o status de um ciclo") @ApiResponse(responseCode = "200", description = "Status atualizado", content = @Content(schema = @Schema(implementation = CicloResponseDTO.class))) @ApiResourceResponses @ApiBusinessRuleResponse - ResponseEntity patchStatus(Long id, StatusCiclo status); + ResponseEntity patchStatus(@Parameter(description = SwaggerParameterDescriptions.ID_CICLO) Long id, @Parameter(description = SwaggerParameterDescriptions.NOVO_STATUS) StatusCiclo status); @Operation(summary = "Cancela um ciclo") @ApiResponse(responseCode = "204", description = "Ciclo cancelado") @ApiResourceResponses @ApiBusinessRuleResponse - ResponseEntity excluir(Long id); + ResponseEntity excluir(@Parameter(description = SwaggerParameterDescriptions.ID_CICLO) Long id); @Operation(summary = "Consulta o avanço de um ciclo") @ApiResponse(responseCode = "200", description = "Percentual de avanço do ciclo", content = @Content(schema = @Schema(implementation = Double.class))) @ApiAuthenticationResponses @ApiBadRequestResponse - ResponseEntity avancoCiclo(Long id); + ResponseEntity avancoCiclo(@Parameter(description = SwaggerParameterDescriptions.ID_CICLO) Long id); } diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/ColaboradorOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/ColaboradorOpenapi.java index 26d2175..007258b 100644 --- a/src/main/java/br/com/acta/common/config/swagger/openapi/ColaboradorOpenapi.java +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/ColaboradorOpenapi.java @@ -7,14 +7,17 @@ import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; +import br.com.acta.common.config.swagger.examples.SwaggerParameterDescriptions; import br.com.acta.dto.core.colaborador.ColaboradorRequestDTO; import br.com.acta.dto.core.colaborador.ColaboradorResponseDTO; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.media.ArraySchema; import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.parameters.RequestBody; import org.springframework.http.ResponseEntity; import java.util.List; @@ -28,7 +31,7 @@ public interface ColaboradorOpenapi { @ApiAuthenticationResponses @ApiBadRequestResponse @ApiNotFoundResponse - ResponseEntity> buscarPorEmpresa(Long idEmpresa); + ResponseEntity> buscarPorEmpresa(@Parameter(description = SwaggerParameterDescriptions.ID_EMPRESA) Long idEmpresa); @Operation(summary = "Lista os colaboradores") @ApiResponse(responseCode = "200", description = "Colaboradores encontrados", content = @Content(array = @ArraySchema(schema = @Schema(implementation = ColaboradorResponseDTO.class)))) @@ -41,23 +44,23 @@ public interface ColaboradorOpenapi { @ApiAuthenticationResponses @ApiBadRequestResponse @ApiNotFoundResponse - ResponseEntity buscar(Long id); + ResponseEntity buscar(@Parameter(description = SwaggerParameterDescriptions.ID_COLABORADOR) Long id); @Operation(summary = "Cria um colaborador") @ApiResponse(responseCode = "201", description = "Colaborador criado", content = @Content(schema = @Schema(implementation = ColaboradorResponseDTO.class))) @ApiResourceResponses @ApiBusinessRuleResponse @ApiUnsupportedMediaTypeResponse - ResponseEntity inserir(ColaboradorRequestDTO dto); + ResponseEntity inserir(@RequestBody(description = "Dados do colaborador", required = true) ColaboradorRequestDTO dto); @Operation(summary = "Atualiza parcialmente um colaborador") @ApiResponse(responseCode = "200", description = "Colaborador atualizado", content = @Content(schema = @Schema(implementation = ColaboradorResponseDTO.class))) @ApiResourceResponses @ApiUnsupportedMediaTypeResponse - ResponseEntity patch(Long id, Map dto); + ResponseEntity patch(@Parameter(description = SwaggerParameterDescriptions.ID_COLABORADOR) Long id, @RequestBody(description = SwaggerParameterDescriptions.CAMPOS_COLABORADOR, required = true) Map dto); @Operation(summary = "Inativa um colaborador") @ApiResponse(responseCode = "204", description = "Colaborador inativado") @ApiResourceResponses - ResponseEntity excluir(Long id); + ResponseEntity excluir(@Parameter(description = SwaggerParameterDescriptions.ID_COLABORADOR) Long id); } diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/EfeitoSecundarioOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/EfeitoSecundarioOpenapi.java index 12c49f7..b999387 100644 --- a/src/main/java/br/com/acta/common/config/swagger/openapi/EfeitoSecundarioOpenapi.java +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/EfeitoSecundarioOpenapi.java @@ -7,14 +7,17 @@ import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; +import br.com.acta.common.config.swagger.examples.SwaggerParameterDescriptions; import br.com.acta.dto.pdca.efeito_secundario.EfeitoSecundarioRequestDTO; import br.com.acta.dto.pdca.efeito_secundario.EfeitoSecundarioResponseDTO; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.media.ArraySchema; import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.parameters.RequestBody; import org.springframework.http.ResponseEntity; import java.util.List; @@ -28,25 +31,25 @@ public interface EfeitoSecundarioOpenapi { @ApiAuthenticationResponses @ApiBadRequestResponse @ApiNotFoundResponse - ResponseEntity> buscarEfeitosSecundarios(Long idResultado); + ResponseEntity> buscarEfeitosSecundarios(@Parameter(description = SwaggerParameterDescriptions.ID_RESULTADO) Long idResultado); @Operation(summary = "Cria um efeito secundário") @ApiResponse(responseCode = "201", description = "Efeito secundário criado", content = @Content(schema = @Schema(implementation = EfeitoSecundarioResponseDTO.class))) @ApiResourceResponses @ApiBusinessRuleResponse @ApiUnsupportedMediaTypeResponse - ResponseEntity inserir(Long idResultado, EfeitoSecundarioRequestDTO dto); + ResponseEntity inserir(@Parameter(description = SwaggerParameterDescriptions.ID_RESULTADO) Long idResultado, @RequestBody(description = "Dados do efeito secundário", required = true) EfeitoSecundarioRequestDTO dto); @Operation(summary = "Atualiza parcialmente um efeito secundário") @ApiResponse(responseCode = "200", description = "Efeito secundário atualizado", content = @Content(schema = @Schema(implementation = EfeitoSecundarioResponseDTO.class))) @ApiResourceResponses @ApiBusinessRuleResponse @ApiUnsupportedMediaTypeResponse - ResponseEntity patch(Long idResultado, Long idEfeitoSecundario, Map campos); + ResponseEntity patch(@Parameter(description = SwaggerParameterDescriptions.ID_RESULTADO) Long idResultado, @Parameter(description = SwaggerParameterDescriptions.ID_EFEITO_SECUNDARIO) Long idEfeitoSecundario, @RequestBody(description = SwaggerParameterDescriptions.CAMPOS_EFEITO_SECUNDARIO, required = true) Map campos); @Operation(summary = "Exclui um efeito secundário") @ApiResponse(responseCode = "204", description = "Efeito secundário excluído") @ApiResourceResponses @ApiBusinessRuleResponse - ResponseEntity excluir(Long idResultado, Long idEfeitoSecundario); + ResponseEntity excluir(@Parameter(description = SwaggerParameterDescriptions.ID_RESULTADO) Long idResultado, @Parameter(description = SwaggerParameterDescriptions.ID_EFEITO_SECUNDARIO) Long idEfeitoSecundario); } diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/EmailOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/EmailOpenapi.java index 759537f..241178a 100644 --- a/src/main/java/br/com/acta/common/config/swagger/openapi/EmailOpenapi.java +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/EmailOpenapi.java @@ -6,14 +6,17 @@ import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; +import br.com.acta.common.config.swagger.examples.SwaggerParameterDescriptions; import br.com.acta.dto.core.contato.email.EmailRequestDTO; import br.com.acta.dto.core.contato.email.EmailResponseDTO; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.media.ArraySchema; import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.parameters.RequestBody; import org.springframework.http.ResponseEntity; import java.util.List; @@ -26,34 +29,34 @@ public interface EmailOpenapi { @ApiAuthenticationResponses @ApiBadRequestResponse @ApiNotFoundResponse - ResponseEntity> buscarEmailEmpresa(Long idEmpresa); + ResponseEntity> buscarEmailEmpresa(@Parameter(description = SwaggerParameterDescriptions.ID_EMPRESA) Long idEmpresa); @Operation(summary = "Adiciona um e-mail a uma empresa") @ApiResponse(responseCode = "201", description = "E-mail adicionado", content = @Content(schema = @Schema(implementation = EmailResponseDTO.class))) @ApiResourceResponses @ApiUnsupportedMediaTypeResponse - ResponseEntity inserirEmailEmpresa(Long idEmpresa, EmailRequestDTO dto); + ResponseEntity inserirEmailEmpresa(@Parameter(description = SwaggerParameterDescriptions.ID_EMPRESA) Long idEmpresa, @RequestBody(description = "Dados do e-mail", required = true) EmailRequestDTO dto); @Operation(summary = "Exclui um e-mail de uma empresa") @ApiResponse(responseCode = "204", description = "E-mail excluído") @ApiResourceResponses - ResponseEntity excluirEmailEmpresa(Long idEmpresa, Long idEmail); + ResponseEntity excluirEmailEmpresa(@Parameter(description = SwaggerParameterDescriptions.ID_EMPRESA) Long idEmpresa, @Parameter(description = SwaggerParameterDescriptions.ID_EMAIL) Long idEmail); @Operation(summary = "Lista os e-mails de um colaborador") @ApiResponse(responseCode = "200", description = "E-mails encontrados", content = @Content(array = @ArraySchema(schema = @Schema(implementation = EmailResponseDTO.class)))) @ApiAuthenticationResponses @ApiBadRequestResponse @ApiNotFoundResponse - ResponseEntity> buscarEmailColaborador(Long idColaborador); + ResponseEntity> buscarEmailColaborador(@Parameter(description = SwaggerParameterDescriptions.ID_COLABORADOR) Long idColaborador); @Operation(summary = "Adiciona um e-mail a um colaborador") @ApiResponse(responseCode = "201", description = "E-mail adicionado", content = @Content(schema = @Schema(implementation = EmailResponseDTO.class))) @ApiResourceResponses @ApiUnsupportedMediaTypeResponse - ResponseEntity inserirEmailColaborador(Long idColaborador, EmailRequestDTO dto); + ResponseEntity inserirEmailColaborador(@Parameter(description = SwaggerParameterDescriptions.ID_COLABORADOR) Long idColaborador, @RequestBody(description = "Dados do e-mail", required = true) EmailRequestDTO dto); @Operation(summary = "Exclui um e-mail de um colaborador") @ApiResponse(responseCode = "204", description = "E-mail excluído") @ApiResourceResponses - ResponseEntity excluirEmailColaborador(Long idColaborador, Long idEmail); + ResponseEntity excluirEmailColaborador(@Parameter(description = SwaggerParameterDescriptions.ID_COLABORADOR) Long idColaborador, @Parameter(description = SwaggerParameterDescriptions.ID_EMAIL) Long idEmail); } diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/EmpresaOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/EmpresaOpenapi.java index 93283e5..6e976c8 100644 --- a/src/main/java/br/com/acta/common/config/swagger/openapi/EmpresaOpenapi.java +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/EmpresaOpenapi.java @@ -7,15 +7,18 @@ import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; +import br.com.acta.common.config.swagger.examples.SwaggerParameterDescriptions; import br.com.acta.dto.core.empresa.EmpresaRequestDTO; import br.com.acta.dto.core.empresa.EmpresaResponseDTO; import br.com.acta.entity.enums.TamanhoEmpresa; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.media.ArraySchema; import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.parameters.RequestBody; import org.springframework.http.ResponseEntity; import java.util.List; @@ -28,14 +31,14 @@ public interface EmpresaOpenapi { @ApiResponse(responseCode = "200", description = "Empresas encontradas", content = @Content(array = @ArraySchema(schema = @Schema(implementation = EmpresaResponseDTO.class)))) @ApiAuthenticationResponses @ApiBadRequestResponse - ResponseEntity> buscar(TamanhoEmpresa tamanho); + ResponseEntity> buscar(@Parameter(description = SwaggerParameterDescriptions.TAMANHO_EMPRESA) TamanhoEmpresa tamanho); @Operation(summary = "Busca uma empresa") @ApiResponse(responseCode = "200", description = "Empresa encontrada", content = @Content(schema = @Schema(implementation = EmpresaResponseDTO.class))) @ApiAuthenticationResponses @ApiBadRequestResponse @ApiNotFoundResponse - ResponseEntity buscar(Long id); + ResponseEntity buscar(@Parameter(description = SwaggerParameterDescriptions.ID_EMPRESA) Long id); @Operation(summary = "Cria uma empresa") @ApiResponse(responseCode = "201", description = "Empresa criada", content = @Content(schema = @Schema(implementation = EmpresaResponseDTO.class))) @@ -43,16 +46,16 @@ public interface EmpresaOpenapi { @ApiBadRequestResponse @ApiConflictResponse @ApiUnsupportedMediaTypeResponse - ResponseEntity inserir(EmpresaRequestDTO dto); + ResponseEntity inserir(@RequestBody(description = "Dados da empresa", required = true) EmpresaRequestDTO dto); @Operation(summary = "Atualiza parcialmente uma empresa") @ApiResponse(responseCode = "200", description = "Empresa atualizada", content = @Content(schema = @Schema(implementation = EmpresaResponseDTO.class))) @ApiResourceResponses @ApiUnsupportedMediaTypeResponse - ResponseEntity patch(Long id, Map campos); + ResponseEntity patch(@Parameter(description = SwaggerParameterDescriptions.ID_EMPRESA) Long id, @RequestBody(description = SwaggerParameterDescriptions.CAMPOS_EMPRESA, required = true) Map campos); @Operation(summary = "Inativa uma empresa") @ApiResponse(responseCode = "204", description = "Empresa inativada") @ApiResourceResponses - ResponseEntity excluir(Long id); + ResponseEntity excluir(@Parameter(description = SwaggerParameterDescriptions.ID_EMPRESA) Long id); } diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/EnderecoEmpresaOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/EnderecoEmpresaOpenapi.java index 885c4ce..2492a44 100644 --- a/src/main/java/br/com/acta/common/config/swagger/openapi/EnderecoEmpresaOpenapi.java +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/EnderecoEmpresaOpenapi.java @@ -6,14 +6,17 @@ import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; +import br.com.acta.common.config.swagger.examples.SwaggerParameterDescriptions; import br.com.acta.dto.core.empresa.endereco.EnderecoRequestDTO; import br.com.acta.dto.core.empresa.endereco.EnderecoResponseDTO; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.media.ArraySchema; import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.parameters.RequestBody; import org.springframework.http.ResponseEntity; import java.util.List; @@ -26,23 +29,23 @@ public interface EnderecoEmpresaOpenapi { @ApiAuthenticationResponses @ApiBadRequestResponse @ApiNotFoundResponse - ResponseEntity buscar(Long idEmpresa, Long idEndereco); + ResponseEntity buscar(@Parameter(description = SwaggerParameterDescriptions.ID_EMPRESA) Long idEmpresa, @Parameter(description = SwaggerParameterDescriptions.ID_ENDERECO) Long idEndereco); @Operation(summary = "Lista os endereços de uma empresa") @ApiResponse(responseCode = "200", description = "Endereços encontrados", content = @Content(array = @ArraySchema(schema = @Schema(implementation = EnderecoResponseDTO.class)))) @ApiAuthenticationResponses @ApiBadRequestResponse @ApiNotFoundResponse - ResponseEntity> buscar(Long idEmpresa); + ResponseEntity> buscar(@Parameter(description = SwaggerParameterDescriptions.ID_EMPRESA) Long idEmpresa); @Operation(summary = "Adiciona um endereço a uma empresa") @ApiResponse(responseCode = "201", description = "Endereço adicionado", content = @Content(schema = @Schema(implementation = EnderecoResponseDTO.class))) @ApiResourceResponses @ApiUnsupportedMediaTypeResponse - ResponseEntity inserir(Long idEmpresa, EnderecoRequestDTO dto); + ResponseEntity inserir(@Parameter(description = SwaggerParameterDescriptions.ID_EMPRESA) Long idEmpresa, @RequestBody(description = "Dados do endereço", required = true) EnderecoRequestDTO dto); @Operation(summary = "Exclui um endereço de uma empresa") @ApiResponse(responseCode = "204", description = "Endereço excluído") @ApiResourceResponses - ResponseEntity excluir(Long idEmpresa, Long idEndereco); + ResponseEntity excluir(@Parameter(description = SwaggerParameterDescriptions.ID_EMPRESA) Long idEmpresa, @Parameter(description = SwaggerParameterDescriptions.ID_ENDERECO) Long idEndereco); } diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/MetaOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/MetaOpenapi.java index 265111a..fd0ca21 100644 --- a/src/main/java/br/com/acta/common/config/swagger/openapi/MetaOpenapi.java +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/MetaOpenapi.java @@ -7,17 +7,20 @@ import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; +import br.com.acta.common.config.swagger.examples.SwaggerParameterDescriptions; import br.com.acta.dto.core.usuario.UsuarioSummaryResponseDTO; import br.com.acta.dto.pdca.meta.MetaRequestDTO; import br.com.acta.dto.pdca.meta.MetaResponseDTO; import br.com.acta.entity.enums.Prioridade; import br.com.acta.entity.enums.StatusMeta; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.media.ArraySchema; import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.parameters.RequestBody; import org.springframework.http.ResponseEntity; import java.util.List; @@ -30,54 +33,54 @@ public interface MetaOpenapi { @ApiResponse(responseCode = "200", description = "Metas encontradas", content = @Content(array = @ArraySchema(schema = @Schema(implementation = MetaResponseDTO.class)))) @ApiAuthenticationResponses @ApiBadRequestResponse - ResponseEntity> buscar(Long idCiclo, StatusMeta status, Prioridade prioridade); + ResponseEntity> buscar(@Parameter(description = SwaggerParameterDescriptions.ID_CICLO) Long idCiclo, @Parameter(description = SwaggerParameterDescriptions.FILTRO_STATUS) StatusMeta status, @Parameter(description = SwaggerParameterDescriptions.FILTRO_PRIORIDADE) Prioridade prioridade); @Operation(summary = "Busca uma meta") @ApiResponse(responseCode = "200", description = "Meta encontrada", content = @Content(schema = @Schema(implementation = MetaResponseDTO.class))) @ApiAuthenticationResponses @ApiBadRequestResponse @ApiNotFoundResponse - ResponseEntity buscar(Long id); + ResponseEntity buscar(@Parameter(description = SwaggerParameterDescriptions.ID_META) Long id); @Operation(summary = "Cria uma meta") @ApiResponse(responseCode = "201", description = "Meta criada", content = @Content(schema = @Schema(implementation = MetaResponseDTO.class))) @ApiResourceResponses @ApiBusinessRuleResponse @ApiUnsupportedMediaTypeResponse - ResponseEntity inserir(Long idPlanoAcao, MetaRequestDTO dto); + ResponseEntity inserir(@Parameter(description = SwaggerParameterDescriptions.ID_PLANO_ACAO) Long idPlanoAcao, @RequestBody(description = "Dados da meta", required = true) MetaRequestDTO dto); @Operation(summary = "Atualiza parcialmente uma meta") @ApiResponse(responseCode = "200", description = "Meta atualizada", content = @Content(schema = @Schema(implementation = MetaResponseDTO.class))) @ApiResourceResponses @ApiUnsupportedMediaTypeResponse - ResponseEntity patch(Long id, Map dto); + ResponseEntity patch(@Parameter(description = SwaggerParameterDescriptions.ID_META) Long id, @RequestBody(description = SwaggerParameterDescriptions.CAMPOS_META, required = true) Map dto); @Operation(summary = "Atualiza o status de uma meta") @ApiResponse(responseCode = "200", description = "Status atualizado", content = @Content(schema = @Schema(implementation = MetaResponseDTO.class))) @ApiResourceResponses - ResponseEntity patchStatus(Long id, StatusMeta status); + ResponseEntity patchStatus(@Parameter(description = SwaggerParameterDescriptions.ID_META) Long id, @Parameter(description = SwaggerParameterDescriptions.NOVO_STATUS) StatusMeta status); @Operation(summary = "Exclui uma meta") @ApiResponse(responseCode = "204", description = "Meta excluída") @ApiResourceResponses - ResponseEntity delete(Long id); + ResponseEntity delete(@Parameter(description = SwaggerParameterDescriptions.ID_META) Long id); @Operation(summary = "Lista os responsáveis por uma meta") @ApiResponse(responseCode = "200", description = "Responsáveis encontrados", content = @Content(array = @ArraySchema(schema = @Schema(implementation = UsuarioSummaryResponseDTO.class)))) @ApiAuthenticationResponses @ApiBadRequestResponse @ApiNotFoundResponse - ResponseEntity> buscarResponsaveis(Long id); + ResponseEntity> buscarResponsaveis(@Parameter(description = SwaggerParameterDescriptions.ID_META) Long id); @Operation(summary = "Adiciona responsáveis a uma meta") @ApiResponse(responseCode = "201", description = "Responsáveis adicionados", content = @Content(array = @ArraySchema(schema = @Schema(implementation = UsuarioSummaryResponseDTO.class)))) @ApiResourceResponses @ApiBusinessRuleResponse - ResponseEntity> adicionarResponsavel(List idsResponsaveis, Long id); + ResponseEntity> adicionarResponsavel(@Parameter(description = SwaggerParameterDescriptions.IDS_RESPONSAVEIS) List idsResponsaveis, @Parameter(description = SwaggerParameterDescriptions.ID_META) Long id); @Operation(summary = "Remove responsáveis de uma meta") @ApiResponse(responseCode = "204", description = "Responsáveis removidos") @ApiResourceResponses @ApiBusinessRuleResponse - ResponseEntity excluirResponsaveis(Long id, List idsResponsaveis); + ResponseEntity excluirResponsaveis(@Parameter(description = SwaggerParameterDescriptions.ID_META) Long id, @Parameter(description = SwaggerParameterDescriptions.IDS_RESPONSAVEIS) List idsResponsaveis); } diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/Plano5W2HOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/Plano5W2HOpenapi.java index e782782..4ac880a 100644 --- a/src/main/java/br/com/acta/common/config/swagger/openapi/Plano5W2HOpenapi.java +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/Plano5W2HOpenapi.java @@ -7,13 +7,16 @@ import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; +import br.com.acta.common.config.swagger.examples.SwaggerParameterDescriptions; import br.com.acta.dto.pdca.plano_5w2h.Plano5W2HRequestDTO; import br.com.acta.dto.pdca.plano_5w2h.Plano5W2HResponseDTO; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.parameters.RequestBody; import org.springframework.http.ResponseEntity; import java.util.Map; @@ -26,25 +29,25 @@ public interface Plano5W2HOpenapi { @ApiAuthenticationResponses @ApiBadRequestResponse @ApiNotFoundResponse - ResponseEntity buscar(Long idPlanoAcao); + ResponseEntity buscar(@Parameter(description = SwaggerParameterDescriptions.ID_PLANO_ACAO) Long idPlanoAcao); @Operation(summary = "Cria um plano 5W2H") @ApiResponse(responseCode = "201", description = "Plano 5W2H criado", content = @Content(schema = @Schema(implementation = Plano5W2HResponseDTO.class))) @ApiResourceResponses @ApiBusinessRuleResponse @ApiUnsupportedMediaTypeResponse - ResponseEntity inserir(Long idPlanoAcao, Plano5W2HRequestDTO dto); + ResponseEntity inserir(@Parameter(description = SwaggerParameterDescriptions.ID_PLANO_ACAO) Long idPlanoAcao, @RequestBody(description = "Dados do plano 5W2H", required = true) Plano5W2HRequestDTO dto); @Operation(summary = "Atualiza parcialmente um plano 5W2H") @ApiResponse(responseCode = "200", description = "Plano 5W2H atualizado", content = @Content(schema = @Schema(implementation = Plano5W2HResponseDTO.class))) @ApiResourceResponses @ApiBusinessRuleResponse @ApiUnsupportedMediaTypeResponse - ResponseEntity patch(Long id, Map campos); + ResponseEntity patch(@Parameter(description = SwaggerParameterDescriptions.ID_PLANO_5W2H) Long id, @RequestBody(description = SwaggerParameterDescriptions.CAMPOS_PLANO_5W2H, required = true) Map campos); @Operation(summary = "Exclui um plano 5W2H") @ApiResponse(responseCode = "204", description = "Plano 5W2H excluído") @ApiResourceResponses @ApiBusinessRuleResponse - ResponseEntity excluir(Long id); + ResponseEntity excluir(@Parameter(description = SwaggerParameterDescriptions.ID_PLANO_5W2H) Long id); } diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/PlanoAcaoOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/PlanoAcaoOpenapi.java index 4885703..f35305b 100644 --- a/src/main/java/br/com/acta/common/config/swagger/openapi/PlanoAcaoOpenapi.java +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/PlanoAcaoOpenapi.java @@ -7,16 +7,19 @@ import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; +import br.com.acta.common.config.swagger.examples.SwaggerParameterDescriptions; import br.com.acta.dto.pdca.plano_acao.PlanoAcaoRequestDTO; import br.com.acta.dto.pdca.plano_acao.PlanoAcaoResponseDTO; import br.com.acta.entity.enums.Prioridade; import br.com.acta.entity.enums.StatusPlanoAcao; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.media.ArraySchema; import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.parameters.RequestBody; import org.springframework.http.ResponseEntity; import java.util.List; @@ -29,37 +32,37 @@ public interface PlanoAcaoOpenapi { @ApiResponse(responseCode = "200", description = "Planos de ação encontrados", content = @Content(array = @ArraySchema(schema = @Schema(implementation = PlanoAcaoResponseDTO.class)))) @ApiAuthenticationResponses @ApiBadRequestResponse - ResponseEntity> buscar(Long idCiclo, StatusPlanoAcao status, Prioridade prioridade); + ResponseEntity> buscar(@Parameter(description = SwaggerParameterDescriptions.ID_CICLO) Long idCiclo, @Parameter(description = SwaggerParameterDescriptions.FILTRO_STATUS) StatusPlanoAcao status, @Parameter(description = SwaggerParameterDescriptions.FILTRO_PRIORIDADE) Prioridade prioridade); @Operation(summary = "Busca um plano de ação") @ApiResponse(responseCode = "200", description = "Plano de ação encontrado", content = @Content(schema = @Schema(implementation = PlanoAcaoResponseDTO.class))) @ApiAuthenticationResponses @ApiBadRequestResponse @ApiNotFoundResponse - ResponseEntity buscar(Long id); + ResponseEntity buscar(@Parameter(description = SwaggerParameterDescriptions.ID_PLANO_ACAO) Long id); @Operation(summary = "Cria um plano de ação") @ApiResponse(responseCode = "201", description = "Plano de ação criado", content = @Content(schema = @Schema(implementation = PlanoAcaoResponseDTO.class))) @ApiResourceResponses @ApiBusinessRuleResponse @ApiUnsupportedMediaTypeResponse - ResponseEntity inserir(Long idCiclo, PlanoAcaoRequestDTO dto, Long idCriadoPor); + ResponseEntity inserir(@Parameter(description = SwaggerParameterDescriptions.ID_CICLO) Long idCiclo, @RequestBody(description = "Dados do plano de ação", required = true) PlanoAcaoRequestDTO dto, @Parameter(description = SwaggerParameterDescriptions.ID_CRIADO_POR) Long idCriadoPor); @Operation(summary = "Atualiza parcialmente um plano de ação") @ApiResponse(responseCode = "200", description = "Plano de ação atualizado", content = @Content(schema = @Schema(implementation = PlanoAcaoResponseDTO.class))) @ApiResourceResponses @ApiUnsupportedMediaTypeResponse - ResponseEntity patch(Long id, Map campos); + ResponseEntity patch(@Parameter(description = SwaggerParameterDescriptions.ID_PLANO_ACAO) Long id, @RequestBody(description = SwaggerParameterDescriptions.CAMPOS_PLANO_ACAO, required = true) Map campos); @Operation(summary = "Atualiza o status de um plano de ação") @ApiResponse(responseCode = "200", description = "Status atualizado", content = @Content(schema = @Schema(implementation = PlanoAcaoResponseDTO.class))) @ApiResourceResponses @ApiBusinessRuleResponse - ResponseEntity patchStatus(Long id, StatusPlanoAcao status); + ResponseEntity patchStatus(@Parameter(description = SwaggerParameterDescriptions.ID_PLANO_ACAO) Long id, @Parameter(description = SwaggerParameterDescriptions.NOVO_STATUS) StatusPlanoAcao status); @Operation(summary = "Exclui um plano de ação") @ApiResponse(responseCode = "204", description = "Plano de ação excluído") @ApiResourceResponses @ApiBusinessRuleResponse - ResponseEntity excluir(Long id); + ResponseEntity excluir(@Parameter(description = SwaggerParameterDescriptions.ID_PLANO_ACAO) Long id); } diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/PriorizacaoProblemaOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/PriorizacaoProblemaOpenapi.java index b36c31c..c9e585b 100644 --- a/src/main/java/br/com/acta/common/config/swagger/openapi/PriorizacaoProblemaOpenapi.java +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/PriorizacaoProblemaOpenapi.java @@ -7,15 +7,18 @@ import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; +import br.com.acta.common.config.swagger.examples.SwaggerParameterDescriptions; import br.com.acta.dto.join.priorizacao_problema.PriorizacaoProblemaRequestDTO; import br.com.acta.dto.join.priorizacao_problema.PriorizacaoProblemaResponseDTO; import br.com.acta.dto.pdca.problema.ProblemaResponseDTO; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.media.ArraySchema; import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.parameters.RequestBody; import org.springframework.http.ResponseEntity; import java.util.List; @@ -30,23 +33,23 @@ public interface PriorizacaoProblemaOpenapi { @ApiBadRequestResponse @ApiNotFoundResponse @ApiBusinessRuleResponse - ResponseEntity> buscar(Long idProblema, Long idUsuario); + ResponseEntity> buscar(@Parameter(description = SwaggerParameterDescriptions.ID_PROBLEMA) Long idProblema, @Parameter(description = SwaggerParameterDescriptions.FILTRO_ID_USUARIO) Long idUsuario); @Operation(summary = "Cria uma priorização") @ApiResponse(responseCode = "201", description = "Priorização criada", content = @Content(schema = @Schema(implementation = PriorizacaoProblemaResponseDTO.class))) @ApiResourceResponses @ApiBusinessRuleResponse @ApiUnsupportedMediaTypeResponse - ResponseEntity inserir(Long idProblema, PriorizacaoProblemaRequestDTO dto); + ResponseEntity inserir(@Parameter(description = SwaggerParameterDescriptions.ID_PROBLEMA) Long idProblema, @RequestBody(description = "Dados da priorização", required = true) PriorizacaoProblemaRequestDTO dto); @Operation(summary = "Atualiza uma priorização") @ApiResponse(responseCode = "200", description = "Priorização atualizada", content = @Content(schema = @Schema(implementation = PriorizacaoProblemaResponseDTO.class))) @ApiResourceResponses @ApiUnsupportedMediaTypeResponse - ResponseEntity patch(Long idProblema, Long idUsuario, Map campos); + ResponseEntity patch(@Parameter(description = SwaggerParameterDescriptions.ID_PROBLEMA) Long idProblema, @Parameter(description = SwaggerParameterDescriptions.ID_USUARIO) Long idUsuario, @RequestBody(description = SwaggerParameterDescriptions.CAMPOS_PRIORIZACAO, required = true) Map campos); @Operation(summary = "Aplica o peso da priorização ao problema") @ApiResponse(responseCode = "200", description = "Peso aplicado", content = @Content(schema = @Schema(implementation = ProblemaResponseDTO.class))) @ApiResourceResponses - ResponseEntity aplicarPeso(Long idProblema); + ResponseEntity aplicarPeso(@Parameter(description = SwaggerParameterDescriptions.ID_PROBLEMA) Long idProblema); } diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/ProblemaOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/ProblemaOpenapi.java index ba20969..8015cc4 100644 --- a/src/main/java/br/com/acta/common/config/swagger/openapi/ProblemaOpenapi.java +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/ProblemaOpenapi.java @@ -7,15 +7,18 @@ import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; +import br.com.acta.common.config.swagger.examples.SwaggerParameterDescriptions; import br.com.acta.dto.pdca.problema.ProblemaRequestDTO; import br.com.acta.dto.pdca.problema.ProblemaResponseDTO; import br.com.acta.entity.enums.StatusProblema; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.media.ArraySchema; import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.parameters.RequestBody; import org.springframework.http.ResponseEntity; import java.util.List; @@ -28,37 +31,37 @@ public interface ProblemaOpenapi { @ApiResponse(responseCode = "200", description = "Problemas encontrados", content = @Content(array = @ArraySchema(schema = @Schema(implementation = ProblemaResponseDTO.class)))) @ApiAuthenticationResponses @ApiBadRequestResponse - ResponseEntity> buscar(Long idCiclo, StatusProblema status, Long idProblemaPai); + ResponseEntity> buscar(@Parameter(description = SwaggerParameterDescriptions.ID_CICLO) Long idCiclo, @Parameter(description = SwaggerParameterDescriptions.FILTRO_STATUS) StatusProblema status, @Parameter(description = SwaggerParameterDescriptions.ID_PROBLEMA_PAI) Long idProblemaPai); @Operation(summary = "Busca um problema") @ApiResponse(responseCode = "200", description = "Problema encontrado", content = @Content(schema = @Schema(implementation = ProblemaResponseDTO.class))) @ApiAuthenticationResponses @ApiBadRequestResponse @ApiNotFoundResponse - ResponseEntity buscar(Long id); + ResponseEntity buscar(@Parameter(description = SwaggerParameterDescriptions.ID_PROBLEMA) Long id); @Operation(summary = "Cria um problema") @ApiResponse(responseCode = "201", description = "Problema criado", content = @Content(schema = @Schema(implementation = ProblemaResponseDTO.class))) @ApiResourceResponses @ApiBusinessRuleResponse @ApiUnsupportedMediaTypeResponse - ResponseEntity inserir(Long idCiclo, ProblemaRequestDTO dto); + ResponseEntity inserir(@Parameter(description = SwaggerParameterDescriptions.ID_CICLO) Long idCiclo, @RequestBody(description = "Dados do problema", required = true) ProblemaRequestDTO dto); @Operation(summary = "Atualiza parcialmente um problema") @ApiResponse(responseCode = "200", description = "Problema atualizado", content = @Content(schema = @Schema(implementation = ProblemaResponseDTO.class))) @ApiResourceResponses @ApiBusinessRuleResponse @ApiUnsupportedMediaTypeResponse - ResponseEntity patch(Long id, Map campos); + ResponseEntity patch(@Parameter(description = SwaggerParameterDescriptions.ID_PROBLEMA) Long id, @RequestBody(description = SwaggerParameterDescriptions.CAMPOS_PROBLEMA, required = true) Map campos); @Operation(summary = "Atualiza o status de um problema") @ApiResponse(responseCode = "200", description = "Status atualizado", content = @Content(schema = @Schema(implementation = ProblemaResponseDTO.class))) @ApiResourceResponses @ApiBusinessRuleResponse - ResponseEntity patchStatus(Long id, StatusProblema status); + ResponseEntity patchStatus(@Parameter(description = SwaggerParameterDescriptions.ID_PROBLEMA) Long id, @Parameter(description = SwaggerParameterDescriptions.NOVO_STATUS) StatusProblema status); @Operation(summary = "Exclui um problema") @ApiResponse(responseCode = "204", description = "Problema excluído") @ApiResourceResponses - ResponseEntity excluir(Long id); + ResponseEntity excluir(@Parameter(description = SwaggerParameterDescriptions.ID_PROBLEMA) Long id); } diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/TarefaDependenteOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/TarefaDependenteOpenapi.java index 5583679..b9e3ec2 100644 --- a/src/main/java/br/com/acta/common/config/swagger/openapi/TarefaDependenteOpenapi.java +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/TarefaDependenteOpenapi.java @@ -6,9 +6,11 @@ import br.com.acta.common.config.swagger.annotation.ApiBusinessRuleResponse; import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; +import br.com.acta.common.config.swagger.examples.SwaggerParameterDescriptions; import br.com.acta.dto.pdca.tarefa.TarefaResponseDTO; import br.com.acta.dto.pdca.tarefa.TarefaSummaryResponseDTO; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.media.ArraySchema; import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.media.Schema; @@ -26,17 +28,17 @@ public interface TarefaDependenteOpenapi { @ApiAuthenticationResponses @ApiBadRequestResponse @ApiNotFoundResponse - ResponseEntity> buscar(Long id); + ResponseEntity> buscar(@Parameter(description = SwaggerParameterDescriptions.ID_TAREFA) Long id); @Operation(summary = "Adiciona uma dependência à tarefa") @ApiResponse(responseCode = "201", description = "Dependência adicionada", content = @Content(schema = @Schema(implementation = TarefaResponseDTO.class))) @ApiResourceResponses @ApiBusinessRuleResponse - ResponseEntity adicionar(Long id, Long idDependente); + ResponseEntity adicionar(@Parameter(description = SwaggerParameterDescriptions.ID_TAREFA) Long id, @Parameter(description = SwaggerParameterDescriptions.ID_DEPENDENTE) Long idDependente); @Operation(summary = "Remove uma dependência da tarefa") @ApiResponse(responseCode = "204", description = "Dependência removida") @ApiResourceResponses @ApiBusinessRuleResponse - ResponseEntity remover(Long id, Long idDependente); + ResponseEntity remover(@Parameter(description = SwaggerParameterDescriptions.ID_TAREFA) Long id, @Parameter(description = SwaggerParameterDescriptions.ID_DEPENDENTE) Long idDependente); } diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/TarefaOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/TarefaOpenapi.java index 590d86d..356c33a 100644 --- a/src/main/java/br/com/acta/common/config/swagger/openapi/TarefaOpenapi.java +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/TarefaOpenapi.java @@ -7,17 +7,20 @@ import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; +import br.com.acta.common.config.swagger.examples.SwaggerParameterDescriptions; import br.com.acta.dto.pdca.tarefa.TarefaRequestDTO; import br.com.acta.dto.pdca.tarefa.TarefaResponseDTO; import br.com.acta.dto.pdca.tarefa.TarefaStatusUpdateDTO; import br.com.acta.entity.enums.Prioridade; import br.com.acta.entity.enums.StatusTarefa; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.media.ArraySchema; import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.parameters.RequestBody; import org.springframework.http.ResponseEntity; import java.time.LocalDate; @@ -32,51 +35,51 @@ public interface TarefaOpenapi { @ApiAuthenticationResponses @ApiBadRequestResponse @ApiNotFoundResponse - ResponseEntity> buscar(Long idPlanoAcao, StatusTarefa status, Long idResponsavel, Prioridade prioridade); + ResponseEntity> buscar(@Parameter(description = SwaggerParameterDescriptions.ID_PLANO_ACAO) Long idPlanoAcao, @Parameter(description = SwaggerParameterDescriptions.FILTRO_STATUS) StatusTarefa status, @Parameter(description = SwaggerParameterDescriptions.FILTRO_ID_RESPONSAVEL) Long idResponsavel, @Parameter(description = SwaggerParameterDescriptions.FILTRO_PRIORIDADE) Prioridade prioridade); @Operation(summary = "Busca uma tarefa") @ApiResponse(responseCode = "200", description = "Tarefa encontrada", content = @Content(schema = @Schema(implementation = TarefaResponseDTO.class))) @ApiAuthenticationResponses @ApiBadRequestResponse @ApiNotFoundResponse - ResponseEntity buscar(Long id); + ResponseEntity buscar(@Parameter(description = SwaggerParameterDescriptions.ID_TAREFA) Long id); @Operation(summary = "Cria uma tarefa") @ApiResponse(responseCode = "201", description = "Tarefa criada", content = @Content(schema = @Schema(implementation = TarefaResponseDTO.class))) @ApiResourceResponses @ApiBusinessRuleResponse @ApiUnsupportedMediaTypeResponse - ResponseEntity inserir(Long idPlanoAcao, TarefaRequestDTO dto); + ResponseEntity inserir(@Parameter(description = SwaggerParameterDescriptions.ID_PLANO_ACAO) Long idPlanoAcao, @RequestBody(description = "Dados da tarefa", required = true) TarefaRequestDTO dto); @Operation(summary = "Atualiza parcialmente uma tarefa") @ApiResponse(responseCode = "200", description = "Tarefa atualizada", content = @Content(schema = @Schema(implementation = TarefaResponseDTO.class))) @ApiResourceResponses @ApiBusinessRuleResponse @ApiUnsupportedMediaTypeResponse - ResponseEntity patch(Long id, Map campos); + ResponseEntity patch(@Parameter(description = SwaggerParameterDescriptions.ID_TAREFA) Long id, @RequestBody(description = SwaggerParameterDescriptions.CAMPOS_TAREFA, required = true) Map campos); @Operation(summary = "Atualiza o status de uma tarefa") @ApiResponse(responseCode = "200", description = "Status atualizado", content = @Content(schema = @Schema(implementation = TarefaResponseDTO.class))) @ApiResourceResponses @ApiBusinessRuleResponse @ApiUnsupportedMediaTypeResponse - ResponseEntity patchStatus(Long id, TarefaStatusUpdateDTO dto); + ResponseEntity patchStatus(@Parameter(description = SwaggerParameterDescriptions.ID_TAREFA) Long id, @RequestBody(description = "Dados da atualização de status da tarefa", required = true) TarefaStatusUpdateDTO dto); @Operation(summary = "Reabre uma tarefa") @ApiResponse(responseCode = "200", description = "Tarefa reaberta", content = @Content(schema = @Schema(implementation = TarefaResponseDTO.class))) @ApiResourceResponses @ApiBusinessRuleResponse - ResponseEntity reabrir(Long id, LocalDate novoPrazo); + ResponseEntity reabrir(@Parameter(description = SwaggerParameterDescriptions.ID_TAREFA) Long id, @Parameter(description = SwaggerParameterDescriptions.NOVO_PRAZO) LocalDate novoPrazo); @Operation(summary = "Reatribui uma tarefa") @ApiResponse(responseCode = "200", description = "Tarefa reatribuída", content = @Content(schema = @Schema(implementation = TarefaResponseDTO.class))) @ApiResourceResponses @ApiBusinessRuleResponse - ResponseEntity reatribuir(Long id, Long idResponsavel); + ResponseEntity reatribuir(@Parameter(description = SwaggerParameterDescriptions.ID_TAREFA) Long id, @Parameter(description = SwaggerParameterDescriptions.ID_RESPONSAVEL) Long idResponsavel); @Operation(summary = "Exclui uma tarefa") @ApiResponse(responseCode = "204", description = "Tarefa excluída") @ApiResourceResponses @ApiBusinessRuleResponse - ResponseEntity excluir(Long id); + ResponseEntity excluir(@Parameter(description = SwaggerParameterDescriptions.ID_TAREFA) Long id); } diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/TelefoneOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/TelefoneOpenapi.java index d2efa8d..0e4817e 100644 --- a/src/main/java/br/com/acta/common/config/swagger/openapi/TelefoneOpenapi.java +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/TelefoneOpenapi.java @@ -6,14 +6,17 @@ import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; +import br.com.acta.common.config.swagger.examples.SwaggerParameterDescriptions; import br.com.acta.dto.core.contato.telefone.TelefoneRequestDTO; import br.com.acta.dto.core.contato.telefone.TelefoneResponseDTO; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.media.ArraySchema; import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.parameters.RequestBody; import org.springframework.http.ResponseEntity; import java.util.List; @@ -26,34 +29,34 @@ public interface TelefoneOpenapi { @ApiAuthenticationResponses @ApiBadRequestResponse @ApiNotFoundResponse - ResponseEntity> buscarTelefoneEmpresa(Long idEmpresa); + ResponseEntity> buscarTelefoneEmpresa(@Parameter(description = SwaggerParameterDescriptions.ID_EMPRESA) Long idEmpresa); @Operation(summary = "Adiciona um telefone a uma empresa") @ApiResponse(responseCode = "201", description = "Telefone adicionado", content = @Content(schema = @Schema(implementation = TelefoneResponseDTO.class))) @ApiResourceResponses @ApiUnsupportedMediaTypeResponse - ResponseEntity inserirTelefoneEmpresa(Long idEmpresa, TelefoneRequestDTO dto); + ResponseEntity inserirTelefoneEmpresa(@Parameter(description = SwaggerParameterDescriptions.ID_EMPRESA) Long idEmpresa, @RequestBody(description = "Dados do telefone", required = true) TelefoneRequestDTO dto); @Operation(summary = "Exclui um telefone de uma empresa") @ApiResponse(responseCode = "204", description = "Telefone excluído") @ApiResourceResponses - ResponseEntity excluirTelefoneEmpresa(Long idEmpresa, Long idTelefone); + ResponseEntity excluirTelefoneEmpresa(@Parameter(description = SwaggerParameterDescriptions.ID_EMPRESA) Long idEmpresa, @Parameter(description = SwaggerParameterDescriptions.ID_TELEFONE) Long idTelefone); @Operation(summary = "Lista os telefones de um colaborador") @ApiResponse(responseCode = "200", description = "Telefones encontrados", content = @Content(array = @ArraySchema(schema = @Schema(implementation = TelefoneResponseDTO.class)))) @ApiAuthenticationResponses @ApiBadRequestResponse @ApiNotFoundResponse - ResponseEntity> buscarTelefoneColaborador(Long idColaborador); + ResponseEntity> buscarTelefoneColaborador(@Parameter(description = SwaggerParameterDescriptions.ID_COLABORADOR) Long idColaborador); @Operation(summary = "Adiciona um telefone a um colaborador") @ApiResponse(responseCode = "201", description = "Telefone adicionado", content = @Content(schema = @Schema(implementation = TelefoneResponseDTO.class))) @ApiResourceResponses @ApiUnsupportedMediaTypeResponse - ResponseEntity inserirTelefoneColaborador(Long idColaborador, TelefoneRequestDTO dto); + ResponseEntity inserirTelefoneColaborador(@Parameter(description = SwaggerParameterDescriptions.ID_COLABORADOR) Long idColaborador, @RequestBody(description = "Dados do telefone", required = true) TelefoneRequestDTO dto); @Operation(summary = "Exclui um telefone de um colaborador") @ApiResponse(responseCode = "204", description = "Telefone excluído") @ApiResourceResponses - ResponseEntity excluirTelefoneColaborador(Long idColaborador, Long idTelefone); + ResponseEntity excluirTelefoneColaborador(@Parameter(description = SwaggerParameterDescriptions.ID_COLABORADOR) Long idColaborador, @Parameter(description = SwaggerParameterDescriptions.ID_TELEFONE) Long idTelefone); } diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/TreinamentoOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/TreinamentoOpenapi.java index 9bdc4a0..dad5610 100644 --- a/src/main/java/br/com/acta/common/config/swagger/openapi/TreinamentoOpenapi.java +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/TreinamentoOpenapi.java @@ -7,14 +7,17 @@ import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; +import br.com.acta.common.config.swagger.examples.SwaggerParameterDescriptions; import br.com.acta.dto.pdca.treinamento.TreinamentoRequestDTO; import br.com.acta.dto.pdca.treinamento.TreinamentoResponseDTO; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.media.ArraySchema; import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.parameters.RequestBody; import org.springframework.http.ResponseEntity; import java.util.List; @@ -28,31 +31,31 @@ public interface TreinamentoOpenapi { @ApiAuthenticationResponses @ApiBadRequestResponse @ApiNotFoundResponse - ResponseEntity> buscarTreinamentos(Long idCiclo); + ResponseEntity> buscarTreinamentos(@Parameter(description = SwaggerParameterDescriptions.ID_CICLO) Long idCiclo); @Operation(summary = "Busca um treinamento") @ApiResponse(responseCode = "200", description = "Treinamento encontrado", content = @Content(schema = @Schema(implementation = TreinamentoResponseDTO.class))) @ApiAuthenticationResponses @ApiBadRequestResponse @ApiNotFoundResponse - ResponseEntity buscar(Long id); + ResponseEntity buscar(@Parameter(description = SwaggerParameterDescriptions.ID_TREINAMENTO) Long id); @Operation(summary = "Cria um treinamento") @ApiResponse(responseCode = "201", description = "Treinamento criado", content = @Content(schema = @Schema(implementation = TreinamentoResponseDTO.class))) @ApiResourceResponses @ApiBusinessRuleResponse @ApiUnsupportedMediaTypeResponse - ResponseEntity inserir(Long idCiclo, TreinamentoRequestDTO dto); + ResponseEntity inserir(@Parameter(description = SwaggerParameterDescriptions.ID_CICLO) Long idCiclo, @RequestBody(description = "Dados do treinamento", required = true) TreinamentoRequestDTO dto); @Operation(summary = "Atualiza parcialmente um treinamento") @ApiResponse(responseCode = "200", description = "Treinamento atualizado", content = @Content(schema = @Schema(implementation = TreinamentoResponseDTO.class))) @ApiResourceResponses @ApiUnsupportedMediaTypeResponse - ResponseEntity patch(Long id, Map campos); + ResponseEntity patch(@Parameter(description = SwaggerParameterDescriptions.ID_TREINAMENTO) Long id, @RequestBody(description = SwaggerParameterDescriptions.CAMPOS_TREINAMENTO, required = true) Map campos); @Operation(summary = "Exclui um treinamento") @ApiResponse(responseCode = "204", description = "Treinamento excluído") @ApiResourceResponses @ApiBusinessRuleResponse - ResponseEntity excluir(Long id); + ResponseEntity excluir(@Parameter(description = SwaggerParameterDescriptions.ID_TREINAMENTO) Long id); } diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/UsuarioCicloOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/UsuarioCicloOpenapi.java index 1057618..72300a2 100644 --- a/src/main/java/br/com/acta/common/config/swagger/openapi/UsuarioCicloOpenapi.java +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/UsuarioCicloOpenapi.java @@ -7,15 +7,18 @@ import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; +import br.com.acta.common.config.swagger.examples.SwaggerParameterDescriptions; import br.com.acta.dto.join.usuario_ciclo.UsuarioCicloRequestDTO; import br.com.acta.dto.join.usuario_ciclo.UsuarioCicloResponseDTO; import br.com.acta.entity.enums.PapelCiclo; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.media.ArraySchema; import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.parameters.RequestBody; import org.springframework.http.ResponseEntity; import java.util.List; @@ -28,30 +31,30 @@ public interface UsuarioCicloOpenapi { @ApiAuthenticationResponses @ApiBadRequestResponse @ApiNotFoundResponse - ResponseEntity> buscar(Long idCiclo); + ResponseEntity> buscar(@Parameter(description = SwaggerParameterDescriptions.ID_CICLO) Long idCiclo); @Operation(summary = "Adiciona um usuário ao ciclo") @ApiResponse(responseCode = "201", description = "Usuário adicionado", content = @Content(schema = @Schema(implementation = UsuarioCicloResponseDTO.class))) @ApiResourceResponses @ApiBusinessRuleResponse @ApiUnsupportedMediaTypeResponse - ResponseEntity inserir(Long idCiclo, UsuarioCicloRequestDTO dto); + ResponseEntity inserir(@Parameter(description = SwaggerParameterDescriptions.ID_CICLO) Long idCiclo, @RequestBody(description = "Dados do vínculo entre usuário e ciclo", required = true) UsuarioCicloRequestDTO dto); @Operation(summary = "Atualiza o papel de um usuário no ciclo") @ApiResponse(responseCode = "200", description = "Papel atualizado", content = @Content(schema = @Schema(implementation = UsuarioCicloResponseDTO.class))) @ApiResourceResponses @ApiBusinessRuleResponse - ResponseEntity patch(Long idCiclo, Long idUsuario, PapelCiclo papelCiclo); + ResponseEntity patch(@Parameter(description = SwaggerParameterDescriptions.ID_CICLO) Long idCiclo, @Parameter(description = SwaggerParameterDescriptions.ID_USUARIO) Long idUsuario, @Parameter(description = SwaggerParameterDescriptions.PAPEL_CICLO) PapelCiclo papelCiclo); @Operation(summary = "Substitui o responsável pelo ciclo") @ApiResponse(responseCode = "200", description = "Responsável substituído", content = @Content(array = @ArraySchema(schema = @Schema(implementation = UsuarioCicloResponseDTO.class)))) @ApiResourceResponses @ApiBusinessRuleResponse - ResponseEntity> substituirResponsavel(Long idCiclo, Long idUsuarioAntigo, Long idUsuarioNovo); + ResponseEntity> substituirResponsavel(@Parameter(description = SwaggerParameterDescriptions.ID_CICLO) Long idCiclo, @Parameter(description = SwaggerParameterDescriptions.ID_USUARIO_ANTIGO) Long idUsuarioAntigo, @Parameter(description = SwaggerParameterDescriptions.ID_USUARIO_NOVO) Long idUsuarioNovo); @Operation(summary = "Remove um usuário do ciclo") @ApiResponse(responseCode = "204", description = "Usuário removido") @ApiResourceResponses @ApiBusinessRuleResponse - ResponseEntity excluir(Long idCiclo, Long idUsuario); + ResponseEntity excluir(@Parameter(description = SwaggerParameterDescriptions.ID_CICLO) Long idCiclo, @Parameter(description = SwaggerParameterDescriptions.ID_USUARIO) Long idUsuario); } diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/UsuarioOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/UsuarioOpenapi.java index a031b18..f24acf1 100644 --- a/src/main/java/br/com/acta/common/config/swagger/openapi/UsuarioOpenapi.java +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/UsuarioOpenapi.java @@ -6,16 +6,19 @@ import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; +import br.com.acta.common.config.swagger.examples.SwaggerParameterDescriptions; import br.com.acta.dto.core.usuario.UsuarioRequestDTO; import br.com.acta.dto.core.usuario.UsuarioResponseDTO; import br.com.acta.dto.join.usuario_ciclo.UsuarioCicloResponseDTO; import br.com.acta.entity.enums.TipoUsuario; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.media.ArraySchema; import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.parameters.RequestBody; import org.springframework.http.ResponseEntity; import java.util.List; @@ -29,40 +32,40 @@ public interface UsuarioOpenapi { @ApiAuthenticationResponses @ApiBadRequestResponse @ApiNotFoundResponse - ResponseEntity> buscarCiclosUsuario(Long idUsuario); + ResponseEntity> buscarCiclosUsuario(@Parameter(description = SwaggerParameterDescriptions.ID_USUARIO) Long idUsuario); @Operation(summary = "Lista os usuários de uma empresa") @ApiResponse(responseCode = "200", description = "Usuários encontrados", content = @Content(array = @ArraySchema(schema = @Schema(implementation = UsuarioResponseDTO.class)))) @ApiAuthenticationResponses @ApiBadRequestResponse - ResponseEntity> buscar(Long idEmpresa, TipoUsuario tipo); + ResponseEntity> buscar(@Parameter(description = SwaggerParameterDescriptions.ID_EMPRESA) Long idEmpresa, @Parameter(description = SwaggerParameterDescriptions.TIPO_USUARIO) TipoUsuario tipo); @Operation(summary = "Busca um usuário") @ApiResponse(responseCode = "200", description = "Usuário encontrado", content = @Content(schema = @Schema(implementation = UsuarioResponseDTO.class))) @ApiAuthenticationResponses @ApiBadRequestResponse @ApiNotFoundResponse - ResponseEntity buscarPorId(Long id); + ResponseEntity buscarPorId(@Parameter(description = SwaggerParameterDescriptions.ID_USUARIO) Long id); @Operation(summary = "Cria um usuário") @ApiResponse(responseCode = "201", description = "Usuário criado", content = @Content(schema = @Schema(implementation = UsuarioResponseDTO.class))) @ApiResourceResponses @ApiUnsupportedMediaTypeResponse - ResponseEntity inserir(UsuarioRequestDTO dto); + ResponseEntity inserir(@RequestBody(description = "Dados do usuário", required = true) UsuarioRequestDTO dto); @Operation(summary = "Atualiza parcialmente um usuário") @ApiResponse(responseCode = "200", description = "Usuário atualizado", content = @Content(schema = @Schema(implementation = UsuarioResponseDTO.class))) @ApiResourceResponses @ApiUnsupportedMediaTypeResponse - ResponseEntity patch(Long id, Map campos); + ResponseEntity patch(@Parameter(description = SwaggerParameterDescriptions.ID_USUARIO) Long id, @RequestBody(description = SwaggerParameterDescriptions.CAMPOS_USUARIO, required = true) Map campos); @Operation(summary = "Remove a foto de um usuário") @ApiResponse(responseCode = "200", description = "Foto removida", content = @Content(schema = @Schema(implementation = UsuarioResponseDTO.class))) @ApiResourceResponses - ResponseEntity excluirFoto(Long id); + ResponseEntity excluirFoto(@Parameter(description = SwaggerParameterDescriptions.ID_USUARIO) Long id); @Operation(summary = "Inativa um usuário") @ApiResponse(responseCode = "204", description = "Usuário inativado") @ApiResourceResponses - ResponseEntity excluir(Long id); + ResponseEntity excluir(@Parameter(description = SwaggerParameterDescriptions.ID_USUARIO) Long id); } diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/UsuarioTreinamentoOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/UsuarioTreinamentoOpenapi.java index f996d43..43637a0 100644 --- a/src/main/java/br/com/acta/common/config/swagger/openapi/UsuarioTreinamentoOpenapi.java +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/UsuarioTreinamentoOpenapi.java @@ -6,15 +6,18 @@ import br.com.acta.common.config.swagger.annotation.ApiBusinessRuleResponse; import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; +import br.com.acta.common.config.swagger.examples.SwaggerParameterDescriptions; import br.com.acta.dto.join.usuario_treinamento.UsuarioTreinamentoRequestDTO; import br.com.acta.dto.join.usuario_treinamento.UsuarioTreinamentoResponseDTO; import br.com.acta.entity.enums.StatusTreinamento; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.media.ArraySchema; import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.parameters.RequestBody; import org.springframework.http.ResponseEntity; import java.util.List; @@ -26,24 +29,24 @@ public interface UsuarioTreinamentoOpenapi { @ApiResponse(responseCode = "200", description = "Usuários encontrados", content = @Content(array = @ArraySchema(schema = @Schema(implementation = UsuarioTreinamentoResponseDTO.class)))) @ApiAuthenticationResponses @ApiBadRequestResponse - ResponseEntity> buscar(Long id); + ResponseEntity> buscar(@Parameter(description = SwaggerParameterDescriptions.ID_TREINAMENTO) Long id); @Operation(summary = "Adiciona um usuário ao treinamento") @ApiResponse(responseCode = "201", description = "Usuário adicionado", content = @Content(schema = @Schema(implementation = UsuarioTreinamentoResponseDTO.class))) @ApiResourceResponses @ApiBusinessRuleResponse @ApiUnsupportedMediaTypeResponse - ResponseEntity inserir(Long id, UsuarioTreinamentoRequestDTO dto); + ResponseEntity inserir(@Parameter(description = SwaggerParameterDescriptions.ID_TREINAMENTO) Long id, @RequestBody(description = "Dados do vínculo entre usuário e treinamento", required = true) UsuarioTreinamentoRequestDTO dto); @Operation(summary = "Atualiza o status do usuário no treinamento") @ApiResponse(responseCode = "200", description = "Status atualizado", content = @Content(schema = @Schema(implementation = UsuarioTreinamentoResponseDTO.class))) @ApiResourceResponses @ApiBusinessRuleResponse - ResponseEntity patchStatus(Long id, Long idUsuario, StatusTreinamento status); + ResponseEntity patchStatus(@Parameter(description = SwaggerParameterDescriptions.ID_TREINAMENTO) Long id, @Parameter(description = SwaggerParameterDescriptions.ID_USUARIO) Long idUsuario, @Parameter(description = SwaggerParameterDescriptions.NOVO_STATUS) StatusTreinamento status); @Operation(summary = "Remove um usuário do treinamento") @ApiResponse(responseCode = "204", description = "Usuário removido") @ApiResourceResponses @ApiBusinessRuleResponse - ResponseEntity excluir(Long id, Long idUsuario); + ResponseEntity excluir(@Parameter(description = SwaggerParameterDescriptions.ID_TREINAMENTO) Long id, @Parameter(description = SwaggerParameterDescriptions.ID_USUARIO) Long idUsuario); } diff --git a/src/main/java/br/com/acta/common/config/swagger/openapi/VerificacaoResultadoOpenapi.java b/src/main/java/br/com/acta/common/config/swagger/openapi/VerificacaoResultadoOpenapi.java index 2e82610..450bd5f 100644 --- a/src/main/java/br/com/acta/common/config/swagger/openapi/VerificacaoResultadoOpenapi.java +++ b/src/main/java/br/com/acta/common/config/swagger/openapi/VerificacaoResultadoOpenapi.java @@ -7,14 +7,17 @@ import br.com.acta.common.config.swagger.annotation.ApiNotFoundResponse; import br.com.acta.common.config.swagger.annotation.ApiUnsupportedMediaTypeResponse; import br.com.acta.common.config.swagger.examples.SwaggerOpenapiDescriptions; +import br.com.acta.common.config.swagger.examples.SwaggerParameterDescriptions; import br.com.acta.dto.pdca.verificacao_resultado.VerificacaoResultadoRequestDTO; import br.com.acta.dto.pdca.verificacao_resultado.VerificacaoResultadoResponseDTO; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.media.ArraySchema; import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.parameters.RequestBody; import org.springframework.http.ResponseEntity; import java.util.List; @@ -28,32 +31,32 @@ public interface VerificacaoResultadoOpenapi { @ApiAuthenticationResponses @ApiBadRequestResponse @ApiNotFoundResponse - ResponseEntity> buscar(Long idCiclo); + ResponseEntity> buscar(@Parameter(description = SwaggerParameterDescriptions.ID_CICLO) Long idCiclo); @Operation(summary = "Busca uma verificação") @ApiResponse(responseCode = "200", description = "Verificação encontrada", content = @Content(schema = @Schema(implementation = VerificacaoResultadoResponseDTO.class))) @ApiAuthenticationResponses @ApiBadRequestResponse @ApiNotFoundResponse - ResponseEntity buscarPorId(Long id); + ResponseEntity buscarPorId(@Parameter(description = SwaggerParameterDescriptions.ID_RESULTADO) Long id); @Operation(summary = "Cria uma verificação") @ApiResponse(responseCode = "201", description = "Verificação criada", content = @Content(schema = @Schema(implementation = VerificacaoResultadoResponseDTO.class))) @ApiResourceResponses @ApiBusinessRuleResponse @ApiUnsupportedMediaTypeResponse - ResponseEntity inserir(Long idCiclo, Long idCriadoPor, VerificacaoResultadoRequestDTO dto); + ResponseEntity inserir(@Parameter(description = SwaggerParameterDescriptions.ID_CICLO) Long idCiclo, @Parameter(description = SwaggerParameterDescriptions.ID_CRIADO_POR) Long idCriadoPor, @RequestBody(description = "Dados da verificação de resultado", required = true) VerificacaoResultadoRequestDTO dto); @Operation(summary = "Atualiza parcialmente uma verificação") @ApiResponse(responseCode = "200", description = "Verificação atualizada", content = @Content(schema = @Schema(implementation = VerificacaoResultadoResponseDTO.class))) @ApiResourceResponses @ApiBusinessRuleResponse @ApiUnsupportedMediaTypeResponse - ResponseEntity patch(Long id, Map campos); + ResponseEntity patch(@Parameter(description = SwaggerParameterDescriptions.ID_RESULTADO) Long id, @RequestBody(description = SwaggerParameterDescriptions.CAMPOS_VERIFICACAO, required = true) Map campos); @Operation(summary = "Exclui uma verificação") @ApiResponse(responseCode = "204", description = "Verificação excluída") @ApiResourceResponses @ApiBusinessRuleResponse - ResponseEntity excluir(Long id); + ResponseEntity excluir(@Parameter(description = SwaggerParameterDescriptions.ID_RESULTADO) Long id); }