package com.ffii.lioner.modules.lioner.entity;

import java.time.LocalDate;
import java.time.LocalDateTime;

import com.ffii.core.entity.BaseEntity;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Inheritance;
import jakarta.persistence.InheritanceType;
import jakarta.persistence.Table;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;

/** @author Jason Lam */
@Entity
@Table(name = "event")
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
public class Event extends BaseEntity<Long>{

    @NotBlank
	@Column
	private String name;
    
    @Column
	private String nameCht;

    @Column
	private String description;
   
    @NotBlank
    @Column
	private String region;

    @NotBlank
    @Column
	private String organization;

    @NotBlank
    @Column
	private String eventType;

    @Column
	private String frequency;

    @Column
	private String series;

    @Column
    @NotNull
	private LocalDate startDate;

    @Column
	private LocalDate eventFrom;

    @Column
	private LocalDate eventTo;

    @Column
    @NotNull
	private LocalDate applicationDeadline;

    @Column
	private LocalDate nextApplicationDate;
    
    @Column
	private LocalDate announcementDate;

    @Column
	private LocalDate awardDate;

    @Column
    private Boolean reminderFlag;

    @Column
    private Long reminderThreshold;
    
    @Column
    private Long reminderInterval;
    
    @Column
    private Long reminderLimit;

    @Column
	private LocalDateTime importDate;

    public LocalDateTime getImportDate() {
        return this.importDate;
    }

    public void setImportDate(LocalDateTime importDate) {
        this.importDate = importDate;
    }

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getNameCht() {
        return this.nameCht;
    }

    public void setNameCht(String nameCht) {
        this.nameCht = nameCht;
    }

    public String getDescription() {
        return this.description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public String getRegion() {
        return this.region;
    }

    public void setRegion(String region) {
        this.region = region;
    }

    public String getOrganization() {
        return this.organization;
    }

    public void setOrganization(String organization) {
        this.organization = organization;
    }

    public String getEventType() {
        return this.eventType;
    }

    public void setEventType(String eventType) {
        this.eventType = eventType;
    }

    public String getFrequency() {
        return this.frequency;
    }

    public void setFrequency(String frequency) {
        this.frequency = frequency;
    }

    public String getSeries() {
        return this.series;
    }

    public void setSeries(String series) {
        this.series = series;
    }

    public LocalDate getStartDate() {
        return this.startDate;
    }

    public void setStartDate(LocalDate startDate) {
        this.startDate = startDate;
    }

    public LocalDate getEventFrom() {
        return this.eventFrom;
    }

    public void setEventFrom(LocalDate eventFrom) {
        this.eventFrom = eventFrom;
    }

    public LocalDate getEventTo() {
        return this.eventTo;
    }

    public void setEventTo(LocalDate eventTo) {
        this.eventTo = eventTo;
    }

    public LocalDate getApplicationDeadline() {
        return this.applicationDeadline;
    }

    public void setApplicationDeadline(LocalDate applicationDeadline) {
        this.applicationDeadline = applicationDeadline;
    }

    public LocalDate getNextApplicationDate() {
        return this.nextApplicationDate;
    }

    public void setNextApplicationDate(LocalDate nextApplicationDate) {
        this.nextApplicationDate = nextApplicationDate;
    }

    public LocalDate getAnnouncementDate() {
        return this.announcementDate;
    }

    public void setAnnouncementDate(LocalDate announcementDate) {
        this.announcementDate = announcementDate;
    }

    public LocalDate getAwardDate() {
        return this.awardDate;
    }

    public void setAwardDate(LocalDate awardDate) {
        this.awardDate = awardDate;
    }

    public Boolean isReminderFlag() {
        return this.reminderFlag;
    }

    public Boolean getReminderFlag() {
        return this.reminderFlag;
    }

    public void setReminderFlag(Boolean reminderFlag) {
        this.reminderFlag = reminderFlag;
    }

    public Long getReminderThreshold() {
        return this.reminderThreshold;
    }

    public void setReminderThreshold(Long reminderThreshold) {
        this.reminderThreshold = reminderThreshold;
    }

    public Long getReminderInterval() {
        return this.reminderInterval;
    }

    public void setReminderInterval(Long reminderInterval) {
        this.reminderInterval = reminderInterval;
    }

    public Long getReminderLimit() {
        return this.reminderLimit;
    }

    public void setReminderLimit(Long reminderLimit) {
        this.reminderLimit = reminderLimit;
    }

}

