package org.hso.ecommerce.entities.user;

import org.hso.ecommerce.entities.booking.PaymentMethod;
import org.hso.ecommerce.entities.shop.Address;
import org.springframework.security.crypto.bcrypt.BCrypt;

import javax.persistence.*;
import javax.validation.constraints.NotNull;


@Entity
@Table(name = "users")
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic
    public long id;

    @NotNull
    public java.sql.Timestamp created;

    @NotNull
    @Column(unique = true)
    public String email;

    @Column(insertable = false, updatable = false)
    public String name;

    public String salutation;

    public String passwordHash;

    public boolean isActive;
    public boolean isEmployee;

    @Embedded
    public Address defaultDeliveryAddress;

    @Embedded
    public PaymentMethod defaultPayment;

    public long getId() {
        return id;
    }

    public boolean validatePassword(String password) {
        return BCrypt.checkpw(password, passwordHash);
    }

    public void setPassword(String password) {
        passwordHash = BCrypt.hashpw(password, BCrypt.gensalt());
    }
}
