LeadResponse.java
package cz.vsb.crm.dto;
import cz.vsb.crm.model.Account;
import cz.vsb.crm.model.Lead;
import cz.vsb.crm.model.User;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;
public record LeadResponse(
Long id,
Long accountId,
String accountName,
Long assignedToId,
String assignedToName,
String source,
String status,
BigDecimal value,
LocalDate createdDate,
List<LeadLineResponse> products) {
public static LeadResponse from(Lead lead) {
Account account = lead.getAccount();
User assignedTo = lead.getAssignedTo();
List<LeadLineResponse> products = lead.getLeadProducts().stream()
.map(LeadLineResponse::from)
.toList();
return new LeadResponse(
lead.getId(),
account != null ? account.getId() : null,
account != null ? account.getCompanyName() : null,
assignedTo != null ? assignedTo.getId() : null,
assignedTo != null ? assignedTo.getUsername() : null,
lead.getSource(),
lead.getStatus(),
lead.getValue(),
lead.getCreatedDate(),
products);
}
}