package com.pollex.pam.domain; import java.io.Serializable; import java.time.Instant; import java.util.Optional; import javax.persistence.*; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedDate; import org.springframework.data.jpa.domain.support.AuditingEntityListener; import org.springframework.util.StringUtils; import com.fasterxml.jackson.annotation.JsonIgnore; import com.pollex.pam.enums.OtpLoginTypeEnum; @EntityListeners(AuditingEntityListener.class) @Entity @Table(name = "customer") public class Customer implements Serializable { /** * */ private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "name") private String name; @Column(name = "phone") private String phone; @Column(name = "email") private String email; @Enumerated(value = EnumType.STRING) @Column(name = "contact_type") private OtpLoginTypeEnum contactType; @CreatedDate @Column(name = "created_date", updatable = false) @JsonIgnore private Instant createdDate = Instant.now(); @LastModifiedDate @Column(name = "last_modified_date") @JsonIgnore private Instant lastModifiedDate = Instant.now(); @CreatedDate @Column(name = "agree_personal_information_time", updatable = false) @JsonIgnore private Instant agreePersonalInformationTime; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public Instant getCreatedDate() { return createdDate; } public void setCreatedDate(Instant createdDate) { this.createdDate = createdDate; } public Instant getLastModifiedDate() { return lastModifiedDate; } public void setLastModifiedDate(Instant lastModifiedDate) { this.lastModifiedDate = lastModifiedDate; } public OtpLoginTypeEnum getContactType() { return contactType; } public void setContactType(OtpLoginTypeEnum contactType) { this.contactType = contactType; } public Instant getAgreePersonalInformationTime() { return agreePersonalInformationTime; } public void setAgreePersonalInformationTime(Instant agreePersonalInformationTime) { this.agreePersonalInformationTime = agreePersonalInformationTime; } public String toAccountString() { return Optional.ofNullable(getPhone()) .filter(StringUtils::hasText) .orElseGet(this::getEmail); } }