package com.evseminar.dto;

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

@Data
@Builder
public class SeminarDTO {
    private Long seminarId;
    private Long vehicleId;
    private String vehicleName;
    private String vehicleNameZh;
    private String vehiclePictureUrl;
    private String vehicleModelNumber;
    private LocalDateTime seminarDate;
    private String venue;
    private String venueZh;
    private Integer maxSeats;
    private Integer bookedSeats;
    private Integer availableSeats;
    private String description;
    private String descriptionZh;
    private String speakerName;
    private String speakerNameZh;
    private String language;
    private String seminarType;
    private LocalDateTime registrationDeadline;

    public static SeminarDTO from(Seminar seminar, int bookedSeats) {
        return SeminarDTO.builder()
                .seminarId(seminar.getSeminarId())
                .vehicleId(seminar.getVehicle().getVehicleId())
                .vehicleName(seminar.getVehicle().getName())
                .vehicleNameZh(seminar.getVehicle().getNameZh())
                .vehiclePictureUrl(seminar.getVehicle().getPictureUrl())
                .vehicleModelNumber(seminar.getVehicle().getModelNumber())
                .seminarDate(seminar.getSeminarDate())
                .venue(seminar.getVenue())
                .venueZh(seminar.getVenueZh())
                .maxSeats(seminar.getMaxSeats())
                .bookedSeats(bookedSeats)
                .availableSeats(seminar.getMaxSeats() - bookedSeats)
                .description(seminar.getDescription())
                .descriptionZh(seminar.getDescriptionZh())
                .speakerName(seminar.getSpeakerName())
                .speakerNameZh(seminar.getSpeakerNameZh())
                .language(seminar.getLanguage())
                .seminarType(seminar.getSeminarType())
                .registrationDeadline(seminar.getRegistrationDeadline())
                .build();
    }
}
