package models; import com.fasterxml.jackson.databind.node.ObjectNode; import managers.AvatarManager; import models.base.BaseModel; import models.base.IJsonNodeSerializable; import models.enums.AccountRole; import models.enums.EmailNotifications; import org.hibernate.annotations.Type; import org.hibernate.validator.constraints.URL; import play.data.validation.Constraints.Email; import play.data.validation.Constraints.Required; import play.libs.Json; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.OneToMany; import javax.persistence.OneToOne; import java.util.Set; @Entity public class Account extends BaseModel implements IJsonNodeSerializable { public String loginname; public String name; @Required public String firstname; @Required public String lastname; @Email @Column(unique = true) public String email; @Required public String password; public String avatar; @Type(type = "org.hibernate.type.TextType") public String about; @URL(message = "error.homepage") public String homepage; @OneToMany(mappedBy = "account", orphanRemoval = true) public Set<Friendship> friends; @OneToOne public Folder rootFolder; @OneToOne public Studycourse studycourse; public String degree; public Integer semester; public AccountRole role; public EmailNotifications emailNotifications; public Integer dailyEmailNotificationHour; /** * Returns the initials of the user as an alternative to the avatar * * @return */ public String getInitials() { StringBuilder sb = new StringBuilder(); sb.append(Character.toUpperCase(this.firstname.charAt(0))); sb.append(Character.toUpperCase(this.lastname.charAt(0))); return sb.toString(); } @Override public ObjectNode getAsJson() { ObjectNode node = Json.newObject(); node.put("id", this.id); node.put("name", this.name); return node; } /** * Determines if the user has a custom avatar * * @return */ public boolean hasAvatar() { if (this.avatar.equals(AvatarManager.AVATAR_CUSTOM)) { return true; } return false; } }