package org.egl_cepgl.pm.model.user;

import lombok.*;
import org.egl_cepgl.pm.model.AbstractEntity;
import org.hibernate.Hibernate;
import org.hibernate.annotations.ColumnDefault;
import org.springframework.data.annotation.CreatedDate;

import jakarta.persistence.*;
import java.math.BigInteger;
import java.time.Instant;
import java.util.List;
import java.util.Objects;

@Data
@Entity
@ToString
@Table(name="users", schema = "egl_pm_db")
@AllArgsConstructor
@NoArgsConstructor
public class User extends AbstractEntity
{
//    @Id
//    @GeneratedValue(strategy= GenerationType.IDENTITY)
//    @Column(name="id", columnDefinition = "serial", nullable = false, unique = true)
//    private Integer id;

    @Column(name="id_kcloak", length = 100)
    private String idkcloak;

    @Column(name="first_name", length = 30)
    private String firstname;

    @Column(name="last_name", length = 30)
    private String lastname;

    @Column(name="email", length = 50)
    private String email;

    @Column(name="phone", length = 20)
    private String phone;

    @Column(name="is_admin")
    @ColumnDefault("false")
    private Boolean is_admin;

    @Column(name="status")
    @ColumnDefault("false")
    private Boolean status;

    public User(String firstname, String lastname, String email, String phone, boolean is_admin, boolean status) 
    {
        this.firstname= firstname;
        this.lastname= lastname;
        this.email= email;
        this.phone= phone;
        this.is_admin= is_admin;
        this.status= status;
    }

//    @CreatedDate
//    @Column(name= "created_at", updatable = false)
//    private Instant created_at;
//
//    @CreatedDate
//    @Column(name= "updated_at")
//    private Instant updated_at;
//
//    @Override
//    public boolean equals(Object o) {
//        if (this == o) return true;
//        if (o == null || Hibernate.getClass(this) != Hibernate.getClass(o)) return false;
//        AbstractEntity that = (AbstractEntity) o;
//        return id != null && Objects.equals(id, that.getId());
//    }
//
//    @Override
//    public int hashCode() {
//        return getClass().hashCode();
//    }

}
