class SportCenter {
  String openingHour;
  String closingHour;
  String address;
  1 <@>- 1 Room room;
  1 <@>- 1 Owner owner;
  1 <@>- * Instructor instructors;
  1 <@>- * Customer customers;
  1 <@>- * Course courses;
}

class User {
  abstract;
  id;
  unique String email;
  String password;
  String name;
}

class Owner {
  isA User;
}

class Instructor {
  isA User;
}

class Customer {
  isA User;
}


class Course {
  id;
  unique String name;
  String description;
  Level level;
  DateTime courseStartDate;
  DateTime courseEndDate;

  1 <@>- 0..* CourseSession;
}

class CourseSession {
  id;
  Date day;
  DateTime startTime;
  DateTime endTime;

  * course -> 1 Room room;

  }

class Registration
{
  id;

  * -> 1 Customer;
  * -> 1 CourseSession;
}

association {
  1 Instructor instructor <- 0..* CourseSession sessions;
}

enum Level {
	Beginner,
  	Intermediate,
  	Advanced
}

class Room
{
  	id;
  	String roomName;
}

class Invoice
{
  id;
  0..* -> 1 Registration;
  Status status;
}

enum Status {
	Open,
  	Failed,
  	Void,
  	Completed,
  	Cancelled
}
