package com.realnet.DynamicDashbard.entities;

import java.time.LocalDateTime;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.PrePersist;
import javax.persistence.PreUpdate;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;

import com.fasterxml.jackson.annotation.JsonBackReference;

import lombok.Data;

@Data
@Entity
@Table(name = "chart_templates")
public class ChartTemplate {
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private Long id;

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "chart_type_id", nullable = false)
	@JsonBackReference
	private ChartType chartType;

	@Column(name = "template_name", nullable = false, length = 100)
	private String templateName;

	@Column(name = "template_html", columnDefinition = "TEXT")
	private String templateHtml;

	@Column(name = "template_css", columnDefinition = "TEXT")
	private String templateCss;

	@Column(name = "is_default")
	private Boolean isDefault = false;

	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "created_at")
	@CreatedDate
	private Date createdAt;

	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "updated_at")
	@LastModifiedDate
	private Date updatedAt;

//
//	@PrePersist
//	protected void onCreate() {
//		createdAt = LocalDateTime.now();
//		updatedAt = LocalDateTime.now();
//	}
//
//	@PreUpdate
//	protected void onUpdate() {
//		updatedAt = LocalDateTime.now();
//	}
//
//	// Constructors
//	public ChartTemplate() {
//	}
//
//	public ChartTemplate(ChartType chartType, String templateName, String templateHtml, String templateCss) {
//		this.chartType = chartType;
//		this.templateName = templateName;
//		this.templateHtml = templateHtml;
//		this.templateCss = templateCss;
//	}
//
//	// Getters and Setters
//	public Long getId() {
//		return id;
//	}
//
//	public void setId(Long id) {
//		this.id = id;
//	}
//
//	public ChartType getChartType() {
//		return chartType;
//	}
//
//	public void setChartType(ChartType chartType) {
//		this.chartType = chartType;
//	}
//
//	public String getTemplateName() {
//		return templateName;
//	}
//
//	public void setTemplateName(String templateName) {
//		this.templateName = templateName;
//	}
//
//	public String getTemplateHtml() {
//		return templateHtml;
//	}
//
//	public void setTemplateHtml(String templateHtml) {
//		this.templateHtml = templateHtml;
//	}
//
//	public String getTemplateCss() {
//		return templateCss;
//	}
//
//	public void setTemplateCss(String templateCss) {
//		this.templateCss = templateCss;
//	}
//
//	public Boolean getIsDefault() {
//		return isDefault;
//	}
//
//	public void setIsDefault(Boolean isDefault) {
//		this.isDefault = isDefault;
//	}
//
//	public LocalDateTime getCreatedAt() {
//		return createdAt;
//	}
//
//	public void setCreatedAt(LocalDateTime createdAt) {
//		this.createdAt = createdAt;
//	}
//
//	public LocalDateTime getUpdatedAt() {
//		return updatedAt;
//	}
//
//	public void setUpdatedAt(LocalDateTime updatedAt) {
//		this.updatedAt = updatedAt;
//	}
}