CouponDtos.java
package com.rbctcsworld.ecommerce.coupon;
import jakarta.validation.constraints.DecimalMin;
import jakarta.validation.constraints.Digits;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
import jakarta.validation.constraints.Positive;
import jakarta.validation.constraints.Size;
import java.math.BigDecimal;
import java.time.LocalDateTime;
public final class CouponDtos {
private CouponDtos() {
}
public record CreateCouponRequest(
@NotBlank @Size(max = 40) @Pattern(regexp = "[A-Za-z0-9_-]+", message = "letters, digits, _ and - only") String code,
@NotBlank @Pattern(regexp = "PERCENT|FIXED", message = "must be PERCENT or FIXED") String type,
@NotNull @Positive @Digits(integer = 10, fraction = 2) BigDecimal value,
@DecimalMin("0.00") BigDecimal minOrderAmount,
@Min(1) Integer maxUses,
LocalDateTime validFrom,
LocalDateTime validUntil) {
}
/** Edit of an existing coupon. The code never changes (customers and old orders refer to it). */
public record UpdateCouponRequest(
@NotBlank @Pattern(regexp = "PERCENT|FIXED", message = "must be PERCENT or FIXED") String type,
@NotNull @Positive @Digits(integer = 10, fraction = 2) BigDecimal value,
@DecimalMin("0.00") BigDecimal minOrderAmount,
@Min(1) Integer maxUses,
LocalDateTime validFrom,
LocalDateTime validUntil) {
}
}