ProductRequest.java
package cz.vsb.crm.dto;
import cz.vsb.crm.model.Product;
import jakarta.validation.constraints.DecimalMin;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import java.math.BigDecimal;
import java.time.LocalDate;
public record ProductRequest(
@NotBlank @Size(min = 2, max = 255) String name,
@Size(max = 1000) String description,
@NotNull @DecimalMin(value = "0.0", message = "price must not be negative") BigDecimal price,
@Min(value = 0, message = "stock must not be negative") Integer stock,
LocalDate deactivatedAt) {
public Product toEntity() {
Product product = new Product();
applyTo(product);
return product;
}
public void applyTo(Product product) {
product.setName(name);
product.setDescription(description);
product.setPrice(price);
product.setStock(stock);
product.setDeactivatedAt(deactivatedAt);
}
}