package info.interactivesystems.gamificationengine.entities.present; import info.interactivesystems.gamificationengine.entities.Organisation; import java.time.LocalDateTime; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.ManyToOne; import javax.validation.constraints.NotNull; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; /** * Presents that are in the in-box of the board a player can accept or deny. If the player * accept a present its status is set to accepted and an PresentAccepted object is created. */ @Entity @JsonIgnoreProperties({ "belongsTo" }) public class PresentAccepted { enum Status { ACCEPT, DENIED } @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int id; @NotNull @ManyToOne private Organisation belongsTo; private LocalDateTime date; @NotNull @ManyToOne private Present present; private Status status; /** * Gets the id of the accepted present. * * @return The id of the accepted present. */ public int getId() { return id; } /** * Sets the id of the accepted present. * * @param id * The new id of the accepted present. */ public void setId(int id) { this.id = id; } /** * Gets the organisation an accepted present belongs to. * * @return The organisation of the accepted present as an object. */ public Organisation getBelongsTo() { return belongsTo; } /** * Sets the organisation an accepted present belongs to. * * @param belongsTo * The organisation of the accepted present. */ public void setBelongsTo(Organisation belongsTo) { this.belongsTo = belongsTo; } /** * Gets the date and time a present was accepted by a player. * * @return The date and time a present was accepted. */ public LocalDateTime getDate() { return date; } /** * The date and time a present was accepted by a player. * * @param date * The date and time the ülayer has accepted the present. */ public void setDate(LocalDateTime date) { this.date = date; } /** * Get the present that is accepted by the player. * * @return The present that was accepted. */ public Present getPresent() { return present; } /** * Sets the presents that was accepted by the player. * * @param present * The present that was accepted by the player. */ public void setPresent(Present present) { this.present = present; } /** * Sets the status of the present if the player has accepted it or not. * * @return The status of the present. If it was accepted by the player the field is ACCEPT * otherwise DENIED. */ public Status getStatus() { return status; } /** * Sets the status of the present to accepted. */ public void setStatus() { this.status = Status.ACCEPT; } /** * This method checks if an accepted present belongs to a specific organisation. Therefore * it is tested if the organisation's API key matches the present's API key. * * @param organisation * The organisation object a present may belongs to. * @return Boolean value if the API key of the accepted present is the same * of the tested organisation (true) or not (false). */ public boolean belongsTo(Organisation organisation) { return getBelongsTo().getApiKey().equals(organisation.getApiKey()); } }