package com.project.whatsappchatbot.model;

import lombok.Data;
import lombok.Getter;
import lombok.Setter;

import javax.persistence.*;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

@Entity
@Data
@Getter
@Setter
@Table(name = "users")
public class Customer {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "role_id")
    private Long roleId;

    @Column(name = "name")
    private String name;

    @Column(name = "email")
    private String email;
//    @OneToMany(mappedBy = "user")
//    private Set<Order> orderList = new HashSet<>();

    @Column(name = "avatar", nullable = false, columnDefinition = "varchar(255) default 'users/default.png'")
    private String avatar = "users/default.png";

    @Column(name = "email_verified_at")
    private Timestamp emailVerifiedAt;

    @Column(name = "password")
    private String password;

    @Column(name = "remember_token")
    private String rememberToken;

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

    @Column(name = "dob")
    private String dob;

    @Column(name = "phone")
    private String phone;

    @Column(name = "state_id")
    private Integer stateId;

    @Column(name = "city_id")
    private Integer cityId;

    @Column(name = "vehicle_id")
    private String vehicleId;

    @Column(name = "gender")
    private String gender;

    @Column(name = "otp")
    private String otp;

    @Column(name = "device_key")
    private String deviceKey;

    @Column(name = "created_at")
    private Timestamp createdAt;

    @Column(name = "updated_at")
    private Timestamp updatedAt;

    @Column(name = "last_reminder")
    private Timestamp lastReminder;

    @Column(name = "status", nullable = false, columnDefinition = "tinyint(4) default 1")
    private Byte status = 1;

    @Column(name = "device_platform", nullable = false)
    private String devicePlatform = "Android";

    @PrePersist
    protected void onCreate() {
        createdAt = new Timestamp(System.currentTimeMillis());
    }

    @PreUpdate
    protected void onUpdate() {
        updatedAt = new Timestamp(System.currentTimeMillis());
    }

    public Customer() {
        // Default constructor
    }

    public Customer(Long id) {
        this.id = id;
    }
}