Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ plugins {

group = 'pe.edu.utp'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '21' // Actualizado a Java 21
sourceCompatibility = '21'

configurations {
compileOnly {
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/pe/edu/utp/ArticulosapiApplication.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
@EnableJpaAuditing
public class ArticulosapiApplication {

public static void main(String[] args) {
SpringApplication.run(ArticulosapiApplication.class, args);
}
public static void main(String[] args) {
SpringApplication.run(ArticulosapiApplication.class, args);
}
}
47 changes: 28 additions & 19 deletions src/main/java/pe/edu/utp/controller/ArticuloController.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,11 @@
import java.util.List;
import java.util.Map;

import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
Expand All @@ -18,9 +20,6 @@
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import pe.edu.utp.dto.ArticuloDto;
import pe.edu.utp.dto.ArticuloResponseDto;
import pe.edu.utp.entity.Articulo;
Expand All @@ -38,20 +37,26 @@ public class ArticuloController {

@GetMapping
public ResponseEntity<ApiResponse<List<ArticuloResponseDto>>> getAll(

@RequestParam(value = "marca", required = false) String marca,
@RequestParam(value = "categoria", required = false) String categoria,
@RequestParam(value = "precioMin", required = false) Double precioMin,
@RequestParam(value = "precioMax", required = false) Double precioMax,
@RequestParam(value = "offset", required = false, defaultValue = "0") int pageNumber,
@RequestParam(value = "limit", required = false, defaultValue = "5") int pageSize) {

@RequestParam(value = "marca", required = false) String marca,
@RequestParam(value = "categoria", required = false) String categoria,
@RequestParam(value = "precioMin", required = false) Double precioMin,
@RequestParam(value = "precioMax", required = false) Double precioMax,
@RequestParam(value = "offset", required = false, defaultValue = "0") int pageNumber,
@RequestParam(value = "limit", required = false, defaultValue = "5") int pageSize
) {
Pageable pageable = PageRequest.of(pageNumber, pageSize);
List<ArticuloResponseDto> articulos;
if (marca !=null || categoria != null || precioMin != null || precioMax != null) {
articulos = articuloService.findByCategoriaAndMarcaAndPrecio(categoria, marca, precioMin, precioMax, pageable);
if (marca != null || categoria != null || precioMin != null || precioMax != null) {
articulos =
articuloService.findByCategoriaAndMarcaAndPrecio(
categoria,
marca,
precioMin,
precioMax,
pageable
);
} else {
articulos = articuloService.findAll(pageable);
articulos = articuloService.findAll(pageable);
}
return ApiResponse.ok(articulos).toResponseEntity();
}
Expand All @@ -71,21 +76,25 @@ public ResponseEntity<ApiResponse<Articulo>> create(@Valid @RequestBody Articulo

@PutMapping(value = "/{id}")
public ResponseEntity<Articulo> update(
@PathVariable("id") Integer id, @Valid @RequestBody ArticuloDto articuloDto) {
@PathVariable("id") Integer id,
@Valid @RequestBody ArticuloDto articuloDto
) {
Articulo articuloUpdate = articuloService.update(articuloDto, id);
return ResponseEntity.ok(articuloUpdate);
}

@PatchMapping(value = "/{id}")
public ResponseEntity<ApiResponse<Articulo>> partialUpdate(@PathVariable("id") Integer id, @RequestBody Map<String, Object> fields) {
public ResponseEntity<ApiResponse<Articulo>> partialUpdate(
@PathVariable("id") Integer id,
@RequestBody Map<String, Object> fields
) {
var articuloUpdate = articuloService.partialUpdate(id, fields);
return ApiResponse.ok(articuloUpdate).toResponseEntity();
}


@DeleteMapping(value = "/{id}")
public ResponseEntity<ArticuloDto> delete(@PathVariable("id") Integer id)
throws NoDataFoundException {
throws NoDataFoundException {
articuloService.delete(id);
return ResponseEntity.ok(null);
}
Expand Down
48 changes: 26 additions & 22 deletions src/main/java/pe/edu/utp/controller/UsuarioController.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

import java.util.List;

import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
Expand All @@ -15,7 +15,6 @@
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import lombok.RequiredArgsConstructor;
import pe.edu.utp.converter.UsuarioConverter;
import pe.edu.utp.dto.LoginRequestDto;
import pe.edu.utp.dto.LoginResponseDto;
Expand All @@ -32,45 +31,50 @@ public class UsuarioController {
private final UsuarioService usuarioService;
private final UsuarioConverter converter;


@GetMapping("/usuarios")
public ResponseEntity<ApiResponse<List<UsuarioResponseDto>>> findAll(
@RequestParam(value = "email", required = false) String email,
@RequestParam(value = "offset", required = false, defaultValue = "0") int pageNumber,
@RequestParam(value = "limit", required = false, defaultValue = "10") int pageSize) throws Exception {

Pageable pagina = PageRequest.of(pageNumber, pageSize);
List<Usuario> registros = usuarioService.findAll(pagina);
List<UsuarioResponseDto> registrosDTO = converter.fromEntity(registros);
return ApiResponse.ok("Users retrieved successfully", registrosDTO).toResponseEntity();
}
@GetMapping("/usuarios")
public ResponseEntity<ApiResponse<List<UsuarioResponseDto>>> findAll(
@RequestParam(value = "email", required = false) String email,
@RequestParam(value = "offset", required = false, defaultValue = "0") int pageNumber,
@RequestParam(value = "limit", required = false, defaultValue = "10") int pageSize
) throws Exception {
Pageable pagina = PageRequest.of(pageNumber, pageSize);
List<Usuario> registros = usuarioService.findAll(pagina);
List<UsuarioResponseDto> registrosDTO = converter.fromEntity(registros);
return ApiResponse.ok("Users retrieved successfully", registrosDTO).toResponseEntity();
}

@PostMapping("/usuarios-register")
public ResponseEntity<ApiResponse<UsuarioResponseDto>> create(@RequestBody UsuarioRequestDto usuario) {
public ResponseEntity<ApiResponse<UsuarioResponseDto>> create(
@RequestBody UsuarioRequestDto usuario
) {
Usuario registro = usuarioService.save(usuario);
return ApiResponse.created("User created successfully", converter.fromEntity(registro)).toResponseEntity();
return ApiResponse
.created("User created successfully", converter.fromEntity(registro))
.toResponseEntity();
}

@PutMapping(value = "/usuarios/{id}")
public ResponseEntity<ApiResponse<UsuarioResponseDto>> update(
@PathVariable("id") int id, @RequestBody UsuarioRequestDto usuario) {
@PathVariable("id") int id,
@RequestBody UsuarioRequestDto usuario
) {
Usuario registro = usuarioService.update(usuario, id);
if (registro == null) {
return ResponseEntity.notFound().build();
}
return ApiResponse.ok("User updated successfully", converter.fromEntity(registro)).toResponseEntity();
return ApiResponse
.ok("User updated successfully", converter.fromEntity(registro))
.toResponseEntity();
}

@DeleteMapping(value = "/usuarios/{id}")
public ResponseEntity<ApiResponse<Void>> delete(@PathVariable("id") int id) {
usuarioService.delete(id);
return ApiResponse.noContent().toResponseEntity();
return ApiResponse.noContent().toResponseEntity();
}


@PostMapping(value = "/usuarios/login")
public ResponseEntity<ApiResponse<LoginResponseDto>> login(
@RequestBody LoginRequestDto request) {
public ResponseEntity<ApiResponse<LoginResponseDto>> login(@RequestBody LoginRequestDto request) {
LoginResponseDto response = usuarioService.login(request);
return ApiResponse.ok("Login successfully", response).toResponseEntity();
}
Expand Down
32 changes: 17 additions & 15 deletions src/main/java/pe/edu/utp/converter/ArticuloConverter.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package pe.edu.utp.converter;

import org.springframework.stereotype.Component;

import pe.edu.utp.dto.ArticuloDto;
import pe.edu.utp.entity.Articulo;

Expand All @@ -9,17 +10,17 @@ public class ArticuloConverter extends AbstractConverter<Articulo, ArticuloDto>

@Override
public ArticuloDto fromEntity(Articulo entity) {

if (entity == null) {
return null;
} else {
return ArticuloDto.builder()
.nombre(entity.getNombre())
.precio(entity.getPrecio())
.marca(entity.getMarca())
.categoria(entity.getCategoria())
.stock(entity.getStock())
.build();
return ArticuloDto
.builder()
.nombre(entity.getNombre())
.precio(entity.getPrecio())
.marca(entity.getMarca())
.categoria(entity.getCategoria())
.stock(entity.getStock())
.build();
}
}

Expand All @@ -28,13 +29,14 @@ public Articulo fromDto(ArticuloDto dto) {
if (dto == null) {
return null;
} else {
return Articulo.builder()
.nombre(dto.getNombre())
.precio(dto.getPrecio())
.marca(dto.getMarca())
.categoria(dto.getCategoria())
.stock(dto.getStock())
.build();
return Articulo
.builder()
.nombre(dto.getNombre())
.precio(dto.getPrecio())
.marca(dto.getMarca())
.categoria(dto.getCategoria())
.stock(dto.getStock())
.build();
}
}
}
35 changes: 18 additions & 17 deletions src/main/java/pe/edu/utp/converter/ArticuloResponseConverter.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,15 @@ public ArticuloResponseDto fromEntity(Articulo entity) {
if (entity == null) {
return null;
} else {
return ArticuloResponseDto.builder()
.id(entity.getId())
.nombre(entity.getNombre())
.precio(entity.getPrecio())
.marca(entity.getMarca())
.categoria(entity.getCategoria())
.stock(entity.getStock())
.build();
return ArticuloResponseDto
.builder()
.id(entity.getId())
.nombre(entity.getNombre())
.precio(entity.getPrecio())
.marca(entity.getMarca())
.categoria(entity.getCategoria())
.stock(entity.getStock())
.build();
}
}

Expand All @@ -29,15 +30,15 @@ public Articulo fromDto(ArticuloResponseDto dto) {
if (dto == null) {
return null;
} else {
return Articulo.builder()
.id(dto.getId())
.nombre(dto.getNombre())
.precio(dto.getPrecio())
.marca(dto.getMarca())
.categoria(dto.getCategoria())
.stock(dto.getStock())
.build();
return Articulo
.builder()
.id(dto.getId())
.nombre(dto.getNombre())
.precio(dto.getPrecio())
.marca(dto.getMarca())
.categoria(dto.getCategoria())
.stock(dto.getStock())
.build();
}
}

}
28 changes: 15 additions & 13 deletions src/main/java/pe/edu/utp/converter/UsuarioConverter.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package pe.edu.utp.converter;

import org.springframework.stereotype.Component;

import pe.edu.utp.dto.UsuarioResponseDto;
import pe.edu.utp.entity.Rol;
import pe.edu.utp.entity.Usuario;
Expand All @@ -12,12 +13,13 @@ public class UsuarioConverter extends AbstractConverter<Usuario, UsuarioResponse
public UsuarioResponseDto fromEntity(Usuario entity) {
if (entity == null) return null;

return UsuarioResponseDto.builder()
.id(entity.getId())
.email(entity.getEmail())
.activo(entity.isActivo())
.rol(entity.getRol().name())
.build();
return UsuarioResponseDto
.builder()
.id(entity.getId())
.email(entity.getEmail())
.activo(entity.isActivo())
.rol(entity.getRol().name())
.build();
}

@Override
Expand All @@ -26,13 +28,13 @@ public Usuario fromDto(UsuarioResponseDto dto) {
return null;
} else {
Rol rol = Rol.valueOf(dto.getRol().toUpperCase());
return Usuario.builder()
.id(dto.getId())
.email(dto.getEmail())
.activo(dto.isActivo())
.rol(rol)
.build();
return Usuario
.builder()
.id(dto.getId())
.email(dto.getEmail())
.activo(dto.isActivo())
.rol(rol)
.build();
}
}

}
16 changes: 5 additions & 11 deletions src/main/java/pe/edu/utp/dto/ArticuloDto.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,20 +14,14 @@
@Getter
@AllArgsConstructor
public class ArticuloDto {

@NotBlank(message = "El campo nombre no puede estar vacio")
private String nombre;

@NotBlank(message = "El campo marca no puede estar vacio")
private String marca;
@NotBlank(message = "El campo nombre no puede estar vacio") private String nombre;

@NotBlank(message = "El campo categoria no puede estar vacio")
private String categoria;
@NotBlank(message = "El campo marca no puede estar vacio") private String marca;

@NotNull(message = "El campo precio no puede estar vacio")
private Double precio;
@NotBlank(message = "El campo categoria no puede estar vacio") private String categoria;

@NotNull(message = "El campo stock no puede estar vacio")
private int stock;
@NotNull(message = "El campo precio no puede estar vacio") private Double precio;

@NotNull(message = "El campo stock no puede estar vacio") private int stock;
}
1 change: 0 additions & 1 deletion src/main/java/pe/edu/utp/dto/ArticuloResponseDto.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package pe.edu.utp.dto;


import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
Expand Down
1 change: 1 addition & 0 deletions src/main/java/pe/edu/utp/dto/LoginRequestDto.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
@NoArgsConstructor
@Builder
public class LoginRequestDto {

private String email;
private String password;
}
Loading