namespace ca.mcgill.ecse321.sportcenter.model;

class SportCenter
{ 
  1 <@>- * User users;
  1 <@>- 1 Owner owner;
  1 <@>- * Instructor instructors;
  1 <@>- * Customer customers;
  1 <@>- * Registration registrations;
  1 <@>- * ScheduledActivity scheduledActivities;
  1 <@>- * Activity activities;
}

class User
{
  unique username;
  password;
  autounique userId;
  1 user <- 0..2 Account acountRoles;
}

class Account
{
abstract;
}

class Owner
{
  isA Account;
}

class Instructor
{
  enum InstructorStatus {active, inactive, fired, suspended}
  InstructorStatus status;
description;
profilePicURL;
isA Account;
  1 accounts <- * ScheduledActivity scheduledActivities;
}

class Customer
{
  isA Account;
}

class Registration
{
  autounique regId;
  0..* registrations -> 1 ScheduledActivity scheduledActivity;
  0..* registrations -> 1 Customer customer;
}

class ScheduledActivity
{
  Date date;
  Time startTime;
  Time endTime;
}

class Activity{
  enum ClassCategory {strength, cardio, stretch}
  ClassCategory subcategory;
  name;
  boolean isApproved;
1 <- * ScheduledActivity scheduledActivities;
}

