---
# System prepended metadata

title: Domain model

---

# Domain model
# Описание на измисления ми модел
 - `<attr>...</attr> са атрибуите на класа`
 - `<assocications>...</associations> са асоциациите между класовете, като:`
    - `${associationName} е името на асоциата, последвана от връзка и множественост`
    - `{{OtherClassName}} е класът, към който е тази асоциация`
  - `Пример: ${enrolledIn} -> * {{Course}} означава, че в текущия клас има асоциация към
    класа Course, която се казва enrolledIn и множествеността към класа Course e *`
## Classes that are needed
- ## UnregisteredUser
    - `<attr>`
    - `</attr>`
    - `<associations>`
    - `${register} -> 1 {{RegistrationDetails}}`
    - `</associations>`
- ## RegistrationDetails
    - `<attr>`
    - username
    - email
    - password
    - gender
    - dateOfBirth
    - `</attr>`
    - `<associations>`
    - `</associations>`
- ## Student
    - `<attr>`
    - name
    - email
    - points
    - `</attr>`
    - `<associations>`
    - `${enrolledIn} -> * {{Course}}`
    - `${paysFor} ->  * {{Payment}} -> * {{Course}}`
    - `</associations>`
- ## Course
    - `<attr>`
    - name
    - description
    - `</attr>`
    - `<associations>`
    - `${hasTests} -> 1..* {{Test}}`
    - `${hasTeacher} -> 1..* {{Teacher}}`
    - `</associations>`
- ## Teacher
    - `<attr>`
    - name
    - email
    - `</attr>`
    - `<associations>`
    - `${hasCourses} -> * {{Course}}`
    - `${requestsCourse} -> 1 {{CourseDetails}} -> 1 {{ContentManager}}`
    - `</associations>`
- ## ContentManager
    - `<attr>`
    - name
    - `</attr>`
    - `<associations>`
    - `${approvesCourse} -> * {{CourseDetails}}`
    - `${publishesCourse} -> * {{Course}}`
    - `</associations>`
- ## CourseDetails
    - `<attr>`
    - name
    - overallLength
    - dateRequested
    - `</attr>`
    - `<associations>`
    - `${hasVideos} -> 1..* {{Video}}`
    - `${hasTests} -> 1..* {{Test}}`
    - `${hasTeachers} -> 1..* {{Teachers}}`
    - `${hasExam} -> 1 {{Exam}}`
    - `</associations>`
- ## Administrator
    - `<attr>`
    - name
    - id
    - `</attr>`
    - `<associations>`
    - `#{providesTechnicalSupport} -> * {{User}}`
    - `</associations>`
- ## Payment 
    - `<attr>`
    - paymentId
    - dateRequested
    - dateCompleted
    - `</attr>`
    - `<associations>`
    - `${fromUser} -> 1 {{User}}`
    - `${forCourse} -> 1 {{Course}}`
    - `</associations>`