OrderResponse.java
package cz.vsb.crm.dto;
import cz.vsb.crm.model.Account;
import cz.vsb.crm.model.Lead;
import cz.vsb.crm.model.Order;
import cz.vsb.crm.model.User;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;
public record OrderResponse(
Long id,
Long accountId,
String accountName,
Long leadId,
Long createdById,
String createdByName,
BigDecimal totalAmount,
LocalDate orderDate,
String status,
String orderType,
List<OrderLineResponse> products) {
public static OrderResponse from(Order order) {
Account account = order.getAccount();
Lead lead = order.getLead();
User createdBy = order.getCreatedBy();
List<OrderLineResponse> products = order.getOrderProducts().stream()
.map(OrderLineResponse::from)
.toList();
return new OrderResponse(
order.getId(),
account != null ? account.getId() : null,
account != null ? account.getCompanyName() : null,
lead != null ? lead.getId() : null,
createdBy != null ? createdBy.getId() : null,
createdBy != null ? createdBy.getUsername() : null,
order.getTotalAmount(),
order.getOrderDate(),
order.getStatus(),
order.getOrderType(),
products);
}
}