Commit 4b588a14 authored by KillianDB's avatar KillianDB
Browse files

fix: testes

parent cce2aafa
Pipeline #20801 failed with stages
Showing with 241 additions and 0 deletions
+241 -0
package SGP_Backend.SGP_Backend.controller;
import SGP_Backend.SGP_Backend.dto.RiscoDTO;
import SGP_Backend.SGP_Backend.model.Risco;
import SGP_Backend.SGP_Backend.service.RiscoService;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/risco")
@RequiredArgsConstructor
public class RiscoController {
private final RiscoService service;
@PostMapping
public ResponseEntity<Risco> criarRisco(@RequestBody RiscoDTO risco) {
return ResponseEntity.ok(service.criarRisco(risco));
}
@GetMapping
public ResponseEntity<List<Risco>> buscarPorProjetoId(@RequestParam(value = "projetoId", required = true) Long id) {
return ResponseEntity.ok(service.buscarRiscoPorProjetoId(id));
}
@PutMapping("/{id}")
public ResponseEntity<Risco> atualizar(@PathVariable Long id, @RequestBody Risco risco) {
return ResponseEntity.ok(service.atualizarRisco(id, risco));
}
}
\ No newline at end of file
package SGP_Backend.SGP_Backend.dto;
import SGP_Backend.SGP_Backend.model.Risco;
import SGP_Backend.SGP_Backend.enuns.Nivel;
import SGP_Backend.SGP_Backend.enuns.RespostaRisco;
import SGP_Backend.SGP_Backend.enuns.EscalaInteiro;
import lombok.*;
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class RiscoDTO {
private Long id;
private String vinculo;
private String descricao;
private EscalaInteiro probabilidade;
private EscalaInteiro impacto;
private int criticidade;
private String acao;
private Nivel nivel;
private RespostaRisco resposta;
private Long projetoId;
}
package SGP_Backend.SGP_Backend.enuns;
import lombok.Getter;
@Getter
public enum EscalaInteiro {
UM(1),
DOIS(2),
TRES(3),
QUATRO(4),
CINCO(5);
private final int valor;
EscalaInteiro(int valor) {
this.valor = valor;
}
}
package SGP_Backend.SGP_Backend.enuns;
public enum Nivel {
BAIXO, MÉDIO, ALTO, MUITO_ALTO
}
\ No newline at end of file
package SGP_Backend.SGP_Backend.enuns;
public enum RespostaRisco {
ACEITAR, REDUZIR, COMPARTILHAR, TRANSFERIR, EVITAR
}
\ No newline at end of file
package SGP_Backend.SGP_Backend.exceptions.risco;
public class RiscoInvalidoException extends RuntimeException {
public RiscoInvalidoException(String mensagem) {super(mensagem);}
}
package SGP_Backend.SGP_Backend.model;
import SGP_Backend.SGP_Backend.dto.RiscoDTO;
import SGP_Backend.SGP_Backend.enuns.Nivel;
import SGP_Backend.SGP_Backend.enuns.RespostaRisco;
import SGP_Backend.SGP_Backend.enuns.EscalaInteiro;
import com.fasterxml.jackson.annotation.JsonBackReference;
import lombok.*;
import jakarta.persistence.*;
import java.util.Objects;
@Builder
@Entity
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@Table(name = "risco")
@EqualsAndHashCode
public class Risco {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String vinculo;
private String descricao;
private EscalaInteiro probabilidade;
private EscalaInteiro impacto;
private int criticidade;
private String acao;
private Nivel nivel;
private RespostaRisco resposta;
@ManyToOne
@JsonBackReference
@JoinColumn(name = "projeto_id")
private Projeto projeto;
public static Risco fromDTO(RiscoDTO dto) {
if (dto == null) {
return null;
}
Risco risco = new Risco();
risco.setDescricao(dto.getDescricao());
risco.setProbabilidade(dto.getProbabilidade());
risco.setImpacto(dto.getImpacto());
risco.setCriticidade(dto.getCriticidade());
risco.setAcao(dto.getAcao());
risco.setNivel(dto.getNivel());
risco.setResposta(dto.getResposta());
if (dto.getProjetoId() != null) {
Projeto projeto = new Projeto();
projeto.setId(dto.getProjetoId());
risco.setProjeto(projeto);
}
return risco;
}
public RiscoDTO toDTO() {
RiscoDTO dto = new RiscoDTO();
dto.setId(this.id);
dto.setDescricao(this.descricao);
dto.setProbabilidade(this.probabilidade);
dto.setImpacto(this.impacto);
dto.setCriticidade(this.criticidade);
dto.setAcao(this.acao);
dto.setNivel(this.nivel);
dto.setResposta(this.resposta);
dto.setProjetoId(this.projeto.getId());
return dto;
}
}
\ No newline at end of file
package SGP_Backend.SGP_Backend.repository;
import SGP_Backend.SGP_Backend.model.Risco;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface RiscoRepository extends JpaRepository<Risco, Long> {
@Query("SELECT r FROM Risco r WHERE r.projeto.id = :id")
List<Risco> buscarPorProjetoId(@Param("id") Long id);
//pensando aqui
@Query("UPDATE Risco r SET WHERE b.projeto.id = :id")
List<Risco> atualizarPorProjetoId(@Param("id") Long id);
}
\ No newline at end of file
package SGP_Backend.SGP_Backend.service;
import SGP_Backend.SGP_Backend.dto.RiscoDTO;
import SGP_Backend.SGP_Backend.exceptions.projeto.ProjetoNaoEncontradoException;
import SGP_Backend.SGP_Backend.exceptions.risco.RiscoInvalidoException;
import SGP_Backend.SGP_Backend.model.Risco;
import SGP_Backend.SGP_Backend.repository.RiscoRepository;
import SGP_Backend.SGP_Backend.enuns.Nivel;
import SGP_Backend.SGP_Backend.enuns.RespostaRisco;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Optional;
@RequiredArgsConstructor
@Service
public class RiscoService {
private final RiscoRepository repository;
public Risco criarRisco(RiscoDTO riscoDTO) {
Risco risco = Risco.fromDTO(riscoDTO);
return repository.save(risco);
}
public List<Risco> buscarRiscoPorProjetoId(Long projetoId) {
return repository.buscarPorProjetoId(projetoId);
}
public Risco atualizarRisco(Long id, Risco riscoRequest) {
Optional<Risco> riscoOptional = repository.findById(id);
if (riscoOptional.isEmpty()) {
throw new ProjetoNaoEncontradoException("Risco não encontrado.");
}
Risco risco = riscoOptional.get();
Nivel nivel = riscoRequest.getNivel();
RespostaRisco resposta = riscoRequest.getResposta();
if (!nivel.equals(Nivel.BAIXO) && resposta.equals(RespostaRisco.ACEITAR)) {
throw new RiscoInvalidoException(
"Resposta não pode ser 'ACEITAR' para riscos de nível médio, alto ou muito alto."
);
}
risco.setNivel(riscoRequest.getNivel());
risco.setResposta(riscoRequest.getResposta());
risco.setDescricao(riscoRequest.getDescricao());
risco.setProjeto(riscoRequest.getProjeto());
return repository.save(risco);
}
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment