diff --git a/.gitignore b/.gitignore index 0f0030a..406d019 100644 --- a/.gitignore +++ b/.gitignore @@ -33,4 +33,7 @@ build/ .vscode/ ### Application yml ### -.yml \ No newline at end of file +.yml + +## Mac OS ## +.DS_Store diff --git a/pom.xml b/pom.xml index f3d26e7..afe44c7 100644 --- a/pom.xml +++ b/pom.xml @@ -8,11 +8,11 @@ 2.7.5 - br.com.empresa + br.com.aprendizagem api 0.0.1-SNAPSHOT - api - Projeto de rastreio de entregas + AprendizagemApi + Projeto integrador Aprendizagem 11 diff --git a/src/main/java/br/com/aprendizagem/api/ApiApplication.java b/src/main/java/br/com/aprendizagem/api/ApiApplication.java index 22a13ed..5b1fb6c 100644 --- a/src/main/java/br/com/aprendizagem/api/ApiApplication.java +++ b/src/main/java/br/com/aprendizagem/api/ApiApplication.java @@ -2,6 +2,7 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.web.bind.annotation.CrossOrigin; @@ -10,7 +11,7 @@ @EnableScheduling @EnableAsync @CrossOrigin(origins = "http://localhost:4200") -public class ApiApplication { +public class ApiApplication extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(ApiApplication.class, args); diff --git a/src/main/java/br/com/aprendizagem/api/DTO/ChapterAssuntoComentarioDto.java b/src/main/java/br/com/aprendizagem/api/DTO/ChapterAssuntoComentarioDto.java new file mode 100644 index 0000000..d854744 --- /dev/null +++ b/src/main/java/br/com/aprendizagem/api/DTO/ChapterAssuntoComentarioDto.java @@ -0,0 +1,27 @@ +package br.com.aprendizagem.api.DTO; + +import br.com.aprendizagem.api.entity.Curtida; +import br.com.aprendizagem.api.entity.Usuario; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.time.LocalDateTime; +import java.util.Set; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +public class ChapterAssuntoComentarioDto { + + private Long id; + private String texto; + private LocalDateTime data; + private Long paiId; + private Integer chapterAssuntoId; + private String usuarioId; + private Usuario usuario; + private Set curtidas; +} diff --git a/src/main/java/br/com/aprendizagem/api/DTO/ChapterAssuntoDto.java b/src/main/java/br/com/aprendizagem/api/DTO/ChapterAssuntoDto.java new file mode 100644 index 0000000..25c3c4a --- /dev/null +++ b/src/main/java/br/com/aprendizagem/api/DTO/ChapterAssuntoDto.java @@ -0,0 +1,50 @@ +package br.com.aprendizagem.api.DTO; + +import br.com.aprendizagem.api.entity.Chapter; +import br.com.aprendizagem.api.entity.ChapterTag; +import br.com.aprendizagem.api.entity.Usuario; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.time.LocalDateTime; +import java.util.HashSet; +import java.util.Set; + +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +public class ChapterAssuntoDto { + + private Integer id; + + private LocalDateTime dataCadastro; + + private String titulo; + + private String descricao; + + private byte[] imagem; + + private Long contadorVisualizacao; + + private Integer status; + + private Integer verificacao; + + private Integer chapterId; + + private String chapterNome; + + private Usuario usuario; + + private String usuarioVerificacaoId; + + private Set tags = new HashSet<>(); + + private Integer totalComentarios; + + +} diff --git a/src/main/java/br/com/aprendizagem/api/DTO/ComentariosFilhosDto.java b/src/main/java/br/com/aprendizagem/api/DTO/ComentariosFilhosDto.java new file mode 100644 index 0000000..f133121 --- /dev/null +++ b/src/main/java/br/com/aprendizagem/api/DTO/ComentariosFilhosDto.java @@ -0,0 +1,28 @@ +package br.com.aprendizagem.api.DTO; + +import br.com.aprendizagem.api.entity.ChapterAssunto; +import br.com.aprendizagem.api.entity.ChapterAssuntoComentario; +import br.com.aprendizagem.api.entity.Usuario; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.time.LocalDateTime; + +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +public class ComentariosFilhosDto { + + private Long id; + private String texto; + private ChapterAssuntoComentario comentarioPai; + private LocalDateTime data; + private Integer verificacao; + private ChapterAssunto chapterAssunto; + private String usuarioId; + private String usuarioVerificacaoId; + +} diff --git a/src/main/java/br/com/aprendizagem/api/controller/AcompanhamentoController.java b/src/main/java/br/com/aprendizagem/api/controller/AcompanhamentoController.java index cd132e0..cb5ac7c 100644 --- a/src/main/java/br/com/aprendizagem/api/controller/AcompanhamentoController.java +++ b/src/main/java/br/com/aprendizagem/api/controller/AcompanhamentoController.java @@ -1,6 +1,7 @@ package br.com.aprendizagem.api.controller; import br.com.aprendizagem.api.entity.Acompanhamento; +import br.com.aprendizagem.api.request.AcompanhamentoRequest; import br.com.aprendizagem.api.response.AcompanhamentoResponse; import br.com.aprendizagem.api.service.AcompanhamentoService; import lombok.AllArgsConstructor; @@ -26,7 +27,7 @@ public ResponseEntity getAcompanhamentoById(@PathVariable Long i if (acompanhamento == null) { return ResponseEntity.notFound().build(); } - return ResponseEntity.ok(acompanhamento); + return ResponseEntity.ok().body(acompanhamento); } @GetMapping("filtrarByGrupoIdByEstudanteId/{grupoId}/{estudanteId}") @@ -53,4 +54,9 @@ public ResponseEntity> getAcompanhamentoByGrupoIdBy public ResponseEntity postAcompanhamento(@RequestBody Acompanhamento acompanhamento) { return ResponseEntity.ok(acompanhamentoService.postAcompanhamento(acompanhamento)); } + + @PostMapping ("simple") + public ResponseEntity createAcompanhamento(@RequestBody AcompanhamentoRequest acompanhamentoRequest) { + return acompanhamentoService.createAcompanhamento(acompanhamentoRequest); + } } diff --git a/src/main/java/br/com/aprendizagem/api/controller/ChapterAssuntoComentarioController.java b/src/main/java/br/com/aprendizagem/api/controller/ChapterAssuntoComentarioController.java new file mode 100644 index 0000000..f0e29f5 --- /dev/null +++ b/src/main/java/br/com/aprendizagem/api/controller/ChapterAssuntoComentarioController.java @@ -0,0 +1,53 @@ +package br.com.aprendizagem.api.controller; + +import br.com.aprendizagem.api.DTO.ChapterAssuntoComentarioDto; +import br.com.aprendizagem.api.entity.ChapterAssuntoComentario; +import br.com.aprendizagem.api.service.ChapterAssuntoComentarioService; +import lombok.AllArgsConstructor; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("chapter-assunto-comentario") +@AllArgsConstructor +public class ChapterAssuntoComentarioController { + + private final ChapterAssuntoComentarioService chapterAssuntoComentarioService; + + + + @GetMapping() + public ResponseEntity> getAllChapterAssuntoComentario() { + return ResponseEntity.ok().body(chapterAssuntoComentarioService.getAllChapterAssuntoComentarioDto()); + } + + @GetMapping("/comentarios-by-chapter-assunto-id/{chapterAssuntoId}") + public ResponseEntity> getAllChapterAssuntoComentarioDtoByChapterAssuntoId(@PathVariable Integer chapterAssuntoId) { + return ResponseEntity.ok().body(chapterAssuntoComentarioService.getAllChapterAssuntoComentarioDtoByChapterAssuntoId(chapterAssuntoId)); + } + + + @GetMapping("/{id}") + public ResponseEntity getChapterAssuntoComentarioById(@PathVariable Long id) { + ChapterAssuntoComentario chapterAssuntoComentario = chapterAssuntoComentarioService.getChapterAssuntoComentarioById(id); + if (chapterAssuntoComentario != null) { + return ResponseEntity.ok().body(chapterAssuntoComentario); + } else { + return ResponseEntity.notFound().build(); + } + } + + @PostMapping + public ResponseEntity postChapterAssuntoComentario(@RequestBody ChapterAssuntoComentarioDto chapterAssuntoComentario) { + return ResponseEntity.ok().body(chapterAssuntoComentarioService.postChapterAssuntoComentario(chapterAssuntoComentario)); + } + + @DeleteMapping("/{id}") + public ResponseEntity deleteChapterAssuntoComentarioById(@PathVariable Integer id) { + chapterAssuntoComentarioService.deleteChapterAssuntoComentarioById(id); + return ResponseEntity.noContent().build(); + } + +} diff --git a/src/main/java/br/com/aprendizagem/api/controller/ChapterAssuntoController.java b/src/main/java/br/com/aprendizagem/api/controller/ChapterAssuntoController.java index 20490e0..b34e83c 100644 --- a/src/main/java/br/com/aprendizagem/api/controller/ChapterAssuntoController.java +++ b/src/main/java/br/com/aprendizagem/api/controller/ChapterAssuntoController.java @@ -1,16 +1,13 @@ package br.com.aprendizagem.api.controller; +import br.com.aprendizagem.api.DTO.ChapterAssuntoDto; import br.com.aprendizagem.api.entity.ChapterAssunto; -import br.com.aprendizagem.api.entity.ChapterTag; import br.com.aprendizagem.api.service.ChapterAssuntoService; -import br.com.aprendizagem.api.service.ChapterTagService; import lombok.AllArgsConstructor; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; -import java.time.Instant; import java.time.LocalDateTime; -import java.util.Date; import java.util.List; @RestController @@ -21,21 +18,33 @@ public class ChapterAssuntoController { private final ChapterAssuntoService chapterAssuntoService; - @GetMapping - public ResponseEntity> getAllChapterAssunto() { - return chapterAssuntoService.getAllChapterAssunto(); + + @GetMapping() + public ResponseEntity> getAllChapterAssunto() { + return chapterAssuntoService.getAllChapterAssuntoDto(); } + @GetMapping("/{id}") - public ResponseEntity getChapterAssuntoWithTags(@PathVariable Integer id) { - ChapterAssunto chapterAssunto = chapterAssuntoService.getChapterAssuntoWithTags(id); - if (chapterAssunto != null) { - return ResponseEntity.ok(chapterAssunto); + public ResponseEntity getChapterAssuntoById(@PathVariable Integer id) { + ChapterAssuntoDto chapterAssuntoDTO = chapterAssuntoService.getChapterAssuntoDtoById(id); + if (chapterAssuntoDTO != null) { + return ResponseEntity.ok().body(chapterAssuntoDTO); } else { return ResponseEntity.notFound().build(); } } + @GetMapping("/noticias") + public ResponseEntity> getAllNoticias() { + return ResponseEntity.ok(chapterAssuntoService.getAllNoticias()); + } + + @GetMapping("/filtrar-chapter-assuntos-por-chapter-id/{chapterId}") + public ResponseEntity> filterChapterAssuntosByChapterId(@PathVariable Integer chapterId) { + return chapterAssuntoService.filterChapterAssuntosByChapterId(chapterId); + } + @PostMapping() public ResponseEntity postChapterAssunto(@RequestBody ChapterAssunto chapterAssunto) { try { @@ -46,15 +55,5 @@ public ResponseEntity postChapterAssunto(@RequestBody ChapterAss } } - @PostMapping("{id}/associar-tags") - public ResponseEntity associarTagAAssunto(@PathVariable Integer id, @RequestBody List tagIds) { - ChapterAssunto chapterAssunto = chapterAssuntoService.getChapterAssuntoWithTags(id); - if (chapterAssunto != null) { - chapterAssuntoService.associarTagAAssunto(chapterAssunto, tagIds); - return ResponseEntity.ok().build(); - } else { - return ResponseEntity.notFound().build(); - } - } } diff --git a/src/main/java/br/com/aprendizagem/api/controller/ChapterAssuntoTagController.java b/src/main/java/br/com/aprendizagem/api/controller/ChapterAssuntoTagController.java deleted file mode 100644 index 42f493c..0000000 --- a/src/main/java/br/com/aprendizagem/api/controller/ChapterAssuntoTagController.java +++ /dev/null @@ -1,34 +0,0 @@ -package br.com.aprendizagem.api.controller; - -import br.com.aprendizagem.api.entity.ChapterAssunto; -import br.com.aprendizagem.api.entity.ChapterAssuntoTag; -import br.com.aprendizagem.api.entity.ChapterTag; -import br.com.aprendizagem.api.service.ChapterAssuntoTagService; -import lombok.AllArgsConstructor; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -@RestController -@AllArgsConstructor -@RequestMapping("chapter-assunto-tag") -public class ChapterAssuntoTagController { - private final ChapterAssuntoTagService chapterAssuntoTagService; - - @GetMapping - public ResponseEntity> getAllChapterAssuntoTag(){ - return ResponseEntity.ok().body(chapterAssuntoTagService.getAllChapterAssuntoTag()); - } - - @GetMapping("/{id}") - public ResponseEntity getChapterAssuntoTagById(@PathVariable Integer id){ - return ResponseEntity.ok().body(chapterAssuntoTagService.getChapterAssuntoTagById(id)); - } - - @PostMapping("/public") - public ResponseEntity postChapterAssuntoTag(ChapterAssunto chapterAssunto, ChapterTag chapterTag){ - return ResponseEntity.ok().body(chapterAssuntoTagService.postChapterAssuntoTag(chapterAssunto, chapterTag)); - } - -} diff --git a/src/main/java/br/com/aprendizagem/api/controller/ChapterController.java b/src/main/java/br/com/aprendizagem/api/controller/ChapterController.java index c11b9c1..e24246e 100644 --- a/src/main/java/br/com/aprendizagem/api/controller/ChapterController.java +++ b/src/main/java/br/com/aprendizagem/api/controller/ChapterController.java @@ -5,10 +5,7 @@ import br.com.aprendizagem.api.service.GrupoChapterService; import lombok.AllArgsConstructor; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.util.List; @@ -20,15 +17,28 @@ public class ChapterController { private final GrupoChapterService grupoChapterService; @GetMapping - public ResponseEntity> getAllChapters() { - List chapters = chapterService.getAllChapters(); + public ResponseEntity> getActiveChapters() { + List chapters = chapterService.getActiveChapters(); if(chapters.isEmpty()) return ResponseEntity.notFound().build(); return ResponseEntity.ok(chapters); } + @GetMapping("/noticias") + public ResponseEntity getNoticiasChapter() { + Chapter chapter = chapterService.getNoticiasChapter(); + if(chapter == null) + return ResponseEntity.notFound().build(); + return ResponseEntity.ok(chapter); + } + @GetMapping("getChapterByGrupoId/{grupoId}") public ResponseEntity getChapterByGrupoId(@PathVariable Long grupoId) { return grupoChapterService.getChapterByGrupoId(grupoId); } -} + + @PostMapping + public ResponseEntity postChapter(@RequestBody Chapter chapter) { + return ResponseEntity.ok(chapterService.postChapter(chapter)); + } +} \ No newline at end of file diff --git a/src/main/java/br/com/aprendizagem/api/controller/CurtidaController.java b/src/main/java/br/com/aprendizagem/api/controller/CurtidaController.java new file mode 100644 index 0000000..ece028d --- /dev/null +++ b/src/main/java/br/com/aprendizagem/api/controller/CurtidaController.java @@ -0,0 +1,40 @@ +package br.com.aprendizagem.api.controller; + +import br.com.aprendizagem.api.entity.Curtida; +import br.com.aprendizagem.api.service.CurtidaService; +import lombok.AllArgsConstructor; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("/curtida") +@AllArgsConstructor +public class CurtidaController { + + private final CurtidaService curtidaService; + + @GetMapping + public ResponseEntity> getAllCurtidas() { + return ResponseEntity.ok().body(curtidaService.getAllCurtidas()); + } + + @GetMapping("/{id}") + public ResponseEntity getCurtidaById(@PathVariable Integer id) { + Curtida curtida = curtidaService.getCurtidaById(id); + if (curtida != null) { + return ResponseEntity.ok().body(curtida); + } else { + return ResponseEntity.notFound().build(); + } + } + + @PostMapping + public ResponseEntity postCurtida(@RequestBody Curtida curtida) { + return ResponseEntity.ok().body(curtidaService.postCurtida(curtida)); + } + + + +} diff --git a/src/main/java/br/com/aprendizagem/api/controller/EncontroController.java b/src/main/java/br/com/aprendizagem/api/controller/EncontroController.java index 0d7a624..d2c37ed 100644 --- a/src/main/java/br/com/aprendizagem/api/controller/EncontroController.java +++ b/src/main/java/br/com/aprendizagem/api/controller/EncontroController.java @@ -1,9 +1,8 @@ package br.com.aprendizagem.api.controller; import br.com.aprendizagem.api.entity.Encontro; -import br.com.aprendizagem.api.response.EncontroAlunoResponse; +import br.com.aprendizagem.api.response.EncontroEstudanteResponse; import br.com.aprendizagem.api.response.EncontroResponse; -import br.com.aprendizagem.api.response.EncontroSituacaoResponse; import br.com.aprendizagem.api.service.EncontroService; import lombok.AllArgsConstructor; import org.springframework.http.ResponseEntity; @@ -30,8 +29,8 @@ public ResponseEntity> getEncontrosByGrupoId(@PathVariabl return encontroService.getEncontrosByGrupoId(grupoId); } - @GetMapping("filtrarByGrupoIdByEstudanteId/{grupoId}") - public ResponseEntity> getEncontrosByGrupoIdByEstudanteId(@PathVariable Long grupoId, @PathVariable Long estudanteId){ + @GetMapping("filtrarByGrupoIdByEstudanteId/{grupoId}/{estudanteId}") + public ResponseEntity> getEncontrosByGrupoIdByEstudanteId(@PathVariable Long grupoId, @PathVariable Long estudanteId){ return encontroService.getEncontrosByGrupoIdByEstudanteId(grupoId, estudanteId); } diff --git a/src/main/java/br/com/aprendizagem/api/controller/ObjetoAprendizagemController.java b/src/main/java/br/com/aprendizagem/api/controller/ObjetoAprendizagemController.java index 7d91544..05d1f29 100644 --- a/src/main/java/br/com/aprendizagem/api/controller/ObjetoAprendizagemController.java +++ b/src/main/java/br/com/aprendizagem/api/controller/ObjetoAprendizagemController.java @@ -9,10 +9,7 @@ import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.util.List; @@ -42,4 +39,14 @@ public ResponseEntity getArquivoObjetoById(@PathVariable Long objetoId){ return ResponseEntity.notFound().build(); } } + + @GetMapping(value = "obterObjetoComRecursosPorId/{objetoId}") + public ResponseEntity getObjetoWithRecursosByObjetoId(@PathVariable Long objetoId){ + return objetoAprendizagemService.getObjetoWithRecursosByObjetoId(objetoId); + } + + @PostMapping + public ResponseEntity postObjeto(@RequestBody ObjetoAprendizagem objeto) { + return objetoAprendizagemService.createObjeto(objeto); + } } diff --git a/src/main/java/br/com/aprendizagem/api/controller/ParticipanteController.java b/src/main/java/br/com/aprendizagem/api/controller/ParticipanteController.java index 2e9b535..05250b5 100644 --- a/src/main/java/br/com/aprendizagem/api/controller/ParticipanteController.java +++ b/src/main/java/br/com/aprendizagem/api/controller/ParticipanteController.java @@ -33,6 +33,16 @@ public ResponseEntity> getParticipantesByEstudanteId( } return ResponseEntity.ok(ParticipanteResponse.of(participantes)); } + + @GetMapping("filtrar-participantes-por-grupo-id/{grupoId}") + public ResponseEntity> getParticipantesByGrupoId(@PathVariable Long grupoId) { + return participanteService.getParticipantesByGrupoId(grupoId); + } + + @GetMapping("filtrar-participante-por-estudante-id-por-grupo-id/{estudanteId}/{grupoId}") + public ResponseEntity getParticipanteByEstudanteIdByGrupoId(@PathVariable Long estudanteId, @PathVariable Long grupoId) { + return participanteService.getParticipanteByEstudanteIdByGrupoId(estudanteId, grupoId); + } } diff --git a/src/main/java/br/com/aprendizagem/api/controller/ProfessorController.java b/src/main/java/br/com/aprendizagem/api/controller/ProfessorController.java index 70dcbbd..eccde8c 100644 --- a/src/main/java/br/com/aprendizagem/api/controller/ProfessorController.java +++ b/src/main/java/br/com/aprendizagem/api/controller/ProfessorController.java @@ -5,6 +5,7 @@ import lombok.AllArgsConstructor; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -23,4 +24,9 @@ public ResponseEntity> getProfessoresAtivos() { return ResponseEntity.notFound().build(); return ResponseEntity.ok(professores); } + + @GetMapping("filtrar-professor-por-usuario-id/{usuarioId}") + public ResponseEntity getProfessorByUsuarioId(@PathVariable String usuarioId){ + return professorService.getProfessorByUsuarioId(usuarioId); + } } diff --git a/src/main/java/br/com/aprendizagem/api/controller/ProgressoController.java b/src/main/java/br/com/aprendizagem/api/controller/ProgressoController.java new file mode 100644 index 0000000..423a8c1 --- /dev/null +++ b/src/main/java/br/com/aprendizagem/api/controller/ProgressoController.java @@ -0,0 +1,48 @@ +package br.com.aprendizagem.api.controller; + +import br.com.aprendizagem.api.entity.Encontro; +import br.com.aprendizagem.api.entity.Participante; +import br.com.aprendizagem.api.response.EncontroEstudanteResponse; +import br.com.aprendizagem.api.response.ProgressoEstudanteResponse; +import br.com.aprendizagem.api.service.AcompanhamentoService; +import br.com.aprendizagem.api.service.EncontroService; +import br.com.aprendizagem.api.service.ParticipanteService; +import lombok.AllArgsConstructor; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; +import java.util.Map; + +@RestController +@AllArgsConstructor +@RequestMapping("progresso") +public class ProgressoController { + private final EncontroService encontroService; + private final ParticipanteService participanteService; + private final AcompanhamentoService acompanhamentoService; + + @GetMapping("/{grupoId}/{estudanteId}") + public ResponseEntity getProgressoByGrupoIdByEstudanteId(@PathVariable Long grupoId, @PathVariable Long estudanteId){ + List encontros = encontroService.getEncontrosListByGrupoId(grupoId); + Long participanteId = participanteService.getParcipanteIdByGrupoIdByEstudanteId(grupoId, estudanteId); + if(participanteId != null){ + Integer totalObjetos = 0; + Integer totalAtividades = 0; + for (Encontro encontro : encontros) { + Map totalObjetosAtividades = encontroService.getNumeroObjetosAtividadesByEncontroId(encontro.getId()); + totalAtividades += totalObjetosAtividades.get("totalAtividades"); + totalObjetos += totalObjetosAtividades.get("totalObjetos"); + } + Integer totalAcompanhados = acompanhamentoService.getTotalAcompanhamentosByParticipanteId(participanteId); + + return ResponseEntity.ok(ProgressoEstudanteResponse.of(totalObjetos, totalAtividades, totalAcompanhados)); + } + return ResponseEntity.notFound().build(); + } + + +} diff --git a/src/main/java/br/com/aprendizagem/api/controller/SituacaoAprendizagemController.java b/src/main/java/br/com/aprendizagem/api/controller/SituacaoAprendizagemController.java index 608589b..fc6893d 100644 --- a/src/main/java/br/com/aprendizagem/api/controller/SituacaoAprendizagemController.java +++ b/src/main/java/br/com/aprendizagem/api/controller/SituacaoAprendizagemController.java @@ -1,18 +1,14 @@ package br.com.aprendizagem.api.controller; import br.com.aprendizagem.api.entity.SituacaoAprendizagem; -import br.com.aprendizagem.api.entity.SituacaoEncontro; +import br.com.aprendizagem.api.request.SituacaoAprendizagemRequest; import br.com.aprendizagem.api.response.SituacaoAprendizagemResponse; import br.com.aprendizagem.api.service.SituacaoAprendizagemService; import lombok.AllArgsConstructor; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.util.List; -import java.util.Optional; @RestController @RequestMapping(value = "situacao-aprendizagem") @@ -34,5 +30,20 @@ public ResponseEntity getSituacaoAprendizagemById( public ResponseEntity> getSituacoesAprendizagemByEncontroId(@PathVariable Long encontroId) { return situacaoAprendizagemService.getSituacoesAprendizagemByEncontroId(encontroId); } + + @GetMapping("filtrarSituacoesAprendizagemPorPlanejamentoUcId/{planejamentoUcId}") + public ResponseEntity> getSituacoesAprendizagemByPlanejamentoUcId(@PathVariable Long planejamentoUcId) { + return situacaoAprendizagemService.getSituacoesAprendizagemByPlanejamentoUcId(planejamentoUcId); + } + + @PostMapping + public ResponseEntity createSituacaoAprendizagem(@RequestBody SituacaoAprendizagemRequest situacaoRequest) { + return situacaoAprendizagemService.createSituacaoAprendizagem(situacaoRequest); + } + + @PutMapping("/{id}") + public ResponseEntity updateSituacaoAprendizagem(@PathVariable Long id,@RequestBody SituacaoAprendizagem situacaoAprendizagem) { + return situacaoAprendizagemService.updateSituacaoAprendizagem(id, situacaoAprendizagem); + } } diff --git a/src/main/java/br/com/aprendizagem/api/entity/Acompanhamento.java b/src/main/java/br/com/aprendizagem/api/entity/Acompanhamento.java index 5ecee72..cfb2d71 100644 --- a/src/main/java/br/com/aprendizagem/api/entity/Acompanhamento.java +++ b/src/main/java/br/com/aprendizagem/api/entity/Acompanhamento.java @@ -19,6 +19,7 @@ public class Acompanhamento { @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "acompanhamento_id") private Long id; diff --git a/src/main/java/br/com/aprendizagem/api/entity/ChapterAssunto.java b/src/main/java/br/com/aprendizagem/api/entity/ChapterAssunto.java index 17cc9a5..1094b16 100644 --- a/src/main/java/br/com/aprendizagem/api/entity/ChapterAssunto.java +++ b/src/main/java/br/com/aprendizagem/api/entity/ChapterAssunto.java @@ -1,15 +1,14 @@ package br.com.aprendizagem.api.entity; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonManagedReference; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import javax.persistence.*; import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; +import java.util.*; @Entity @AllArgsConstructor @@ -63,17 +62,27 @@ public class ChapterAssunto { inverseJoinColumns = @JoinColumn(name = "chapter_tag_id")) private Set tags = new HashSet<>(); + @JsonManagedReference + @OneToMany(mappedBy = "chapterAssunto", fetch = FetchType.EAGER, cascade = CascadeType.ALL) + private Set comentarios = new HashSet<>(); + + @Override + public String toString() { + return "ChapterAssunto{" + + "id=" + id + + ", dataCadastro=" + dataCadastro + + ", titulo='" + titulo + '\'' + + ", descricao='" + descricao + '\'' + + ", imagem=" + Arrays.toString(imagem) + + ", contadorVisualizacao=" + contadorVisualizacao + + ", status=" + status + + ", verificacao=" + verificacao + + ", chapter=" + chapter + + ", usuario=" + usuario + + ", usuarioVerificacao=" + usuarioVerificacao + + ", tags=" + tags + + ", comentarios=" + comentarios + + '}'; + } } -//chapter_assunto_id -//chapter_assunto_data_cadastro -//chapter_assunto_titulo -//chapter_assunto_descricao -//chapter_assunto_imagem -//chapter_assunto_contador_visualizacao -//chapter_assunto_status -//chapter_assunto_verificacao -//chapter_id -//usuario_id -//usuario_id_verificacao -//chapter_tag diff --git a/src/main/java/br/com/aprendizagem/api/entity/ChapterAssuntoComentario.java b/src/main/java/br/com/aprendizagem/api/entity/ChapterAssuntoComentario.java index 8af792a..8b28e97 100644 --- a/src/main/java/br/com/aprendizagem/api/entity/ChapterAssuntoComentario.java +++ b/src/main/java/br/com/aprendizagem/api/entity/ChapterAssuntoComentario.java @@ -1,11 +1,17 @@ package br.com.aprendizagem.api.entity; +import br.com.aprendizagem.api.DTO.ChapterAssuntoComentarioDto; +import com.fasterxml.jackson.annotation.JsonBackReference; +import com.fasterxml.jackson.annotation.JsonManagedReference; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import javax.persistence.*; import java.time.LocalDateTime; +import java.util.HashSet; +import java.util.Objects; +import java.util.Set; @Data @Entity @@ -14,17 +20,20 @@ @Table(name = "chapter_assunto_comentario") public class ChapterAssuntoComentario { @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "chapter_assunto_comentario_id") private Long id; @Lob @Column(name = "chapter_assunto_comentario_texto", columnDefinition = "TEXT") private String texto; - @Column(name = "chapter_assunto_comentario_pai") - private Long pai; + @ManyToOne + @JoinColumn(name = "chapter_assunto_comentario_pai") + private ChapterAssuntoComentario comentarioPai; @Column(name = "chapter_assunto_comentario_data") private LocalDateTime data; @Column(name = "chapter_assunto_comentario_verificacao") private Integer verificacao; + @JsonBackReference @ManyToOne @JoinColumn(name = "chapter_assunto_id") private ChapterAssunto chapterAssunto; @@ -35,5 +44,23 @@ public class ChapterAssuntoComentario { @JoinColumn(name = "usuario_id_verificacao") private Usuario usuarioVerificacao; + @JsonManagedReference + @OneToMany(mappedBy = "chapterAssuntoComentario", cascade = CascadeType.ALL, fetch = FetchType.EAGER) + private Set curtidas = new HashSet<>(); + + + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + ChapterAssuntoComentario that = (ChapterAssuntoComentario) o; + return Objects.equals(id, that.id); + } + + @Override + public int hashCode() { + return Objects.hash(id); + } } \ No newline at end of file diff --git a/src/main/java/br/com/aprendizagem/api/entity/ChapterAssuntoTag.java b/src/main/java/br/com/aprendizagem/api/entity/ChapterAssuntoTag.java deleted file mode 100644 index 236b1fe..0000000 --- a/src/main/java/br/com/aprendizagem/api/entity/ChapterAssuntoTag.java +++ /dev/null @@ -1,29 +0,0 @@ -package br.com.aprendizagem.api.entity; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import javax.persistence.*; - -@Entity -@Table(name = "chapter_assunto_tag") -@AllArgsConstructor -@Data -@NoArgsConstructor -public class ChapterAssuntoTag { - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @Column(name = "chapter_assunto_tag_id") - private Integer id; - - @ManyToOne - @JoinColumn(name = "chapter_assunto_id") - private ChapterAssunto chapterAssunto; - - @ManyToOne - @JoinColumn(name = "chapter_tag_id") - private ChapterTag chapterTag; - -} diff --git a/src/main/java/br/com/aprendizagem/api/entity/ControleExecucao.java b/src/main/java/br/com/aprendizagem/api/entity/ControleExecucao.java new file mode 100644 index 0000000..73cf21b --- /dev/null +++ b/src/main/java/br/com/aprendizagem/api/entity/ControleExecucao.java @@ -0,0 +1,36 @@ +package br.com.aprendizagem.api.entity; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.persistence.*; +import java.time.LocalDateTime; + +@Entity +@Table(name = "controle_execucao") +@Data +@AllArgsConstructor +@NoArgsConstructor +public class ControleExecucao { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "controle_execucao_id") + private Long id; + @Column(name = "controle_execucao_data") + private LocalDateTime data; + @Column(name = "controle_execucao_status") + private Integer status; + @ManyToOne + @JoinColumn(name = "registro_encontro_tipo_id") + private EncontroTipo encontroTipo; + @ManyToOne + @JoinColumn(name = "encontro_id") + private Encontro encontro; + @ManyToOne + @JoinColumn(name = "participante_id") + private Participante participante; +} + +// \ No newline at end of file diff --git a/src/main/java/br/com/aprendizagem/api/entity/Curtida.java b/src/main/java/br/com/aprendizagem/api/entity/Curtida.java new file mode 100644 index 0000000..6725470 --- /dev/null +++ b/src/main/java/br/com/aprendizagem/api/entity/Curtida.java @@ -0,0 +1,35 @@ +package br.com.aprendizagem.api.entity; + +import com.fasterxml.jackson.annotation.JsonBackReference; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import javax.persistence.*; + +@Entity +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +public class Curtida { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "curtida_id") + private Integer id; + + @Column(name = "curtida_rank") + private Integer rank; + + @ManyToOne + @JoinColumn(name = "usuario_id") + private Usuario usuario; + + @ManyToOne + @JsonBackReference + @JoinColumn(name = "chapter_assunto_comentario_id") + private ChapterAssuntoComentario chapterAssuntoComentario; + +} diff --git a/src/main/java/br/com/aprendizagem/api/entity/Modulo.java b/src/main/java/br/com/aprendizagem/api/entity/Modulo.java index 82ca2b0..3f3cd03 100644 --- a/src/main/java/br/com/aprendizagem/api/entity/Modulo.java +++ b/src/main/java/br/com/aprendizagem/api/entity/Modulo.java @@ -38,7 +38,7 @@ public class Modulo { @JoinColumn(name = "oferta_id", nullable = false) @JsonIgnore private Oferta oferta; - - @OneToMany(mappedBy = "modulo") - private Set unidadeCurricular; + +// @OneToMany(mappedBy = "modulo") +// private Set unidadeCurricular; } diff --git a/src/main/java/br/com/aprendizagem/api/entity/ObjetoAprendizagem.java b/src/main/java/br/com/aprendizagem/api/entity/ObjetoAprendizagem.java index ddb49d5..495671b 100644 --- a/src/main/java/br/com/aprendizagem/api/entity/ObjetoAprendizagem.java +++ b/src/main/java/br/com/aprendizagem/api/entity/ObjetoAprendizagem.java @@ -9,7 +9,10 @@ import javax.persistence.*; import java.sql.Blob; +import java.util.ArrayList; +import java.util.HashSet; import java.util.List; +import java.util.Set; @Data @Entity @@ -19,6 +22,7 @@ public class ObjetoAprendizagem { @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "objeto_aprendizagem_id") private Long id; @@ -43,11 +47,19 @@ public class ObjetoAprendizagem { @JoinColumn(name ="grau_dificuldade_id") private GrauDificuldade grauDificuldade; -// @ManyToOne -// @JoinColumn(name ="usuario_id") -// private Usuario usuario; + @ManyToMany(fetch = FetchType.LAZY) + @JoinTable( + name = "objeto_aprendizagem_recurso", + joinColumns = @JoinColumn(name = "objeto_aprendizagem_id"), + inverseJoinColumns = @JoinColumn(name = "recurso_id") + ) + private List recursos = new ArrayList<>(); + + @ManyToOne + @JoinColumn(name ="usuario_id") + private Usuario usuario; // @JsonBackReference // @ManyToMany(mappedBy = "objetosAprendizagem", fetch = FetchType.LAZY) -// private List situacoesAprendizagem; +// private Set situacoesAprendizagem = new HashSet<>(); } diff --git a/src/main/java/br/com/aprendizagem/api/entity/SituacaoAprendizagem.java b/src/main/java/br/com/aprendizagem/api/entity/SituacaoAprendizagem.java index 14952be..dbd2494 100644 --- a/src/main/java/br/com/aprendizagem/api/entity/SituacaoAprendizagem.java +++ b/src/main/java/br/com/aprendizagem/api/entity/SituacaoAprendizagem.java @@ -1,9 +1,6 @@ package br.com.aprendizagem.api.entity; -import com.fasterxml.jackson.annotation.JsonBackReference; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonManagedReference; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -23,6 +20,7 @@ public class SituacaoAprendizagem { @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "situacao_aprendizagem_id") private Long id; @@ -42,6 +40,9 @@ public class SituacaoAprendizagem { @Column(name = "situacao_aprendizagem_fim") private LocalDateTime fim; + @Column(name = "situacao_aprendizagem_duracao") + private Integer duracao; + @Column(name = "situacao_aprendizagem_status") private Integer status; @@ -64,8 +65,7 @@ public class SituacaoAprendizagem { private Set objetosAprendizagem = new HashSet<>(); @OneToMany(fetch = FetchType.EAGER, mappedBy = "situacaoAprendizagem") - private List atividades; - + private List atividades = new ArrayList<>(); } diff --git a/src/main/java/br/com/aprendizagem/api/entity/UnidadeCurricular.java b/src/main/java/br/com/aprendizagem/api/entity/UnidadeCurricular.java index fbe912c..37034cf 100644 --- a/src/main/java/br/com/aprendizagem/api/entity/UnidadeCurricular.java +++ b/src/main/java/br/com/aprendizagem/api/entity/UnidadeCurricular.java @@ -2,16 +2,7 @@ import java.util.Set; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.Lob; -import javax.persistence.ManyToOne; -import javax.persistence.OneToMany; -import javax.persistence.Table; +import javax.persistence.*; import com.fasterxml.jackson.annotation.JsonIgnore; @@ -56,10 +47,9 @@ public class UnidadeCurricular { @Column(name = "unidade_curricular_status", nullable = false) private Integer status; - @ManyToOne + @ManyToOne(fetch = FetchType.EAGER) @JoinColumn(name = "modulo_id", nullable = false) - @JsonIgnore - private Modulo modulo; + private Modulo modulo; //@OneToMany(mappedBy = "competencia") //private Set competencia; diff --git a/src/main/java/br/com/aprendizagem/api/repository/AcompanhamentoRepository.java b/src/main/java/br/com/aprendizagem/api/repository/AcompanhamentoRepository.java index d44f1cd..3736941 100644 --- a/src/main/java/br/com/aprendizagem/api/repository/AcompanhamentoRepository.java +++ b/src/main/java/br/com/aprendizagem/api/repository/AcompanhamentoRepository.java @@ -3,6 +3,7 @@ import br.com.aprendizagem.api.entity.Acompanhamento; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import java.util.List; @@ -22,4 +23,10 @@ public interface AcompanhamentoRepository extends JpaRepository findByParticipante_Grupo_IdAndParticipante_Estudante_IdAndAtividade_Id(Long grupoId, Long estudanteId, Long atividadeId); List findByParticipante_Grupo_IdAndParticipante_Estudante_IdAndObjetoAprendizagem_Id(Long grupoId, Long estudanteId, Long objetoId); + + Integer countByParticipante_Id(Long participanteId); + + @Query("SELECT COUNT(a) FROM Acompanhamento a " + + "WHERE a.participante.id = :participanteId AND a.status = 1") + Integer countActiveByParticipanteId(@Param("participanteId") Long participanteId); } diff --git a/src/main/java/br/com/aprendizagem/api/repository/ChapterAssuntoComentarioRepository.java b/src/main/java/br/com/aprendizagem/api/repository/ChapterAssuntoComentarioRepository.java new file mode 100644 index 0000000..a630530 --- /dev/null +++ b/src/main/java/br/com/aprendizagem/api/repository/ChapterAssuntoComentarioRepository.java @@ -0,0 +1,29 @@ +package br.com.aprendizagem.api.repository; + +import br.com.aprendizagem.api.DTO.ChapterAssuntoComentarioDto; +import br.com.aprendizagem.api.entity.ChapterAssuntoComentario; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; + +import java.util.List; + +public interface ChapterAssuntoComentarioRepository extends JpaRepository { + + @Query("SELECT cac FROM ChapterAssuntoComentario cac WHERE cac.id = :id") + ChapterAssuntoComentario getChapterAssuntoComentarioById(Long id); + + @Query("SELECT cac FROM ChapterAssuntoComentario cac WHERE cac.chapterAssunto.id = :chapterAssuntoId") + List findByChapterAssuntoId(Integer chapterAssuntoId); + + @Query("SELECT cac FROM ChapterAssuntoComentario cac WHERE cac.chapterAssunto.id = :chapterAssuntoId and cac.comentarioPai is null") + List findByChapterAssuntoIdAndComentarioPaiNull(Integer chapterAssuntoId); + +// @Query("SELECT cac FROM ChapterAssuntoComentario cac WHERE cac.comentarioPai = null") +// List findAllComentarioPai(); +// +// @Query("SELECT cac FROM ChapterAssuntoComentario cac WHERE cac.comentarioPai = null and cac.chapterAssunto.id = :chapterAssuntoId") +// List findAllComentarioPaiByChapterAssuntoId(Integer chapterAssuntoId); +// + @Query("SELECT cac FROM ChapterAssuntoComentario cac WHERE cac.comentarioPai.id = :comentarioPaiId") + List getFilhosByPaiId(Long comentarioPaiId); +} diff --git a/src/main/java/br/com/aprendizagem/api/repository/ChapterAssuntoRepository.java b/src/main/java/br/com/aprendizagem/api/repository/ChapterAssuntoRepository.java index d8133b2..52cf9b9 100644 --- a/src/main/java/br/com/aprendizagem/api/repository/ChapterAssuntoRepository.java +++ b/src/main/java/br/com/aprendizagem/api/repository/ChapterAssuntoRepository.java @@ -10,4 +10,9 @@ public interface ChapterAssuntoRepository extends JpaRepository getAllChapterAssunto(); + + @Query("SELECT ca FROM ChapterAssunto ca WHERE ca.chapter.id = 7 and ca.status = 1") + List getAllNoticias(); + + List findByChapterId(Integer chapterId); } diff --git a/src/main/java/br/com/aprendizagem/api/repository/ChapterAssuntoTagRepository.java b/src/main/java/br/com/aprendizagem/api/repository/ChapterAssuntoTagRepository.java deleted file mode 100644 index 2ba1d9b..0000000 --- a/src/main/java/br/com/aprendizagem/api/repository/ChapterAssuntoTagRepository.java +++ /dev/null @@ -1,7 +0,0 @@ -package br.com.aprendizagem.api.repository; - -import br.com.aprendizagem.api.entity.ChapterAssuntoTag; -import org.springframework.data.jpa.repository.JpaRepository; - -public interface ChapterAssuntoTagRepository extends JpaRepository { -} diff --git a/src/main/java/br/com/aprendizagem/api/repository/ChapterRepository.java b/src/main/java/br/com/aprendizagem/api/repository/ChapterRepository.java index b3ea29c..00b4d5a 100644 --- a/src/main/java/br/com/aprendizagem/api/repository/ChapterRepository.java +++ b/src/main/java/br/com/aprendizagem/api/repository/ChapterRepository.java @@ -2,6 +2,15 @@ import br.com.aprendizagem.api.entity.Chapter; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; + +import java.util.List; public interface ChapterRepository extends JpaRepository { -} + + @Query("SELECT c FROM Chapter c WHERE c.status = 1") + List getActiveChapters(); + + @Query("SELECT c FROM Chapter c WHERE c.status = 2") + Chapter getNoticiasChapter(); +} \ No newline at end of file diff --git a/src/main/java/br/com/aprendizagem/api/repository/ControleExecucaoRepository.java b/src/main/java/br/com/aprendizagem/api/repository/ControleExecucaoRepository.java new file mode 100644 index 0000000..4222a98 --- /dev/null +++ b/src/main/java/br/com/aprendizagem/api/repository/ControleExecucaoRepository.java @@ -0,0 +1,9 @@ +package br.com.aprendizagem.api.repository; + +import br.com.aprendizagem.api.entity.ControleExecucao; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface ControleExecucaoRepository extends JpaRepository { + + ControleExecucao findByEncontroIdAndParticipante_Estudante_Id(Long encontroId, Long estudanteId); +} diff --git a/src/main/java/br/com/aprendizagem/api/repository/CurtidaRepository.java b/src/main/java/br/com/aprendizagem/api/repository/CurtidaRepository.java new file mode 100644 index 0000000..7b43d65 --- /dev/null +++ b/src/main/java/br/com/aprendizagem/api/repository/CurtidaRepository.java @@ -0,0 +1,16 @@ +package br.com.aprendizagem.api.repository; + +import br.com.aprendizagem.api.entity.Curtida; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; + +import java.util.List; + +public interface CurtidaRepository extends JpaRepository { + + + @Query("SELECT c FROM Curtida c WHERE c.chapterAssuntoComentario.id = :comentarioId") + List getCurtidasByComentarioId(Long comentarioId); + +} diff --git a/src/main/java/br/com/aprendizagem/api/repository/EncontroRepository.java b/src/main/java/br/com/aprendizagem/api/repository/EncontroRepository.java index 92c1743..440afe1 100644 --- a/src/main/java/br/com/aprendizagem/api/repository/EncontroRepository.java +++ b/src/main/java/br/com/aprendizagem/api/repository/EncontroRepository.java @@ -2,10 +2,24 @@ import br.com.aprendizagem.api.entity.Encontro; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import java.util.List; import java.util.Optional; public interface EncontroRepository extends JpaRepository { Optional> findByGrupoId(Long id); + + @Query("SELECT COUNT (sao) FROM Encontro e " + + "JOIN e.situacoesAprendizagem sa " + + "JOIN sa.objetosAprendizagem sao " + + "WHERE e.id = :encontroId") + Integer countObjetoAprendizagemByEncontroId(@Param("encontroId") Long encontroId); + + @Query("SELECT COUNT (a) FROM Encontro e " + + "JOIN e.situacoesAprendizagem sa " + + "JOIN sa.atividades a " + + "WHERE e.id = :encontroId") + Integer countAtividadeByEncontroId(@Param("encontroId") Long encontroId); } diff --git a/src/main/java/br/com/aprendizagem/api/repository/GrupoRepository.java b/src/main/java/br/com/aprendizagem/api/repository/GrupoRepository.java index 8802a71..f8f153b 100644 --- a/src/main/java/br/com/aprendizagem/api/repository/GrupoRepository.java +++ b/src/main/java/br/com/aprendizagem/api/repository/GrupoRepository.java @@ -15,5 +15,6 @@ public interface GrupoRepository extends JpaRepository { // @Query("SELECT g FROM Grupo g JOIN g.estudantes s WHERE s.id = :estudanteId AND g.periodo.status = 1") // List getGruposByPeriodoAtivoEstudanteId(@Param("estudanteId") Long estudanteId); - List getGruposByProfessorId(Long professorId); + @Query("SELECT g FROM Grupo g JOIN g.professor s WHERE s.id = :professorId AND g.periodo.status = 1") + List getGruposByPeriodoAtivoByProfessorId(Long professorId); } diff --git a/src/main/java/br/com/aprendizagem/api/repository/ObjetoAprendizagemRepository.java b/src/main/java/br/com/aprendizagem/api/repository/ObjetoAprendizagemRepository.java index 9516ec1..20f1337 100644 --- a/src/main/java/br/com/aprendizagem/api/repository/ObjetoAprendizagemRepository.java +++ b/src/main/java/br/com/aprendizagem/api/repository/ObjetoAprendizagemRepository.java @@ -2,6 +2,15 @@ import br.com.aprendizagem.api.entity.ObjetoAprendizagem; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; + +import java.util.List; public interface ObjetoAprendizagemRepository extends JpaRepository { + + @Query("SELECT DISTINCT o FROM ObjetoAprendizagem o LEFT JOIN FETCH o.recursos") + List findAllWithRecursos(); + + @Query("SELECT o FROM ObjetoAprendizagem o LEFT JOIN FETCH o.recursos WHERE o.id = :objetoId") + ObjetoAprendizagem findByIdWithRecursos(Long objetoId); } diff --git a/src/main/java/br/com/aprendizagem/api/repository/ParticipanteRepository.java b/src/main/java/br/com/aprendizagem/api/repository/ParticipanteRepository.java index 0a83d8b..0063930 100644 --- a/src/main/java/br/com/aprendizagem/api/repository/ParticipanteRepository.java +++ b/src/main/java/br/com/aprendizagem/api/repository/ParticipanteRepository.java @@ -9,4 +9,8 @@ public interface ParticipanteRepository extends JpaRepository findByEstudanteId(Long estudanteId); + + Participante findByGrupo_IdAndEstudante_Id(Long grupoId, Long estudanteId); + + List findByGrupo_Id(Long grupoId); } diff --git a/src/main/java/br/com/aprendizagem/api/repository/PlanejamentoUcRepository.java b/src/main/java/br/com/aprendizagem/api/repository/PlanejamentoUcRepository.java new file mode 100644 index 0000000..8448a85 --- /dev/null +++ b/src/main/java/br/com/aprendizagem/api/repository/PlanejamentoUcRepository.java @@ -0,0 +1,7 @@ +package br.com.aprendizagem.api.repository; + +import br.com.aprendizagem.api.entity.PlanejamentoUc; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface PlanejamentoUcRepository extends JpaRepository { +} diff --git a/src/main/java/br/com/aprendizagem/api/repository/ProfessorRepository.java b/src/main/java/br/com/aprendizagem/api/repository/ProfessorRepository.java index 8207ca0..ed08eda 100644 --- a/src/main/java/br/com/aprendizagem/api/repository/ProfessorRepository.java +++ b/src/main/java/br/com/aprendizagem/api/repository/ProfessorRepository.java @@ -4,4 +4,5 @@ import org.springframework.data.jpa.repository.JpaRepository; public interface ProfessorRepository extends JpaRepository { + Professor findByUsuarioId(String usuarioId); } diff --git a/src/main/java/br/com/aprendizagem/api/repository/SituacaoAprendizagemRepository.java b/src/main/java/br/com/aprendizagem/api/repository/SituacaoAprendizagemRepository.java index 6f64462..973ce66 100644 --- a/src/main/java/br/com/aprendizagem/api/repository/SituacaoAprendizagemRepository.java +++ b/src/main/java/br/com/aprendizagem/api/repository/SituacaoAprendizagemRepository.java @@ -3,5 +3,9 @@ import br.com.aprendizagem.api.entity.SituacaoAprendizagem; import org.springframework.data.jpa.repository.JpaRepository; +import java.util.List; + public interface SituacaoAprendizagemRepository extends JpaRepository { + + List findByPlanejamentoUc_Id (Long planejamentoUcId); } diff --git a/src/main/java/br/com/aprendizagem/api/request/AcompanhamentoRequest.java b/src/main/java/br/com/aprendizagem/api/request/AcompanhamentoRequest.java new file mode 100644 index 0000000..c67c22d --- /dev/null +++ b/src/main/java/br/com/aprendizagem/api/request/AcompanhamentoRequest.java @@ -0,0 +1,33 @@ +package br.com.aprendizagem.api.request; + +import br.com.aprendizagem.api.entity.Atividade; +import br.com.aprendizagem.api.entity.ObjetoAprendizagem; +import br.com.aprendizagem.api.entity.Participante; +import br.com.aprendizagem.api.entity.SituacaoAprendizagem; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.persistence.Column; +import java.time.LocalDateTime; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class AcompanhamentoRequest { + private String entrega; + private byte[] entregaArquivo; + private LocalDateTime inicio; + private LocalDateTime finalizacao; + private Integer status; + private Participante participante; + private Integer avaliacaoConceitoId; + private Atividade atividade; + private Long objetoAprendizagemId; + private Long situacaoAprendizagemId; + private Integer badgeId; + private LocalDateTime dataBadge; + private Long atividadePerguntaRespostaId; +} diff --git a/src/main/java/br/com/aprendizagem/api/request/SituacaoAprendizagemRequest.java b/src/main/java/br/com/aprendizagem/api/request/SituacaoAprendizagemRequest.java new file mode 100644 index 0000000..af8c622 --- /dev/null +++ b/src/main/java/br/com/aprendizagem/api/request/SituacaoAprendizagemRequest.java @@ -0,0 +1,22 @@ +package br.com.aprendizagem.api.request; + +import br.com.aprendizagem.api.entity.SituacaoAprendizagem; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class SituacaoAprendizagemRequest { + private String titulo; + private String descricao; + private Integer ordem; + private Integer duracao; + private Integer status; + private Long planejamentoUcId; + private Integer grauDificuldadeId; + private Integer badgeId; +} diff --git a/src/main/java/br/com/aprendizagem/api/response/EncontroAlunoResponse.java b/src/main/java/br/com/aprendizagem/api/response/EncontroAlunoResponse.java deleted file mode 100644 index 2be5a5b..0000000 --- a/src/main/java/br/com/aprendizagem/api/response/EncontroAlunoResponse.java +++ /dev/null @@ -1,4 +0,0 @@ -package br.com.aprendizagem.api.response; - -public class EncontroAlunoResponse { -} diff --git a/src/main/java/br/com/aprendizagem/api/response/EncontroEstudanteResponse.java b/src/main/java/br/com/aprendizagem/api/response/EncontroEstudanteResponse.java new file mode 100644 index 0000000..2e0b9b8 --- /dev/null +++ b/src/main/java/br/com/aprendizagem/api/response/EncontroEstudanteResponse.java @@ -0,0 +1,55 @@ +package br.com.aprendizagem.api.response; + +import br.com.aprendizagem.api.entity.DiaLetivo; +import br.com.aprendizagem.api.entity.Encontro; +import br.com.aprendizagem.api.entity.EncontroTipo; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class EncontroEstudanteResponse { + + private Long id; + private String observacao; + private DiaLetivo diaLetivo; + private Long grupoId; + private LocalDateTime horaInicio; + private LocalDateTime horaFim; + private String local; + private Integer status; + private EncontroTipo encontroTipo; + private List situacoesAprendizagem; + private Integer presenca; + + public static EncontroEstudanteResponse of (Encontro encontro, Integer presenca) { + return EncontroEstudanteResponse.builder() + .id(encontro.getId()) + .observacao(encontro.getObservacao()) + .diaLetivo(encontro.getDiaLetivo()) + .grupoId(encontro.getGrupo().getId()) + .horaInicio(encontro.getHoraInicio()) + .horaFim(encontro.getHoraFim()) + .local(encontro.getLocal()) + .status(encontro.getStatus()) + .encontroTipo(encontro.getEncontroTipo()) + .situacoesAprendizagem(SituacaoAprendizagemResponse.of(encontro.getSituacoesAprendizagem())) + .presenca(presenca) + .build(); + } + +// public static List of (List encontros) { +// List encontroEstudanteResponses = new ArrayList<>(); +// for( Encontro encontro : encontros) { +// encontroEstudanteResponses.add(of(encontro)); +// } +// return encontroEstudanteResponses; +// } +} diff --git a/src/main/java/br/com/aprendizagem/api/response/ModuloResponse.java b/src/main/java/br/com/aprendizagem/api/response/ModuloResponse.java index dea21ec..f16e5f2 100644 --- a/src/main/java/br/com/aprendizagem/api/response/ModuloResponse.java +++ b/src/main/java/br/com/aprendizagem/api/response/ModuloResponse.java @@ -26,7 +26,7 @@ public class ModuloResponse { private String descricao; private int cargaHoraria; private Oferta oferta; - private Set unidadeCurricular; +// private Set unidadeCurricular; public static ModuloResponse of(Modulo modulo) { return ModuloResponse.builder() @@ -34,7 +34,7 @@ public static ModuloResponse of(Modulo modulo) { .descricao(modulo.getDescricao()) .cargaHoraria(modulo.getCargaHoraria()) .oferta(modulo.getOferta()) - .unidadeCurricular(modulo.getUnidadeCurricular()) +// .unidadeCurricular(modulo.getUnidadeCurricular()) .build(); } diff --git a/src/main/java/br/com/aprendizagem/api/response/ObjetoAprendizagemResponse.java b/src/main/java/br/com/aprendizagem/api/response/ObjetoAprendizagemResponse.java index 0b4a407..1d00d39 100644 --- a/src/main/java/br/com/aprendizagem/api/response/ObjetoAprendizagemResponse.java +++ b/src/main/java/br/com/aprendizagem/api/response/ObjetoAprendizagemResponse.java @@ -1,9 +1,6 @@ package br.com.aprendizagem.api.response; -import br.com.aprendizagem.api.entity.GrauDificuldade; -import br.com.aprendizagem.api.entity.ObjetoAprendizagem; -import br.com.aprendizagem.api.entity.SituacaoAprendizagem; -import br.com.aprendizagem.api.entity.Usuario; +import br.com.aprendizagem.api.entity.*; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -28,6 +25,7 @@ public class ObjetoAprendizagemResponse { private Integer ordem; private Integer status; private GrauDificuldade grauDificuldade; + private List recursos; public static ObjetoAprendizagemResponse of (ObjetoAprendizagem objetoAprendizagem){ return ObjetoAprendizagemResponse.builder() diff --git a/src/main/java/br/com/aprendizagem/api/response/ParticipanteResponse.java b/src/main/java/br/com/aprendizagem/api/response/ParticipanteResponse.java index 6bcb2f9..d9b043c 100644 --- a/src/main/java/br/com/aprendizagem/api/response/ParticipanteResponse.java +++ b/src/main/java/br/com/aprendizagem/api/response/ParticipanteResponse.java @@ -1,6 +1,8 @@ package br.com.aprendizagem.api.response; +import br.com.aprendizagem.api.entity.Estudante; import br.com.aprendizagem.api.entity.Participante; +import br.com.aprendizagem.api.entity.Usuario; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -20,6 +22,7 @@ public class ParticipanteResponse { private Integer status; private Long grupoId; private String usuarioId; + private Estudante estudante; public static ParticipanteResponse of(Participante participante){ @@ -29,6 +32,7 @@ public static ParticipanteResponse of(Participante participante){ .status(participante.getStatus()) .grupoId(participante.getGrupo().getId()) .usuarioId(participante.getEstudante().getUsuario().getId()) + .estudante(participante.getEstudante()) .build(); } diff --git a/src/main/java/br/com/aprendizagem/api/response/ProgressoEstudanteResponse.java b/src/main/java/br/com/aprendizagem/api/response/ProgressoEstudanteResponse.java new file mode 100644 index 0000000..f01f008 --- /dev/null +++ b/src/main/java/br/com/aprendizagem/api/response/ProgressoEstudanteResponse.java @@ -0,0 +1,34 @@ +package br.com.aprendizagem.api.response; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.text.DecimalFormat; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class ProgressoEstudanteResponse { + private String progressoEstudante; + private String progressoUc; + private int totalObjetos; + private int totalAtividades; + private int totalAcompanhados; + + private static final DecimalFormat df = new DecimalFormat("0.00"); + + public static ProgressoEstudanteResponse of (int totalObjetos, int totalAtividades, int totalAcompanhados){ + float progressoEstu = (float) totalAcompanhados/(totalObjetos + totalAtividades) * 100; + + return ProgressoEstudanteResponse.builder() + .progressoEstudante(df.format(progressoEstu)) + .progressoUc("100") + .totalObjetos(totalObjetos) + .totalAtividades(totalAtividades) + .totalAcompanhados(totalAcompanhados) + .build(); + } +} diff --git a/src/main/java/br/com/aprendizagem/api/response/SituacaoAprendizagemResponse.java b/src/main/java/br/com/aprendizagem/api/response/SituacaoAprendizagemResponse.java index 46f140c..1091f03 100644 --- a/src/main/java/br/com/aprendizagem/api/response/SituacaoAprendizagemResponse.java +++ b/src/main/java/br/com/aprendizagem/api/response/SituacaoAprendizagemResponse.java @@ -5,6 +5,8 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; + +import java.time.LocalDate; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; @@ -19,6 +21,9 @@ public class SituacaoAprendizagemResponse { private String titulo; private String descricao; private Integer ordem; + private LocalDateTime inicio; + private LocalDateTime fim; + private Integer duracao; private Integer status; private PlanejamentoUc planejamentoUc; private GrauDificuldade grauDificuldade; @@ -31,6 +36,9 @@ public static SituacaoAprendizagemResponse of (SituacaoAprendizagem situacaoApre .titulo(situacaoAprendizagem.getTitulo()) .descricao(situacaoAprendizagem.getDescricao()) .ordem(situacaoAprendizagem.getOrdem()) + .inicio(situacaoAprendizagem.getInicio()) + .fim(situacaoAprendizagem.getFim()) + .duracao(situacaoAprendizagem.getDuracao()) .status(situacaoAprendizagem.getStatus()) .planejamentoUc(situacaoAprendizagem.getPlanejamentoUc()) .grauDificuldade(situacaoAprendizagem.getGrauDificuldade()) diff --git a/src/main/java/br/com/aprendizagem/api/response/UsuarioResponse.java b/src/main/java/br/com/aprendizagem/api/response/UsuarioResponse.java index 414e91d..98526da 100644 --- a/src/main/java/br/com/aprendizagem/api/response/UsuarioResponse.java +++ b/src/main/java/br/com/aprendizagem/api/response/UsuarioResponse.java @@ -21,6 +21,9 @@ public class UsuarioResponse { private String apelido; private String email; private LocalDateTime dataNascimento; + private String telefone; + private LocalDateTime dataCadastro; + private byte[] foto; private Integer status; public static UsuarioResponse of(Usuario usuario) { @@ -31,6 +34,9 @@ public static UsuarioResponse of(Usuario usuario) { .apelido(usuario.getApelido()) .email(usuario.getEmail()) .dataNascimento(usuario.getDataNascimento()) + .telefone(usuario.getTelefone()) + .dataCadastro(usuario.getDataCadastro()) + .foto(usuario.getFoto()) .status(usuario.getStatus()) .build(); } diff --git a/src/main/java/br/com/aprendizagem/api/service/AcompanhamentoService.java b/src/main/java/br/com/aprendizagem/api/service/AcompanhamentoService.java index 091ee19..c21a697 100644 --- a/src/main/java/br/com/aprendizagem/api/service/AcompanhamentoService.java +++ b/src/main/java/br/com/aprendizagem/api/service/AcompanhamentoService.java @@ -1,7 +1,11 @@ package br.com.aprendizagem.api.service; import br.com.aprendizagem.api.entity.Acompanhamento; +import br.com.aprendizagem.api.entity.Atividade; +import br.com.aprendizagem.api.entity.ObjetoAprendizagem; +import br.com.aprendizagem.api.entity.Participante; import br.com.aprendizagem.api.repository.AcompanhamentoRepository; +import br.com.aprendizagem.api.request.AcompanhamentoRequest; import br.com.aprendizagem.api.response.AcompanhamentoResponse; import lombok.AllArgsConstructor; import org.springframework.http.ResponseEntity; @@ -10,13 +14,15 @@ import javax.transaction.Transactional; import java.util.ArrayList; import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; @Service @AllArgsConstructor public class AcompanhamentoService { private final AcompanhamentoRepository acompanhamentoRepository; - + private final ObjetoAprendizagemService objetoAprendizagemService; @Transactional public ResponseEntity> getAcompanhamentosResponse() { @@ -85,6 +91,7 @@ public ResponseEntity> getAcompanhamentosResponseBy return ResponseEntity.ok(AcompanhamentoResponse.of(acompanhamentos)); } + @Transactional public ResponseEntity> getAcompanhamentosResponseByGrupoIdByEstudanteIdByAtividadeId(Long grupoId, Long estudanteId, Long atividadeId) { List acompanhamentos = acompanhamentoRepository.findByParticipante_Grupo_IdAndParticipante_Estudante_IdAndAtividade_Id(grupoId, estudanteId, atividadeId); if(acompanhamentos.isEmpty()) { @@ -93,11 +100,59 @@ public ResponseEntity> getAcompanhamentosResponseBy return ResponseEntity.ok(AcompanhamentoResponse.of(acompanhamentos)); } + @Transactional public ResponseEntity> getAcompanhamentosResponseByGrupoIdByEstudanteIdByObjetoId(Long grupoId, Long estudanteId, Long objetoId) { List acompanhamentos = acompanhamentoRepository.findByParticipante_Grupo_IdAndParticipante_Estudante_IdAndObjetoAprendizagem_Id(grupoId, estudanteId, objetoId); if(acompanhamentos.isEmpty()) { - return ResponseEntity.noContent().build(); + return ResponseEntity.notFound().build(); } + acompanhamentos = acompanhamentos.stream().filter(acompanhamento -> acompanhamento.getStatus() != -1).collect(Collectors.toList()); return ResponseEntity.ok(AcompanhamentoResponse.of(acompanhamentos)); } + + @Transactional + public Integer getTotalAcompanhamentosByParticipanteId(Long participanteId) { + return acompanhamentoRepository.countActiveByParticipanteId(participanteId); + } + + @Transactional + public ResponseEntity createAcompanhamento(AcompanhamentoRequest acompanhamentoRequest) { + + Optional optAcompanhamentoExistente = acompanhamentoRepository.findByObjetoAprendizagem_IdAndParticipante_Estudante_Id( + acompanhamentoRequest.getObjetoAprendizagemId(), + acompanhamentoRequest.getParticipante().getEstudante().getId()) + .stream().filter(acompanhamento -> acompanhamento.getStatus() != -1).findFirst(); + if(optAcompanhamentoExistente.isEmpty()){ + Acompanhamento acompanhamento = new Acompanhamento(); + acompanhamento.setEntrega(acompanhamentoRequest.getEntrega()); + if(acompanhamento.getEntrega() == null) { + acompanhamento.setEntrega("0"); + } + acompanhamento.setEntregaArquivo(acompanhamentoRequest.getEntregaArquivo()); + acompanhamento.setInicio(acompanhamentoRequest.getInicio()); + acompanhamento.setFinalizacao(acompanhamentoRequest.getFinalizacao()); + acompanhamento.setStatus(acompanhamentoRequest.getStatus()); + acompanhamento.setParticipante(acompanhamentoRequest.getParticipante()); + acompanhamento.setAvaliacaoConceitoId(acompanhamentoRequest.getAvaliacaoConceitoId()); +// Atividade atividade = atividadeService.getAtividadeById(acompanhamentoRequest.getAtividade().getId()); + acompanhamento.setAtividade(acompanhamentoRequest.getAtividade()); + ObjetoAprendizagem objetoAprendizagem = objetoAprendizagemService.getObjetoAprendizagemById(acompanhamentoRequest.getObjetoAprendizagemId()); + acompanhamento.setObjetoAprendizagem(objetoAprendizagem); + acompanhamento.setSituacaoAprendizagemId(acompanhamentoRequest.getSituacaoAprendizagemId()); + acompanhamento.setBadgeId(acompanhamentoRequest.getBadgeId()); + acompanhamento.setDataBadge(acompanhamentoRequest.getDataBadge()); + acompanhamento.setAtividadePerguntaRespostaId(acompanhamentoRequest.getAtividadePerguntaRespostaId()); + return ResponseEntity.ok(acompanhamentoRepository.save(acompanhamento)); + } + else { + Acompanhamento acompanhamento = optAcompanhamentoExistente.get(); + if(acompanhamento.getStatus() == 1) { + acompanhamento.setStatus(0); + } + else { + acompanhamento.setStatus(1); + } + return ResponseEntity.ok(acompanhamentoRepository.save(acompanhamento)); + } + } } diff --git a/src/main/java/br/com/aprendizagem/api/service/ChapterAssuntoComentarioService.java b/src/main/java/br/com/aprendizagem/api/service/ChapterAssuntoComentarioService.java new file mode 100644 index 0000000..aa12a38 --- /dev/null +++ b/src/main/java/br/com/aprendizagem/api/service/ChapterAssuntoComentarioService.java @@ -0,0 +1,99 @@ +package br.com.aprendizagem.api.service; + +import br.com.aprendizagem.api.DTO.ChapterAssuntoComentarioDto; +import br.com.aprendizagem.api.entity.ChapterAssuntoComentario; +import br.com.aprendizagem.api.repository.ChapterAssuntoComentarioRepository; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +@Service +@AllArgsConstructor +public class ChapterAssuntoComentarioService { + + private final ChapterAssuntoComentarioRepository chapterAssuntoComentarioRepository; + + private final ChapterAssuntoService chapterAssuntoService; + + private final UsuarioService usuarioService; + + public List getAllChapterAssuntoComentario() { + return chapterAssuntoComentarioRepository.findAll(); + } + + public ChapterAssuntoComentario getChapterAssuntoComentarioById(Long id) { + ChapterAssuntoComentario chapterAssuntoComentario = chapterAssuntoComentarioRepository.getChapterAssuntoComentarioById(id); + if (chapterAssuntoComentario != null) { + return chapterAssuntoComentario; + } else { + return null; + } + } + + public ChapterAssuntoComentario postChapterAssuntoComentario(ChapterAssuntoComentarioDto chapterAssuntoComentarioDto) { + ChapterAssuntoComentario chapterAssuntoComentario = new ChapterAssuntoComentario(); + chapterAssuntoComentario.setTexto(chapterAssuntoComentarioDto.getTexto()); + chapterAssuntoComentario.setData(chapterAssuntoComentarioDto.getData()); + chapterAssuntoComentario.setChapterAssunto(chapterAssuntoService.getChapterAssuntoById(chapterAssuntoComentarioDto.getChapterAssuntoId())); + chapterAssuntoComentario.setUsuario(usuarioService.getUsuarioById(chapterAssuntoComentarioDto.getUsuarioId())); + chapterAssuntoComentario.setCurtidas(chapterAssuntoComentarioDto.getCurtidas()); + if (chapterAssuntoComentarioDto.getPaiId() != null) { + chapterAssuntoComentario.setComentarioPai(getChapterAssuntoComentarioById(chapterAssuntoComentarioDto.getPaiId())); + } + return chapterAssuntoComentarioRepository.save(chapterAssuntoComentario); + } + + public void deleteChapterAssuntoComentarioById(Integer id) { + chapterAssuntoComentarioRepository.deleteById(id); + } + + public List filterByChapterAssuntoId(Integer chapterAssuntoId) { + return chapterAssuntoComentarioRepository.findByChapterAssuntoId(chapterAssuntoId); + } + +// public List findAllComentarioPai() { +// return chapterAssuntoComentarioRepository.findAllComentarioPai(); +// } +// +// public List findAllComentarioPaiByChapterAssuntoId(Integer chapterAssuntoId) { +// return chapterAssuntoComentarioRepository.findAllComentarioPaiByChapterAssuntoId(chapterAssuntoId); +// } + + public List getAllChapterAssuntoComentarioDto() { + List chapterAssuntoComentarios = chapterAssuntoComentarioRepository.findAll(); + List chapterAssuntoComentarioDtos = new ArrayList<>(); + for (ChapterAssuntoComentario chapterAssuntoComentario : chapterAssuntoComentarios) { + ChapterAssuntoComentarioDto chapterAssuntoComentarioDto = new ChapterAssuntoComentarioDto(); + chapterAssuntoComentarioDtos.add(buildDto(chapterAssuntoComentario, chapterAssuntoComentarioDto)); + } + return chapterAssuntoComentarioDtos; + } + + public List getAllChapterAssuntoComentarioDtoByChapterAssuntoId(Integer chapterAssuntoId) { + List chapterAssuntoComentarios = chapterAssuntoComentarioRepository.findByChapterAssuntoId(chapterAssuntoId); + List chapterAssuntoComentarioDtos = new ArrayList<>(); + for (ChapterAssuntoComentario chapterAssuntoComentario : chapterAssuntoComentarios) { + ChapterAssuntoComentarioDto chapterAssuntoComentarioDto = new ChapterAssuntoComentarioDto(); + chapterAssuntoComentarioDtos.add(buildDto(chapterAssuntoComentario, chapterAssuntoComentarioDto)); + } + return chapterAssuntoComentarioDtos; + } + + public ChapterAssuntoComentarioDto buildDto(ChapterAssuntoComentario chapterAssuntoComentario, ChapterAssuntoComentarioDto chapterAssuntoComentarioDto) { + chapterAssuntoComentarioDto.setId(chapterAssuntoComentario.getId()); + chapterAssuntoComentarioDto.setTexto(chapterAssuntoComentario.getTexto()); + chapterAssuntoComentarioDto.setData(chapterAssuntoComentario.getData()); + if (chapterAssuntoComentario.getComentarioPai() != null) { + chapterAssuntoComentarioDto.setPaiId(chapterAssuntoComentario.getComentarioPai().getId()); + } + chapterAssuntoComentarioDto.setChapterAssuntoId(chapterAssuntoComentario.getChapterAssunto().getId()); + chapterAssuntoComentarioDto.setUsuario(chapterAssuntoComentario.getUsuario()); + chapterAssuntoComentarioDto.setCurtidas(chapterAssuntoComentario.getCurtidas()); + return chapterAssuntoComentarioDto; + } + +} + + diff --git a/src/main/java/br/com/aprendizagem/api/service/ChapterAssuntoService.java b/src/main/java/br/com/aprendizagem/api/service/ChapterAssuntoService.java index 2efa2dd..a5f7f46 100644 --- a/src/main/java/br/com/aprendizagem/api/service/ChapterAssuntoService.java +++ b/src/main/java/br/com/aprendizagem/api/service/ChapterAssuntoService.java @@ -1,16 +1,14 @@ package br.com.aprendizagem.api.service; +import br.com.aprendizagem.api.DTO.ChapterAssuntoDto; import br.com.aprendizagem.api.entity.ChapterAssunto; -import br.com.aprendizagem.api.entity.ChapterAssuntoTag; -import br.com.aprendizagem.api.entity.ChapterTag; import br.com.aprendizagem.api.repository.ChapterAssuntoRepository; -import br.com.aprendizagem.api.repository.ChapterAssuntoTagRepository; -import br.com.aprendizagem.api.repository.ChapterTagRepository; import lombok.AllArgsConstructor; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import javax.transaction.Transactional; +import java.util.ArrayList; import java.util.List; @Service @@ -18,38 +16,100 @@ public class ChapterAssuntoService { private final ChapterAssuntoRepository chapterAssuntoRepository; - private final ChapterTagRepository chapterTagRepository; - private final ChapterAssuntoTagRepository chapterAssuntoTagRepository; + @Transactional - public ResponseEntity> getAllChapterAssunto() { - List assuntos = chapterAssuntoRepository.getAllChapterAssunto(); - if (assuntos.isEmpty()) { - return ResponseEntity.notFound().build(); + public ChapterAssuntoDto getChapterAssuntoDtoById(Integer id) { + ChapterAssunto chapterAssunto = chapterAssuntoRepository.findById(id).orElse(null); + ChapterAssuntoDto chapterAssuntoDTO = new ChapterAssuntoDto(); + if (chapterAssunto != null) { + buildDto(chapterAssunto, chapterAssuntoDTO); } - return ResponseEntity.ok(assuntos); + return chapterAssuntoDTO; } @Transactional - public ChapterAssunto getChapterAssuntoWithTags(Integer id) { + public ChapterAssunto getChapterAssuntoById(Integer id) { return chapterAssuntoRepository.findById(id).orElse(null); } @Transactional - public void associarTagAAssunto(ChapterAssunto chapterAssunto, List chapterTagIds) { - for (Integer chapterTagId : chapterTagIds) { - ChapterTag chapterTag = chapterTagRepository.findById(chapterTagId.longValue()).orElse(null); - if (chapterTag != null) { - ChapterAssuntoTag chapterAssuntoTag = new ChapterAssuntoTag(); - chapterAssuntoTag.setChapterAssunto(chapterAssunto); - chapterAssuntoTag.setChapterTag(chapterTag); - chapterAssuntoTagRepository.save(chapterAssuntoTag); - } - } + public List getAllNoticias() { + return chapterAssuntoRepository.getAllNoticias(); } + @Transactional public ChapterAssunto postChapterAssunto(ChapterAssunto chapterAssunto) { return chapterAssuntoRepository.save(chapterAssunto); } + + @Transactional + public ResponseEntity> filterChapterAssuntosByChapterId(Integer chapterId) { + List chapterAssuntos = chapterAssuntoRepository.findByChapterId(chapterId); + if (!chapterAssuntos.isEmpty()) { + return ResponseEntity.ok(chapterAssuntos); + } else { + return ResponseEntity.notFound().build(); + } + } + + @Transactional + public ResponseEntity> getAllChapterAssuntoDto() { + List chapterAssuntos = chapterAssuntoRepository.getAllChapterAssunto(); + List chapterAssuntoDtos = new ArrayList<>(); + for (ChapterAssunto chapterAssunto : chapterAssuntos) { + ChapterAssuntoDto chapterAssuntoDto = new ChapterAssuntoDto(); + buildDto(chapterAssunto, chapterAssuntoDto); + chapterAssuntoDto.setTotalComentarios(chapterAssunto.getComentarios().size()); + chapterAssuntoDtos.add(chapterAssuntoDto); + } + return ResponseEntity.ok().body(chapterAssuntoDtos); + } + + public void deleteChapterAssunto(Integer id) { + chapterAssuntoRepository.deleteById(id); + } + + + private void buildDto(ChapterAssunto chapterAssunto, ChapterAssuntoDto chapterAssuntoDto) { + chapterAssuntoDto.setId(chapterAssunto.getId()); + chapterAssuntoDto.setDataCadastro(chapterAssunto.getDataCadastro()); + chapterAssuntoDto.setTitulo(chapterAssunto.getTitulo()); + chapterAssuntoDto.setDescricao(chapterAssunto.getDescricao()); + chapterAssuntoDto.setImagem(chapterAssunto.getImagem()); + chapterAssuntoDto.setContadorVisualizacao(chapterAssunto.getContadorVisualizacao()); + chapterAssuntoDto.setStatus(chapterAssunto.getStatus()); + chapterAssuntoDto.setVerificacao(chapterAssunto.getVerificacao()); + chapterAssuntoDto.setChapterId(chapterAssunto.getChapter().getId()); + chapterAssuntoDto.setUsuario(chapterAssunto.getUsuario()); + chapterAssuntoDto.setChapterNome(chapterAssunto.getChapter().getNome()); + if (chapterAssunto.getUsuarioVerificacao() != null) { + chapterAssuntoDto.setUsuarioVerificacaoId(chapterAssunto.getUsuarioVerificacao().getId()); + } + chapterAssuntoDto.setTags(chapterAssunto.getTags()); + chapterAssuntoDto.setTotalComentarios(chapterAssunto.getComentarios().size()); + } } + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/java/br/com/aprendizagem/api/service/ChapterAssuntoTagService.java b/src/main/java/br/com/aprendizagem/api/service/ChapterAssuntoTagService.java deleted file mode 100644 index 4d6ec9e..0000000 --- a/src/main/java/br/com/aprendizagem/api/service/ChapterAssuntoTagService.java +++ /dev/null @@ -1,35 +0,0 @@ -package br.com.aprendizagem.api.service; - -import br.com.aprendizagem.api.entity.ChapterAssunto; -import br.com.aprendizagem.api.entity.ChapterAssuntoTag; -import br.com.aprendizagem.api.entity.ChapterTag; -import br.com.aprendizagem.api.repository.ChapterAssuntoTagRepository; -import lombok.AllArgsConstructor; -import org.springframework.http.ResponseEntity; -import org.springframework.stereotype.Service; - -import javax.transaction.Transactional; -import java.util.List; - -@Service -@AllArgsConstructor -public class ChapterAssuntoTagService { - private final ChapterAssuntoTagRepository chapterAssuntoTagRepository; - - public List getAllChapterAssuntoTag(){ - return chapterAssuntoTagRepository.findAll(); - } - - @Transactional - public ChapterAssuntoTag getChapterAssuntoTagById(Integer id){ - return chapterAssuntoTagRepository.findById(id).orElse(null); - } - - @Transactional - public ChapterAssuntoTag postChapterAssuntoTag(ChapterAssunto chapterAssunto, ChapterTag chapterTag){ - ChapterAssuntoTag chapterAssuntoTag = new ChapterAssuntoTag(null, chapterAssunto, chapterTag); - return chapterAssuntoTagRepository.save(chapterAssuntoTag); - } - - -} diff --git a/src/main/java/br/com/aprendizagem/api/service/ChapterService.java b/src/main/java/br/com/aprendizagem/api/service/ChapterService.java index 003c949..4799f70 100644 --- a/src/main/java/br/com/aprendizagem/api/service/ChapterService.java +++ b/src/main/java/br/com/aprendizagem/api/service/ChapterService.java @@ -3,12 +3,10 @@ import br.com.aprendizagem.api.entity.Chapter; import br.com.aprendizagem.api.repository.ChapterRepository; import lombok.AllArgsConstructor; -import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import javax.transaction.Transactional; import java.util.List; -import java.util.stream.Collectors; @Service @AllArgsConstructor @@ -16,12 +14,17 @@ public class ChapterService { private final ChapterRepository chapterRepository; @Transactional - public List getAllChapters() { - List chapters = chapterRepository.findAll(); - return getActiveChapters(chapters); + public List getActiveChapters() { + return chapterRepository.getActiveChapters(); } - public List getActiveChapters(List chapters){ - return chapters.stream().filter(c -> c.getStatus() == 1).collect(Collectors.toList()); + @Transactional + public Chapter getNoticiasChapter() { + return chapterRepository.getNoticiasChapter(); + } + + @Transactional + public Chapter postChapter(Chapter chapter) { + return chapterRepository.save(chapter); } -} +} \ No newline at end of file diff --git a/src/main/java/br/com/aprendizagem/api/service/ControleExecucaoService.java b/src/main/java/br/com/aprendizagem/api/service/ControleExecucaoService.java new file mode 100644 index 0000000..df8ed83 --- /dev/null +++ b/src/main/java/br/com/aprendizagem/api/service/ControleExecucaoService.java @@ -0,0 +1,20 @@ +package br.com.aprendizagem.api.service; + +import br.com.aprendizagem.api.entity.ControleExecucao; +import br.com.aprendizagem.api.repository.ControleExecucaoRepository; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; + +@Service +@AllArgsConstructor +public class ControleExecucaoService { + private final ControleExecucaoRepository controleExecucaoRepository; + + public Integer getPresencaByEncontroIdByEstudanteId(Long encontroId, Long estudanteId){ + ControleExecucao controleExecucao = controleExecucaoRepository.findByEncontroIdAndParticipante_Estudante_Id(encontroId, estudanteId); + if(controleExecucao == null) { + return 0; + } + return controleExecucao.getStatus(); + } +} diff --git a/src/main/java/br/com/aprendizagem/api/service/CurtidaService.java b/src/main/java/br/com/aprendizagem/api/service/CurtidaService.java new file mode 100644 index 0000000..2b5a8e8 --- /dev/null +++ b/src/main/java/br/com/aprendizagem/api/service/CurtidaService.java @@ -0,0 +1,38 @@ +package br.com.aprendizagem.api.service; + +import br.com.aprendizagem.api.entity.Curtida; +import br.com.aprendizagem.api.repository.CurtidaRepository; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; + +import javax.transaction.Transactional; +import java.util.List; + +@Service +@AllArgsConstructor +public class CurtidaService { + + private final CurtidaRepository curtidaRepository; + + @Transactional + public List getAllCurtidas() { + return curtidaRepository.findAll(); + } + + @Transactional + public Curtida getCurtidaById(Integer id) { + return curtidaRepository.findById(id).orElse(null); + } + + @Transactional + public List getCurtidasByComentarioId(Long comentarioId) { + return curtidaRepository.getCurtidasByComentarioId(comentarioId); + } + + @Transactional + public Curtida postCurtida(Curtida curtida) { + return curtidaRepository.save(curtida); + } + + +} diff --git a/src/main/java/br/com/aprendizagem/api/service/EncontroService.java b/src/main/java/br/com/aprendizagem/api/service/EncontroService.java index 1ac0c33..37a9f83 100644 --- a/src/main/java/br/com/aprendizagem/api/service/EncontroService.java +++ b/src/main/java/br/com/aprendizagem/api/service/EncontroService.java @@ -2,23 +2,22 @@ import br.com.aprendizagem.api.entity.Encontro; import br.com.aprendizagem.api.repository.EncontroRepository; -import br.com.aprendizagem.api.response.EncontroAlunoResponse; +import br.com.aprendizagem.api.response.EncontroEstudanteResponse; import br.com.aprendizagem.api.response.EncontroResponse; -import br.com.aprendizagem.api.response.EncontroSituacaoResponse; import lombok.AllArgsConstructor; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import javax.transaction.Transactional; -import java.util.List; -import java.util.Optional; +import java.util.*; @AllArgsConstructor @Service public class EncontroService { - public final EncontroRepository encontroRepository; + private final EncontroRepository encontroRepository; private final SituacaoAprendizagemService situacaoAprendizagemService; + private final ControleExecucaoService controleExecucaoService; @Transactional public ResponseEntity> getAllEncontros() { List encontros = encontroRepository.findAll(); @@ -38,8 +37,33 @@ public ResponseEntity> getEncontrosByGrupoId(Long id) { } @Transactional - public ResponseEntity> getEncontrosByGrupoIdByEstudanteId(Long grupoId, Long estudanteId) { - return ResponseEntity.notFound().build(); + public ResponseEntity> getEncontrosByGrupoIdByEstudanteId(Long grupoId, Long estudanteId) { + List encontros = encontroRepository.findByGrupoId(grupoId).orElse(null); + if(encontros == null){ + return ResponseEntity.notFound().build(); + } + List encontroEstudanteResponses = new ArrayList<>(); + for(Encontro encontro: encontros){ + Integer presenca = controleExecucaoService.getPresencaByEncontroIdByEstudanteId(encontro.getId(), estudanteId); + encontroEstudanteResponses.add(EncontroEstudanteResponse.of(encontro, presenca)); + } + return ResponseEntity.ok(encontroEstudanteResponses); + + } + + @Transactional + public Map getNumeroObjetosAtividadesByEncontroId(Long encontroId){ + Integer totalAtividades = encontroRepository.countAtividadeByEncontroId(encontroId); + Integer totalObjetos = encontroRepository.countObjetoAprendizagemByEncontroId(encontroId); + Map totalObjetosAtividades = new HashMap<>(); + totalObjetosAtividades.put("totalAtividades", totalAtividades); + totalObjetosAtividades.put("totalObjetos", totalObjetos); + return totalObjetosAtividades; + } + + @Transactional + public List getEncontrosListByGrupoId(Long grupoId){ + return encontroRepository.findByGrupoId(grupoId).orElse(null); } // @Transactional diff --git a/src/main/java/br/com/aprendizagem/api/service/GrupoService.java b/src/main/java/br/com/aprendizagem/api/service/GrupoService.java index e29f751..4d3fe39 100644 --- a/src/main/java/br/com/aprendizagem/api/service/GrupoService.java +++ b/src/main/java/br/com/aprendizagem/api/service/GrupoService.java @@ -51,7 +51,7 @@ public List getGruposByEstudanteId(Long estudante_id) { @Transactional public List getGruposByPeriodoAtivoByProfessorId(Long professorId) { - return filterActive(grupoRepository.getGruposByProfessorId(professorId)); + return filterActive(grupoRepository.getGruposByPeriodoAtivoByProfessorId(professorId)); } public List filterActive(List grupos) { diff --git a/src/main/java/br/com/aprendizagem/api/service/ObjetoAprendizagemService.java b/src/main/java/br/com/aprendizagem/api/service/ObjetoAprendizagemService.java index fe61ce4..9245b2f 100644 --- a/src/main/java/br/com/aprendizagem/api/service/ObjetoAprendizagemService.java +++ b/src/main/java/br/com/aprendizagem/api/service/ObjetoAprendizagemService.java @@ -1,6 +1,8 @@ package br.com.aprendizagem.api.service; import br.com.aprendizagem.api.entity.ObjetoAprendizagem; +import br.com.aprendizagem.api.entity.Recurso; +import br.com.aprendizagem.api.entity.Usuario; import br.com.aprendizagem.api.repository.ObjetoAprendizagemRepository; import lombok.AllArgsConstructor; import org.springframework.http.ResponseEntity; @@ -16,7 +18,7 @@ public class ObjetoAprendizagemService { @Transactional public ResponseEntity> getAllObjetosAprendizagem() { - List objetos = objetoAprendizagemRepository.findAll(); + List objetos = objetoAprendizagemRepository.findAllWithRecursos(); if (objetos.isEmpty()){ return ResponseEntity.notFound().build(); } @@ -27,4 +29,21 @@ public ResponseEntity> getAllObjetosAprendizagem() { public ObjetoAprendizagem getArquivoObjetoById(Long id) { return objetoAprendizagemRepository.findById(id).orElse(null); } + + @Transactional + public ObjetoAprendizagem getObjetoAprendizagemById(Long objetoAprendizagemId) { + return objetoAprendizagemRepository.findById(objetoAprendizagemId).orElse(null); + } + @Transactional + public ResponseEntity getObjetoWithRecursosByObjetoId(Long objetoId) { + ObjetoAprendizagem objetoAprendizagem = objetoAprendizagemRepository.findByIdWithRecursos(objetoId); + if (objetoAprendizagem != null) { + return ResponseEntity.ok(objetoAprendizagem); + } + return ResponseEntity.notFound().build(); + } + @Transactional + public ResponseEntity createObjeto(ObjetoAprendizagem objeto) { + return ResponseEntity.ok(objetoAprendizagemRepository.save(objeto)); + } } diff --git a/src/main/java/br/com/aprendizagem/api/service/ParticipanteService.java b/src/main/java/br/com/aprendizagem/api/service/ParticipanteService.java index a2df83a..9df60f9 100644 --- a/src/main/java/br/com/aprendizagem/api/service/ParticipanteService.java +++ b/src/main/java/br/com/aprendizagem/api/service/ParticipanteService.java @@ -2,6 +2,8 @@ import br.com.aprendizagem.api.entity.Participante; import br.com.aprendizagem.api.repository.ParticipanteRepository; +import br.com.aprendizagem.api.response.ParticipanteResponse; +import io.swagger.models.Response; import lombok.AllArgsConstructor; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; @@ -24,8 +26,37 @@ public ResponseEntity> getAllParticipantes(){ return ResponseEntity.ok(participantes); } + @Transactional + public Participante getParticipanteById(Long participanteId) { + return participanteRepository.findById(participanteId).orElse(null); + } + @Transactional public List getParcipantesByEstudanteId(Long estudanteId){ return participanteRepository.findByEstudanteId(estudanteId); } + + @Transactional + public Long getParcipanteIdByGrupoIdByEstudanteId(Long grupoId, Long estudanteId){ + Participante participante = participanteRepository.findByGrupo_IdAndEstudante_Id(grupoId, estudanteId); + if( participante != null ){ + return participante.getId(); + } + return null; + } + + @Transactional + public ResponseEntity> getParticipantesByGrupoId(Long grupoId) { + List participantes = participanteRepository.findByGrupo_Id(grupoId); + if (participantes.isEmpty()){ + return ResponseEntity.notFound().build(); + } + return ResponseEntity.ok(ParticipanteResponse.of(participantes)); + } + + @Transactional + public ResponseEntity getParticipanteByEstudanteIdByGrupoId(Long estudanteId, Long grupoId) { + Participante participante = participanteRepository.findByGrupo_IdAndEstudante_Id(grupoId,estudanteId); + return ResponseEntity.ok(ParticipanteResponse.of(participante)); + } } diff --git a/src/main/java/br/com/aprendizagem/api/service/PlanejamentoUcService.java b/src/main/java/br/com/aprendizagem/api/service/PlanejamentoUcService.java new file mode 100644 index 0000000..918bfda --- /dev/null +++ b/src/main/java/br/com/aprendizagem/api/service/PlanejamentoUcService.java @@ -0,0 +1,12 @@ +package br.com.aprendizagem.api.service; + +import br.com.aprendizagem.api.entity.PlanejamentoUc; +import br.com.aprendizagem.api.repository.PlanejamentoUcRepository; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; + +@Service +@AllArgsConstructor +public class PlanejamentoUcService { + private final PlanejamentoUcRepository planejamentoUcRepository; +} diff --git a/src/main/java/br/com/aprendizagem/api/service/ProfessorService.java b/src/main/java/br/com/aprendizagem/api/service/ProfessorService.java index ff6a626..0952327 100644 --- a/src/main/java/br/com/aprendizagem/api/service/ProfessorService.java +++ b/src/main/java/br/com/aprendizagem/api/service/ProfessorService.java @@ -3,10 +3,12 @@ import br.com.aprendizagem.api.entity.Professor; import br.com.aprendizagem.api.repository.ProfessorRepository; import lombok.AllArgsConstructor; +import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import javax.transaction.Transactional; import java.util.List; +import java.util.Optional; @Service @AllArgsConstructor @@ -17,4 +19,13 @@ public class ProfessorService { public List getProfessoresAtivos(){ return professorRepository.findAll(); } + + @Transactional + public ResponseEntity getProfessorByUsuarioId(String usuarioId) { + Professor professor = professorRepository.findByUsuarioId(usuarioId); + if (professor == null) { + return ResponseEntity.notFound().build(); + } + return ResponseEntity.ok(professor); + } } diff --git a/src/main/java/br/com/aprendizagem/api/service/RecursoService.java b/src/main/java/br/com/aprendizagem/api/service/RecursoService.java index 3a25b1c..689cd55 100644 --- a/src/main/java/br/com/aprendizagem/api/service/RecursoService.java +++ b/src/main/java/br/com/aprendizagem/api/service/RecursoService.java @@ -31,12 +31,10 @@ public ResponseEntity> getAllRecursos() { } return ResponseEntity.ok(RecursoResponse.of(recursos)); } - @Transactional public Recurso getArquivoRecursoById(Long id) { return recursoRepository.findById(id).orElse(null); } - @Transactional public ResponseEntity getRecursoById(Long id) { Recurso recurso = recursoRepository.findById(id).orElse(null); @@ -44,7 +42,6 @@ public ResponseEntity getRecursoById(Long id) { return ResponseEntity.ok(recurso); return ResponseEntity.notFound().build(); } - @Transactional public ResponseEntity> getActiveRecursos() { List recursos = recursoRepository.getActiveRecursos(); @@ -53,7 +50,6 @@ public ResponseEntity> getActiveRecursos() { } return ResponseEntity.ok(RecursoResponse.of(recursos)); } - @Transactional public ResponseEntity> getActiveRecursosSemArquivo() { List recursos = recursoRepository.getActiveRecursosSemArquivo(); @@ -64,7 +60,6 @@ public ResponseEntity> getActiveRecursosSemArquivo() { return ResponseEntity.ok(recursos); } - @Transactional public ResponseEntity> getActiveRecursosByUsuarioIdSemArquivo(String usuarioId) { @@ -74,7 +69,6 @@ public ResponseEntity> getActiveRecursosByUsuarioIdSemArqu } return ResponseEntity.ok(recursos); } - @Transactional public ResponseEntity> getPublicRecursosSemArquivo() { List recursos = recursoRepository.getPublicRecursosSemArquivo(); @@ -85,7 +79,6 @@ public ResponseEntity> getPublicRecursosSemArquivo() { return ResponseEntity.ok(recursos); } - @Transactional public ResponseEntity atualizarRecursoStatus(Long id, Integer status) { Optional optionalRecurso = recursoRepository.findById(id); @@ -99,7 +92,6 @@ public ResponseEntity atualizarRecursoStatus(Long id, Integer s return ResponseEntity.notFound().build(); } } - @Transactional public ResponseEntity updateRecursoNomeById(Long id, String nomeAtualizado) { Optional optionalRecurso = recursoRepository.findById(id); @@ -113,7 +105,6 @@ public ResponseEntity updateRecursoNomeById(Long id, String nomeAtualiz return ResponseEntity.notFound().build(); } } - @Transactional public ResponseEntity createRecurso(RecursoRequest recursoRequest) { Recurso recurso = new Recurso(); diff --git a/src/main/java/br/com/aprendizagem/api/service/SituacaoAprendizagemService.java b/src/main/java/br/com/aprendizagem/api/service/SituacaoAprendizagemService.java index 1273543..458aa14 100644 --- a/src/main/java/br/com/aprendizagem/api/service/SituacaoAprendizagemService.java +++ b/src/main/java/br/com/aprendizagem/api/service/SituacaoAprendizagemService.java @@ -1,16 +1,18 @@ package br.com.aprendizagem.api.service; -import br.com.aprendizagem.api.entity.SituacaoAprendizagem; -import br.com.aprendizagem.api.entity.SituacaoEncontro; -import br.com.aprendizagem.api.repository.SituacaoAprendizagemRepository; -import br.com.aprendizagem.api.repository.SituacaoEncontroRepository; +import br.com.aprendizagem.api.entity.*; +import br.com.aprendizagem.api.repository.*; +import br.com.aprendizagem.api.request.SituacaoAprendizagemRequest; import br.com.aprendizagem.api.response.SituacaoAprendizagemResponse; import lombok.AllArgsConstructor; +import org.springframework.beans.BeanUtils; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import javax.transaction.Transactional; +import java.time.ZoneId; import java.util.ArrayList; +import java.util.Date; import java.util.List; import java.util.Optional; @@ -19,6 +21,9 @@ public class SituacaoAprendizagemService { private final SituacaoAprendizagemRepository situacaoAprendizagemRepository; private final SituacaoEncontroService situacaoEncontroService; + private final PlanejamentoUcRepository planejamentoUcRepository; + private final GrauDificuldadeRepository grauDificuldadeRepository; + private final BadgeRepository badgeRepository; @Transactional public ResponseEntity> getAllSituacoesAprendizagem() { @@ -42,4 +47,42 @@ public ResponseEntity getSituacaoAprendizagemById( public ResponseEntity> getSituacoesAprendizagemByEncontroId(Long encontroId) { return situacaoEncontroService.getSituacoesAprendizagemByEncontroId(encontroId); } + + @Transactional + public ResponseEntity> getSituacoesAprendizagemByPlanejamentoUcId(Long planejamentoUcId) { + List situacoes = situacaoAprendizagemRepository.findByPlanejamentoUc_Id(planejamentoUcId); + if(situacoes.isEmpty()){ + return ResponseEntity.noContent().build(); + } + return ResponseEntity.ok(SituacaoAprendizagemResponse.of(situacoes)); + } + + @Transactional + public ResponseEntity createSituacaoAprendizagem(SituacaoAprendizagemRequest situacaoRequest) { + SituacaoAprendizagem novaSituacao = new SituacaoAprendizagem(); + novaSituacao.setTitulo(situacaoRequest.getTitulo()); + novaSituacao.setDescricao(situacaoRequest.getDescricao()); + novaSituacao.setOrdem(situacaoRequest.getOrdem()); + novaSituacao.setDuracao(situacaoRequest.getDuracao()); + novaSituacao.setStatus(1); + novaSituacao.setInicio(new Date().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime()); + novaSituacao.setFim(new Date().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime()); + PlanejamentoUc planejamentoUc = planejamentoUcRepository.findById(situacaoRequest.getPlanejamentoUcId()).orElse(null); + novaSituacao.setPlanejamentoUc(planejamentoUc); + GrauDificuldade grauDificuldade = grauDificuldadeRepository.findById(situacaoRequest.getGrauDificuldadeId()).orElse(null); + novaSituacao.setGrauDificuldade(grauDificuldade); + Badge badge = badgeRepository.findById(situacaoRequest.getBadgeId()).orElse(null); + novaSituacao.setBadge(badge); + + return ResponseEntity.ok(situacaoAprendizagemRepository.save(novaSituacao)); + } +@Transactional + public ResponseEntity updateSituacaoAprendizagem(Long id, SituacaoAprendizagem situacaoAprendizagem) { + SituacaoAprendizagem situacaoAprendizagemExistente = situacaoAprendizagemRepository.findById(id).orElse(null); + if(situacaoAprendizagemExistente != null) { + BeanUtils.copyProperties(situacaoAprendizagem, situacaoAprendizagemExistente); + return ResponseEntity.ok(situacaoAprendizagemRepository.save(situacaoAprendizagem)); + } + return ResponseEntity.notFound().build(); + } } diff --git a/src/main/java/br/com/aprendizagem/api/service/UsuarioService.java b/src/main/java/br/com/aprendizagem/api/service/UsuarioService.java index de2eb06..af954e0 100644 --- a/src/main/java/br/com/aprendizagem/api/service/UsuarioService.java +++ b/src/main/java/br/com/aprendizagem/api/service/UsuarioService.java @@ -36,6 +36,12 @@ public ResponseEntity buscarUsuarioPorId(String id) { return ResponseEntity.ok(UsuarioResponse.of(usuarioOpt.get())); } + @Transactional + public Usuario getUsuarioById(String id) { + return usuarioRepository.findById(id).orElse(null); + + } + @Transactional public ResponseEntity> listarUsuarios() { List usuarios = usuarioRepository.findAll(); diff --git a/src/main/resources/META-INF/MANIFEST.MF b/src/main/resources/META-INF/MANIFEST.MF new file mode 100644 index 0000000..fe6ba4e --- /dev/null +++ b/src/main/resources/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Main-Class: br.com.aprendizagem.api.ApiApplication + diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 5fa0ffe..4ad5c68 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -5,7 +5,7 @@ auth0: spring: datasource: password: adsads - url: jdbc:mysql://jira.senacrio.com.br:3306/bdacompanhamento?useTimezone=true&serverTimezone=America/Sao_Paulo + url: jdbc:mysql://jiraedu.rj.senac.br:3306/bdacompanhamento?useTimezone=true&serverTimezone=America/Sao_Paulo username: ads jpa: hibernate: diff --git a/src/test/java/br/com/empresa/api/ApiApplicationTests.java b/src/test/java/br/com/aprendizagem/api/ApiApplicationTests.java similarity index 84% rename from src/test/java/br/com/empresa/api/ApiApplicationTests.java rename to src/test/java/br/com/aprendizagem/api/ApiApplicationTests.java index 71ba98e..1994ecd 100644 --- a/src/test/java/br/com/empresa/api/ApiApplicationTests.java +++ b/src/test/java/br/com/aprendizagem/api/ApiApplicationTests.java @@ -1,4 +1,4 @@ -package br.com.empresa.api; +package br.com.aprendizagem.api; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest;