CartItem.java
// FILE: src/main/java/com/ctrlbuy/webshop/model/CartItem.java
package com.ctrlbuy.webshop.model;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
@Entity
@Table(name = "cart_items")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class CartItem {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "cart_id")
private Cart cart;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "product_id", nullable = false)
private Product product;
@Column(nullable = false)
private Integer quantity;
@Column(nullable = false, precision = 10, scale = 2)
private BigDecimal unitPrice;
// Beräknad totalsumma för denna cart item
public BigDecimal getTotalPrice() {
return unitPrice.multiply(BigDecimal.valueOf(quantity));
}
// Helper method för att uppdatera kvantitet
public void updateQuantity(Integer newQuantity) {
if (newQuantity <= 0) {
throw new IllegalArgumentException("Quantity must be greater than 0");
}
this.quantity = newQuantity;
}
// Helper method för att öka kvantitet
public void increaseQuantity(Integer amount) {
this.quantity += amount;
}
}