@startuml "Class Diagram"
class Member <<Entity>>{
    +firstName: String
    +lastName: String
    +email: String
    +phone: Number
    +photo: Photo
    +measurements: [Measurement]
    +creditcard: Number   
    +discount: Number
    +greet() 
    +findPT(location,pt) :[Member]
    +updateProfile()  
    +shareOnWall()
    +comment()    //push wall
    +bookPT(pt,price,creditcard,date,location,discount) //push order   
}

class PT<<Entity>>{
    +sports: Sports
    +certificate : [Certificate]
    +usingBrand: String[]
    +sessionFee: Number
    +location: Location
    +stars: [Stars]
    +setDate()
    +setPrice()

}

class Wall<<Entity>>{
    +member: Member
}
class Order<<Entity>>{
    +member: Member
    +PT:Member
    +price: Number
    +creditcard: member.creditcard
    +date: Date
    +location: Location
}
interface Measurement <<ValueObject>>{
    +type: String
    +value: Number
    +unit: String
}
class BMI <<ValueObject>> {
    +type: String
    +value: Number
    +unit: String
}
interface Stars<<ValueObject>>{
    +numberOfStars: Number
    +member: Member
    +pt: PT
    +order: Order
}

interface Certificate <<ValueObject>>{
    +type: String
    +date: Date 
    +description: String 
}

enum Sports{
    CrossFit
    Yoga
    Pilates
    Fitness
}

class Location<<Entity>> {
    +coords: Number[]
    +name: String
}

class Admin {
    +moderateComments()
}

Admin -up-|> Member
BMI --* Measurement
Measurement -up-|> Member
Certificate --* PT
Stars -up-|> PT
Member o--> Location
Member --> PT
Member *-- Wall
Member *-- Order
PT *-- Order
PT --* Sports

@enduml

