Implementación de Endpoints REST en Spring Boot para Usuarios y Reservas

Informática4,98 KB

Actualización de Usuarios

PUT /api/usuarios/{username}

  • REPO: UsuarioRepository extends JpaRepository<Usuario, String>
  • SERVICE: Usuario modificarUsuario(String username, UsuarioDto dto);
  • IMPL: Usuario u = usuarioRepository.findById(username).orElse(null); | if(u == null) return null; | u.setEmail(dto.getEmail()); | u.setNombre(dto.getNombre()); | u.setApellidos(dto.getApellidos()); | u.setDireccion(dto.getDireccion()); | return usuarioRepository.save(u);
  • CONTROLLER: @PutMapping("/{username}") | public ResponseEntity<?> modificar(@PathVariable String username, @RequestBody UsuarioDto dto) { | Usuario u = usuarioService.modificarUsuario(username, dto); | if(u == null) return ResponseEntity.status(404).body("No existe"); | return ResponseEntity.ok(UsuarioDto.convertirADto(u)); | }
  • DTO: String username, String email, String nombre, String apellidos, String direccion
  • JSON: {"email": "[email protected]", "nombre": "Ana", "apellidos": "Lopez", "direccion": "Calle Mayor"}
  • HTTP: 200 OK, 404 NOT FOUND

Creación de Reservas

POST /api/clientes/reservas

  • REPO: ReservaRepository extends JpaRepository<Reserva, Long> | EventoRepository extends JpaRepository<Evento, Long> | UsuarioRepository extends JpaRepository<Usuario, String>
  • SERVICE: Reserva crearReserva(String username, Long idEvento, Integer cantidad);
  • IMPL: Evento ev = eventoRepository.findById(idEvento).orElse(null); | if(ev == null) return null; | if(!"ACTIVO".equals(ev.getEstadoEvento())) return null; | if(cantidad > 10) return null; | if(ev.getAforoMaximo() < cantidad) return null; | Usuario u = usuarioRepository.findById(username).orElse(null); | if(u == null) return null; | Reserva r = new Reserva(); | r.setEvento(ev); | r.setUsuario(u); | r.setCantidad(cantidad); | r.setPrecioVenta(ev.getPrecio() * cantidad); | return reservaRepository.save(r);
  • CONTROLLER: @PostMapping | public ResponseEntity<?> crear(@RequestBody ReservaDto dto, Authentication auth) { | String username = auth.getName(); | Reserva r = reservaService.crearReserva(username, dto.getIdEvento(), dto.getCantidad()); | if(r == null) return ResponseEntity.status(409).body("No se pudo crear"); | return ResponseEntity.status(201).body(ReservaDto.convertirADto(r)); | }
  • DTO: Long idReserva, Integer cantidad, Double precioVenta, String observaciones, String username, Long idEvento, String nombreEvento
  • JSON: {"cantidad": 3, "observaciones": "VIP", "evento": {"idEvento": 5}}
  • HTTP: 201 CREATED, 400 BAD REQUEST, 404 NOT FOUND, 409 CONFLICT

Consulta de Eventos por Estado

GET /api/eventos/estado/{estado}

  • REPO: EventoRepository extends JpaRepository<Evento, Long> | List<Evento> findByEstadoEvento(String estado);
  • SERVICE: List<Evento> findByEstado(String estado);
  • IMPL: return eventoRepository.findByEstadoEvento(estado);
  • CONTROLLER: @GetMapping("/estado/{estado}") | public ResponseEntity<List<EventoDto>> porEstado(@PathVariable String estado) { | List<Evento> lista = eventoService.findByEstado(estado); | return ResponseEntity.ok(lista.stream().map(EventoDto::convertirADto).toList()); | }
  • DTO: Long idEvento, String nombre, LocalDate fechaInicio, Double precio, String estadoEvento, String nombreTipo
  • JSON: [{"idEvento": 1, "nombre": "Concierto", "fechaInicio": "2026-06-15", "precio": 25.0, "estadoEvento": "ACTIVO", "nombreTipo": "Música"}]
  • HTTP: 200 OK

Descargar

PDF Word HTML