package com.evseminar.dto;

import com.evseminar.model.Registration;
import lombok.Data;
import lombok.Builder;
import java.time.LocalDateTime;

@Data
@Builder
public class RegistrationDTO {
    private Long registrationId;
    private Long customerId;
    private String customerName;
    private Long seminarId;
    private String vehicleName;
    private String vehicleNameZh;
    private String vehiclePictureUrl;
    private String vehicleModelNumber;
    private LocalDateTime seminarDate;
    private String venue;
    private String venueZh;
    private Integer numSeats;
    private String status;
    private String specialRequests;
    private Boolean attended;
    private LocalDateTime checkInTime;
    private LocalDateTime registeredAt;
    private LocalDateTime updatedAt;

    public static RegistrationDTO from(Registration reg) {
        return RegistrationDTO.builder()
                .registrationId(reg.getRegistrationId())
                .customerId(reg.getCustomer().getCustomerId())
                .customerName(reg.getCustomer().getName())
                .seminarId(reg.getSeminar().getSeminarId())
                .vehicleName(reg.getSeminar().getVehicle().getName())
                .vehicleNameZh(reg.getSeminar().getVehicle().getNameZh())
                .vehiclePictureUrl(reg.getSeminar().getVehicle().getPictureUrl())
                .vehicleModelNumber(reg.getSeminar().getVehicle().getModelNumber())
                .seminarDate(reg.getSeminar().getSeminarDate())
                .venue(reg.getSeminar().getVenue())
                .venueZh(reg.getSeminar().getVenueZh())
                .numSeats(reg.getNumSeats())
                .status(reg.getStatus().name())
                .specialRequests(reg.getSpecialRequests())
                .attended(reg.getAttended())
                .checkInTime(reg.getCheckInTime())
                .registeredAt(reg.getRegisteredAt())
                .updatedAt(reg.getUpdatedAt())
                .build();
    }
}
