76 lines
3.3 KiB
Java
76 lines
3.3 KiB
Java
package com.agendaestudantil.controlador;
|
|
|
|
import com.agendaestudantil.dto.RespostaApi;
|
|
import com.agendaestudantil.dto.RequisicaoAtualizacaoEstudanteDTO;
|
|
import com.agendaestudantil.dto.RequisicaoCadastroDTO;
|
|
import com.agendaestudantil.dto.RespostaDadosCompletoDTO;
|
|
import com.agendaestudantil.dto.RespostaEstudanteDTO;
|
|
import com.agendaestudantil.dto.RequisicaoLoginDTO;
|
|
import com.agendaestudantil.dto.RespostaLoginDTO;
|
|
import com.agendaestudantil.dto.RequisicaoTrocaSenhaDTO;
|
|
import com.agendaestudantil.servico.EstudanteServico;
|
|
import jakarta.validation.Valid;
|
|
import org.springframework.http.HttpStatus;
|
|
import org.springframework.http.ResponseEntity;
|
|
import org.springframework.security.core.annotation.AuthenticationPrincipal;
|
|
import org.springframework.security.core.userdetails.UserDetails;
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
@RestController
|
|
@RequestMapping("/api/estudantes")
|
|
public class EstudanteControlador {
|
|
|
|
private final EstudanteServico estudanteServico;
|
|
|
|
public EstudanteControlador(EstudanteServico estudanteServico) {
|
|
this.estudanteServico = estudanteServico;
|
|
}
|
|
|
|
@PostMapping("/cadastro")
|
|
public ResponseEntity<RespostaApi<RespostaEstudanteDTO>> cadastrar(@Valid @RequestBody RequisicaoCadastroDTO dto) {
|
|
RespostaEstudanteDTO resposta = estudanteServico.cadastrar(dto);
|
|
return ResponseEntity.status(HttpStatus.CREATED).body(RespostaApi.sucesso(resposta));
|
|
}
|
|
|
|
@PostMapping("/login")
|
|
public ResponseEntity<RespostaApi<RespostaLoginDTO>> login(@Valid @RequestBody RequisicaoLoginDTO dto) {
|
|
RespostaLoginDTO resposta = estudanteServico.login(dto);
|
|
return ResponseEntity.ok(RespostaApi.sucesso(resposta));
|
|
}
|
|
|
|
@GetMapping("/me")
|
|
public ResponseEntity<RespostaApi<RespostaEstudanteDTO>> me(@AuthenticationPrincipal UserDetails userDetails) {
|
|
RespostaEstudanteDTO resposta = estudanteServico.buscarPorId(userDetails.getUsername());
|
|
return ResponseEntity.ok(RespostaApi.sucesso(resposta));
|
|
}
|
|
|
|
@GetMapping("/me/dados")
|
|
public ResponseEntity<RespostaApi<RespostaDadosCompletoDTO>> exportarDados(
|
|
@AuthenticationPrincipal UserDetails userDetails) {
|
|
RespostaDadosCompletoDTO dados = estudanteServico.exportarDados(userDetails.getUsername());
|
|
return ResponseEntity.ok(RespostaApi.sucesso(dados));
|
|
}
|
|
|
|
@PutMapping("/me")
|
|
public ResponseEntity<RespostaApi<RespostaEstudanteDTO>> atualizar(
|
|
@AuthenticationPrincipal UserDetails userDetails,
|
|
@Valid @RequestBody RequisicaoAtualizacaoEstudanteDTO dto) {
|
|
RespostaEstudanteDTO resposta = estudanteServico.atualizar(userDetails.getUsername(), dto);
|
|
return ResponseEntity.ok(RespostaApi.sucesso(resposta));
|
|
}
|
|
|
|
@PutMapping("/senha")
|
|
public ResponseEntity<RespostaApi<Void>> trocarSenha(
|
|
@AuthenticationPrincipal UserDetails userDetails,
|
|
@Valid @RequestBody RequisicaoTrocaSenhaDTO dto) {
|
|
estudanteServico.trocarSenha(userDetails.getUsername(), dto);
|
|
return ResponseEntity.ok(RespostaApi.sucesso(null));
|
|
}
|
|
|
|
@DeleteMapping("/me")
|
|
public ResponseEntity<RespostaApi<Void>> excluirConta(@AuthenticationPrincipal UserDetails userDetails) {
|
|
estudanteServico.excluirConta(userDetails.getUsername());
|
|
return ResponseEntity.ok(RespostaApi.sucesso(null));
|
|
}
|
|
}
|