lila/modules/coach/src/main/Coach.scala

56 lines
1.3 KiB
Scala

package lila.coach
import org.joda.time.{ DateTime, Days }
import lila.memo.PicfitImage
case class Coach(
_id: Coach.Id, // user ID
listed: Coach.Listed,
available: Coach.Available,
profile: CoachProfile,
picture: Option[PicfitImage.Id],
nbReviews: Int,
user: Coach.User,
languages: List[String],
createdAt: DateTime,
updatedAt: DateTime
) {
def id = _id
def is(user: lila.user.User) = id.value == user.id
def hasPicture = picture.isDefined
def daysOld = Days.daysBetween(createdAt, DateTime.now).getDays
}
object Coach {
val imageSize = 350
def make(user: lila.user.User) =
Coach(
_id = Id(user.id),
listed = Listed(false),
available = Available(true),
profile = CoachProfile(),
picture = None,
nbReviews = 0,
user = User(user.perfs.bestStandardRating, user.seenAt | user.createdAt),
languages = user.lang.toList,
createdAt = DateTime.now,
updatedAt = DateTime.now
)
case class WithUser(coach: Coach, user: lila.user.User) {
def isListed = coach.listed.value && user.enabled && user.marks.clean
}
case class Id(value: String) extends AnyVal with StringValue
case class Listed(value: Boolean) extends AnyVal
case class Available(value: Boolean) extends AnyVal
case class User(rating: Int, seenAt: DateTime)
}