package com.evseminar.model;

import jakarta.persistence.*;
import lombok.*;
import org.hibernate.annotations.SQLRestriction;
import java.time.LocalDateTime;

@Entity
@Table(name = "seminar")
@SQLRestriction("deleted_at IS NULL")
@Getter @Setter
@NoArgsConstructor @AllArgsConstructor
@Builder
public class Seminar {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long seminarId;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "vehicle_id", nullable = false)
    private Vehicle vehicle;

    @Column(nullable = false)
    private LocalDateTime seminarDate;

    @Column(nullable = false, length = 200)
    private String venue;

    @Column(length = 200)
    private String venueZh;

    @Column(nullable = false)
    private Integer maxSeats;

    @Column(columnDefinition = "TEXT")
    private String description;

    @Column(columnDefinition = "TEXT")
    private String descriptionZh;

    @Column(length = 100)
    private String speakerName;

    @Column(length = 100)
    private String speakerNameZh;

    @Column(nullable = false, length = 20)
    private String language = "Cantonese";

    @Column(nullable = false, length = 20)
    private String seminarType = "IN_PERSON";

    @Column
    private LocalDateTime registrationDeadline;

    @Column(nullable = false, updatable = false)
    private LocalDateTime createdAt;

    @Column
    private LocalDateTime deletedAt;

    @PrePersist
    protected void onCreate() {
        createdAt = LocalDateTime.now();
    }
}
