Player.java

package net.andresbustamante.yafoot.core.model;

import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import net.andresbustamante.yafoot.commons.model.Auditable;
import net.andresbustamante.yafoot.commons.model.Identifiable;
import net.andresbustamante.yafoot.users.model.User;

import java.io.Serial;
import java.io.Serializable;
import java.time.Instant;

/**
 * A match player.
 *
 * @author andresbustamante
 */
@Getter @Setter @NoArgsConstructor
@EqualsAndHashCode(callSuper = true, of = {"id"}) @ToString(of = {"id"})
public final class Player extends User implements Serializable, Identifiable<Integer>, Auditable {

    @Serial
    private static final long serialVersionUID = -835073717353039623L;

    private Integer id;
    private String phoneNumber;
    private boolean active;
    private Instant creationDate;
    private Instant modificationDate;

    /**
     * Constructor for testing purposes only.
     *
     * @param id Player ID
     */
    public Player(final Integer id) {
        this.id = id;
    }

    /**
     * Constructor for testing purposes only.
     *
     * @param id Player ID
     * @param surname Player's surname
     * @param firstName Player's first name
     * @param email Player's email
     * @param phoneNumber Player's phone number
     */
    public Player(final Integer id, final String surname, final String firstName, final String email,
            final String phoneNumber) {
        super(email, surname, firstName);
        this.id = id;
        this.phoneNumber = phoneNumber;
    }
}