package com.evseminar.dto;

import com.evseminar.model.Vehicle;
import lombok.Data;
import lombok.Builder;
import java.math.BigDecimal;
import java.util.List;

@Data
@Builder
public class VehicleDTO {
    private Long vehicleId;
    private String modelNumber;
    private String name;
    private String nameZh;
    private String description;
    private String descriptionZh;
    private String pictureUrl;
    private BigDecimal unitPrice;
    private String vehicleType;
    private Integer rangeKm;
    private BigDecimal batteryCapacityKwh;
    private Integer chargingTimeMin;
    private Integer horsepower;
    private Integer topSpeedKmh;
    private Integer seatingCapacity;
    private Integer warrantyYears;
    private List<String> features;
    private List<String> colors;
    private List<SeminarDTO> seminars;

    public static VehicleDTO from(Vehicle vehicle) {
        return VehicleDTO.builder()
                .vehicleId(vehicle.getVehicleId())
                .modelNumber(vehicle.getModelNumber())
                .name(vehicle.getName())
                .nameZh(vehicle.getNameZh())
                .description(vehicle.getDescription())
                .descriptionZh(vehicle.getDescriptionZh())
                .pictureUrl(vehicle.getPictureUrl())
                .unitPrice(vehicle.getUnitPrice())
                .vehicleType(vehicle.getVehicleType())
                .rangeKm(vehicle.getRangeKm())
                .batteryCapacityKwh(vehicle.getBatteryCapacityKwh())
                .chargingTimeMin(vehicle.getChargingTimeMin())
                .horsepower(vehicle.getHorsepower())
                .topSpeedKmh(vehicle.getTopSpeedKmh())
                .seatingCapacity(vehicle.getSeatingCapacity())
                .warrantyYears(vehicle.getWarrantyYears())
                .features(vehicle.getVehicleFeatures().stream()
                        .map(f -> f.getFeatureName()).toList())
                .colors(vehicle.getVehicleColors().stream()
                        .map(c -> c.getColorName()).toList())
                .build();
    }
}
