package com.agendaestudantil.controlador; import com.agendaestudantil.dto.RequisicaoDisciplinaDTO; import com.agendaestudantil.dto.RespostaApi; import com.agendaestudantil.dto.RespostaDisciplinaDTO; import com.agendaestudantil.entidade.Disciplina; import com.agendaestudantil.servico.DisciplinaServico; import jakarta.validation.Valid; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import java.util.List; @RestController @RequestMapping("/api/disciplinas") public class DisciplinaControlador { private final DisciplinaServico disciplinaServico; public DisciplinaControlador(DisciplinaServico disciplinaServico) { this.disciplinaServico = disciplinaServico; } @PostMapping public ResponseEntity> criarDisciplina( @Valid @RequestBody RequisicaoDisciplinaDTO dto) { Disciplina disciplina = new Disciplina(); disciplina.setNome(dto.nome()); disciplina.setProfessor(dto.professor()); disciplina.setSala(dto.sala()); disciplina.setCor(dto.cor()); RespostaDisciplinaDTO resposta = disciplinaServico.criarDisciplina(disciplina, dto.estudanteId()); return ResponseEntity.status(HttpStatus.CREATED).body(RespostaApi.sucesso(resposta)); } @GetMapping("/estudante/{estudanteId}") public ResponseEntity>> listarPorEstudante( @PathVariable String estudanteId) { List disciplinas = disciplinaServico.listarPorEstudante(estudanteId); return ResponseEntity.ok(RespostaApi.sucesso(disciplinas)); } @GetMapping("/{id}") public ResponseEntity> buscarPorId( @PathVariable String id, @RequestParam String estudanteId) { RespostaDisciplinaDTO disciplina = disciplinaServico.buscarPorId(id, estudanteId); return ResponseEntity.ok(RespostaApi.sucesso(disciplina)); } @PutMapping("/{id}") public ResponseEntity> atualizarDisciplina( @PathVariable String id, @Valid @RequestBody RequisicaoDisciplinaDTO dto) { Disciplina disciplina = new Disciplina(); disciplina.setNome(dto.nome()); disciplina.setProfessor(dto.professor()); disciplina.setSala(dto.sala()); disciplina.setCor(dto.cor()); RespostaDisciplinaDTO resposta = disciplinaServico.atualizarDisciplina(id, disciplina, dto.estudanteId()); return ResponseEntity.ok(RespostaApi.sucesso(resposta)); } @DeleteMapping("/{id}") public ResponseEntity> excluirDisciplina( @PathVariable String id, @RequestParam String estudanteId) { disciplinaServico.excluirDisciplina(id, estudanteId); return ResponseEntity.status(HttpStatus.NO_CONTENT).body(RespostaApi.sucesso(null)); } }