From 01a44ca73bb0ea7d493c394e3b57b3443a505724 Mon Sep 17 00:00:00 2001
From: MonaS8 <schumo62@gmail.com>
Date: Sun, 23 Mar 2025 16:41:24 +0100
Subject: [PATCH] add UML diagrams draft

---
 UML/classdiagram.uxf      | 151 ++++++++++++++++++++++++++++++++++++++
 UML/componentdiagram.uxf  |  64 ++++++++++++++++
 UML/deploymentdiagram.uxf |  21 ++++++
 UML/sequencediagram.uxf   |  88 ++++++++++++++++++++++
 backend                   |   2 +-
 frontend                  |   2 +-
 6 files changed, 326 insertions(+), 2 deletions(-)
 create mode 100644 UML/classdiagram.uxf
 create mode 100644 UML/componentdiagram.uxf
 create mode 100644 UML/deploymentdiagram.uxf
 create mode 100644 UML/sequencediagram.uxf

diff --git a/UML/classdiagram.uxf b/UML/classdiagram.uxf
new file mode 100644
index 0000000..e4c0c82
--- /dev/null
+++ b/UML/classdiagram.uxf
@@ -0,0 +1,151 @@
+<diagram program="umletino" version="15.1"><zoom_level>12</zoom_level><help_text>Space for diagram notes</help_text><element><id>UMLClass</id><coordinates><x>984</x><y>60</y><w>780</w><h>348</h></coordinates><panel_attributes>ActivitiesService
+--
+--
++ addNoteCreateActivity(userId: string, roomSession: RoomSession, note: Note): void
++ addNoteUpdateActivity(userId: string, roomSession: RoomSession, note: Note, charactersAdded: number): void
++ addWhiteboardActivity(userId: string, roomSession: RoomSession): void
++ addVideoActivity(userId: string, roomSession: RoomSession, isActive: boolean): void
++ addAudioActivity(userId: string, roomSession: RoomSession, isActive: boolean): void
++ addIsTalkingActivity(userId: string, roomSession: RoomSession, isTalking: boolean): void
++ addBrowserOpenActivity(userId: string, roomSession: RoomSession): void
++ addBrowserCloseActivity(userId: string, roomSession: RoomSession): void
++ addBrowserMouseActivity(userId: string, roomSession: RoomSession): void
++ addBrowserKeyActivity(userId: string, roomSession: RoomSession): void
++ calculatePoints(roomSession: RoomSession): int[]
++ calculateAudioPoints(activities: Activity[]): int
++ calculateVideoPoints(activities: Activity[]): int
++ calculateBrowserPoints(activities: Activity[]): int
++ calculateWhiteboardPoints(activities: Activity[]): int
++ calculateNotePoints(activities: Activity[]): int</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>984</x><y>432</y><w>540</w><h>96</h></coordinates><panel_attributes>SessionPointService
+--
+--
++ getPointsByUser(userId: number): Promise&lt;UserPointsResponseDto&gt;
++ getPointsBySession(sessionId: number): Promise&lt;number&gt;</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>984</x><y>672</y><w>600</w><h>84</h></coordinates><panel_attributes>RoleAssignmentService
+--
+--
++ determineRole(RoomSession: RoomSession, userId: string): void
++ getRole(userId: string): string</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>984</x><y>552</y><w>540</w><h>96</h></coordinates><panel_attributes>ModeAssignmentService
+--
+--
++ determineMode(RoomSession: RoomSession): void
++ getMode(RoomSession: RoomSession): string</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>132</x><y>732</y><w>216</w><h>204</h></coordinates><panel_attributes>Activity
+--
++ id: number
++ user: string
++ room: Room
++ roomSession: RoomSession
++ activity: string
++ numericValue: number
++ noteId: number
++ timestamp: Date
+--
+</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>600</x><y>732</y><w>276</w><h>168</h></coordinates><panel_attributes>RoomSession
+--
++ id: number
++ room: Room
++ dateOpened: Date
++ dateClosed: Date
++ users: Collection &lt;RoomSessionUser&gt;
++ activities: Collection &lt;Activity&gt;
+--
+</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>600</x><y>996</y><w>228</w><h>132</h></coordinates><panel_attributes>RoomSessionUser
+--
++ id: number
++ roomSession: RoomSession
++ userId: string
++ name: string
+--
+</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLPackage</id><coordinates><x>960</x><y>0</y><w>828</w><h>792</h></coordinates><panel_attributes>Services</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLPackage</id><coordinates><x>96</x><y>0</y><w>816</w><h>1452</h></coordinates><panel_attributes>Entities</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>600</x><y>1236</y><w>276</w><h>180</h></coordinates><panel_attributes>SessionPoints
+--
++ id: number
++ roomSessionUser: RoomSessionUser
++ audioPoints: number
++ videoPoints: number
++ browserPoints: number
++ whiteboardPoints: number
++ notePoints: number
+--
+</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>0</x><y>72</y><w>1008</w><h>768</h></coordinates><panel_attributes>lt=&lt;.</panel_attributes><additional_attributes>110;620;10;620;10;10;820;10</additional_attributes></element><element><id>Relation</id><coordinates><x>336</x><y>768</y><w>288</w><h>60</h></coordinates><panel_attributes>lt=-
+m1=1
+m2=0...n
+&lt; contains </panel_attributes><additional_attributes>220;20;10;20</additional_attributes></element><element><id>Relation</id><coordinates><x>708</x><y>888</y><w>72</w><h>132</h></coordinates><panel_attributes>lt=-
+m1=1
+m2=0...n
+has v</panel_attributes><additional_attributes>10;10;10;90</additional_attributes></element><element><id>Relation</id><coordinates><x>708</x><y>1116</y><w>72</w><h>144</h></coordinates><panel_attributes>lt=-
+m1=1
+m2=1
+has v</panel_attributes><additional_attributes>10;10;10;100</additional_attributes></element><element><id>UMLClass</id><coordinates><x>600</x><y>384</y><w>276</w><h>228</h></coordinates><panel_attributes>Room
+--
++ id: number
++ name: string
++ password: string
++ category: Category
++ createdAt: Date 
++ updatedAt: Date 
++ channelId?: string
++ notes = new Collection&lt;Note&gt;(this)
++ whiteboardCanvas
+--
+</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>720</x><y>600</y><w>72</w><h>156</h></coordinates><panel_attributes>lt=-
+m1=1
+m2=0...n
+has v</panel_attributes><additional_attributes>10;10;10;110</additional_attributes></element><element><id>UMLClass</id><coordinates><x>156</x><y>444</y><w>288</w><h>168</h></coordinates><panel_attributes>Category
+--
++ id: number
++ name: string
++ owner: User
++ rooms = new Collection&lt;Room&gt;(this)
++ createdAt: Date;
++ updatedAt: Date
+--
+</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>432</x><y>492</y><w>192</w><h>60</h></coordinates><panel_attributes>lt=-
+m1=1
+m2=0...n
+contains &gt;</panel_attributes><additional_attributes>10;20;140;20</additional_attributes></element><element><id>UMLClass</id><coordinates><x>156</x><y>108</y><w>324</w><h>216</h></coordinates><panel_attributes>User
+--
++ id: number
++ name: string
++ email: string
++ organization: string
++ password: string
++ categories = new Collection&lt;Category&gt;(this)
++ createdAt = new Date()
++ updatedAt = new Date()
++ role: 'user' | 'admin' = 'user'
+--
+</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>552</x><y>108</y><w>324</w><h>168</h></coordinates><panel_attributes>Note
+--
++ id: number
++ name: string
++ content
++ createdAt: Date = new Date()
++ updatedAt: Date = new Date()
++ room: Room
+--
+</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>288</x><y>312</y><w>96</w><h>156</h></coordinates><panel_attributes>lt=-
+m1=1
+m2=0...n
+create v</panel_attributes><additional_attributes>10;10;10;110</additional_attributes></element><element><id>Relation</id><coordinates><x>720</x><y>264</y><w>108</w><h>144</h></coordinates><panel_attributes>lt=-
+m1=1
+m2=0...n
+contains ^</panel_attributes><additional_attributes>10;100;10;10</additional_attributes></element><element><id>UMLClass</id><coordinates><x>132</x><y>1116</y><w>288</w><h>132</h></coordinates><panel_attributes>Roles
+--
++ id: number
++ roleName: string
++ userId: string
++ roomSession: RoomSession
+--
+</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>132</x><y>1284</y><w>288</w><h>120</h></coordinates><panel_attributes>Modes
+--
++ id: number
++ mode: string
++ roomSession: RoomSession
+--
+</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>1116</x><y>876</y><w>492</w><h>60</h></coordinates><panel_attributes>was ist mit controller, DTO?
+Controller/gateway maybe dann noch hinzufügen
+
+bg=red
+</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>1116</x><y>960</y><w>492</w><h>36</h></coordinates><panel_attributes>Pfeilarten schauen
+
+bg=red
+</panel_attributes><additional_attributes></additional_attributes></element></diagram>
\ No newline at end of file
diff --git a/UML/componentdiagram.uxf b/UML/componentdiagram.uxf
new file mode 100644
index 0000000..1d0b8c2
--- /dev/null
+++ b/UML/componentdiagram.uxf
@@ -0,0 +1,64 @@
+<diagram program="umletino" version="15.1"><zoom_level>8</zoom_level><help_text>Space for diagram notes</help_text><element><id>Text</id><coordinates><x>664</x><y>800</y><w>272</w><h>168</h></coordinates><panel_attributes>                                             Database
+// DB Symbol
+_umletcode=
+fg='white';
+
+drawArc(0,0,width,height*2/5,0,180,true) //Parameters (x, y, width, height, start, extent, open)
+bg='bg';
+drawArc(0,0,width,height*2/5,180,180,true)  //Parameters (x, y, width, height, start, extent, open)
+fg='#929292';
+bg='#222222';
+fg='white'
+drawLine(0,height/5,0,height*4/5) //Parameters (x1, y1, x2, y2)
+
+drawLine(width,height/5,width,height*4/5) //Parameters (x1, y1, x2, y2)
+bg='bg';
+
+  //Parameters (x, y, width, height, start, extent, open)
+  //Parameters (x, y, width, height, start, extent, open)
+bg='#222222'
+
+drawArc(0,height*3/5,width,height*2/5,180,180,true)  //Parameters (x, y, width, height, start, extent, open)
+
+</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLGeneric</id><coordinates><x>0</x><y>152</y><w>120</w><h>40</h></coordinates><panel_attributes>symbol=component
+Activity Trackers
+</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLPackage</id><coordinates><x>936</x><y>0</y><w>304</w><h>224</h></coordinates><panel_attributes>Frontend
+
+--
+
+
+</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLGeneric</id><coordinates><x>968</x><y>64</y><w>144</w><h>48</h></coordinates><panel_attributes>symbol=component
+Teacher Dashboard</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLGeneric</id><coordinates><x>968</x><y>144</y><w>240</w><h>48</h></coordinates><panel_attributes>symbol=component
+Activity Monitoring --&gt; anderes wort maybe</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLGeneric</id><coordinates><x>304</x><y>80</y><w>120</w><h>40</h></coordinates><panel_attributes>symbol=component
+Activity Service</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLPackage</id><coordinates><x>64</x><y>224</y><w>800</w><h>504</h></coordinates><panel_attributes>Backend
+--
+
+
+</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>744</x><y>80</y><w>240</w><h>328</h></coordinates><panel_attributes>API Calls</panel_attributes><additional_attributes>10;390;10;10;280;10</additional_attributes></element><element><id>Relation</id><coordinates><x>432</x><y>792</y><w>120</w><h>208</h></coordinates><panel_attributes>lt=-()
+
+</panel_attributes><additional_attributes>130;240;10;180;10;10</additional_attributes></element><element><id>UMLGeneric</id><coordinates><x>536</x><y>968</y><w>96</w><h>32</h></coordinates><panel_attributes>symbol=component
+Activities</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLGeneric</id><coordinates><x>504</x><y>928</y><w>80</w><h>32</h></coordinates><panel_attributes>symbol=component
+Points</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLGeneric</id><coordinates><x>1128</x><y>904</y><w>80</w><h>32</h></coordinates><panel_attributes>symbol=component
+Roles</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLGeneric</id><coordinates><x>1088</x><y>808</y><w>88</w><h>32</h></coordinates><panel_attributes>symbol=component
+Modes</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLGeneric</id><coordinates><x>112</x><y>416</y><w>168</w><h>152</h></coordinates><panel_attributes>symbol=component
+Activity System
+</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLGeneric</id><coordinates><x>320</x><y>352</y><w>224</w><h>104</h></coordinates><panel_attributes>symbol=component
+Points System
+</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLGeneric</id><coordinates><x>128</x><y>160</y><w>160</w><h>40</h></coordinates><panel_attributes>symbol=component
+Points Calculator</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLGeneric</id><coordinates><x>352</x><y>392</y><w>160</w><h>40</h></coordinates><panel_attributes>symbol=component
+SessionPoints Service</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLGeneric</id><coordinates><x>592</x><y>360</y><w>224</w><h>152</h></coordinates><panel_attributes>symbol=component
+Role System
+</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLGeneric</id><coordinates><x>592</x><y>544</y><w>224</w><h>152</h></coordinates><panel_attributes>symbol=component
+Mode System
+</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLGeneric</id><coordinates><x>624</x><y>392</y><w>160</w><h>40</h></coordinates><panel_attributes>symbol=component
+RoleAssignment Service</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLGeneric</id><coordinates><x>624</x><y>448</y><w>160</w><h>40</h></coordinates><panel_attributes>symbol=component
+Role Assigner</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLGeneric</id><coordinates><x>624</x><y>576</y><w>160</w><h>40</h></coordinates><panel_attributes>symbol=component
+ModeAssignment Service</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLGeneric</id><coordinates><x>624</x><y>632</y><w>160</w><h>40</h></coordinates><panel_attributes>symbol=component
+Mode Assignmer</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLGeneric</id><coordinates><x>0</x><y>48</y><w>160</w><h>40</h></coordinates><panel_attributes>symbol=component
+Room Service</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLGeneric</id><coordinates><x>360</x><y>600</y><w>160</w><h>40</h></coordinates><panel_attributes>symbol=component
+Auth Service</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>504</x><y>408</y><w>144</w><h>392</h></coordinates><panel_attributes>lt=)-
+</panel_attributes><additional_attributes>150;460;150;420;80;420;80;10;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>776</x><y>400</y><w>168</w><h>376</h></coordinates><panel_attributes>lt=)-
+</panel_attributes><additional_attributes>180;440;180;10;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>1008</x><y>760</y><w>144</w><h>64</h></coordinates><panel_attributes>lt=-()
+
+</panel_attributes><additional_attributes>160;60;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>776</x><y>584</y><w>264</w><h>192</h></coordinates><panel_attributes>lt=)-
+</panel_attributes><additional_attributes>300;210;300;20;10;20</additional_attributes></element><element><id>Relation</id><coordinates><x>200</x><y>88</y><w>536</w><h>344</h></coordinates><panel_attributes>API Calls</panel_attributes><additional_attributes>10;410;380;10;650;10</additional_attributes></element></diagram>
\ No newline at end of file
diff --git a/UML/deploymentdiagram.uxf b/UML/deploymentdiagram.uxf
new file mode 100644
index 0000000..60349b0
--- /dev/null
+++ b/UML/deploymentdiagram.uxf
@@ -0,0 +1,21 @@
+<diagram program="umletino" version="15.1"><zoom_level>9</zoom_level><element><id>UMLDeployment</id><coordinates><x>324</x><y>189</y><w>270</w><h>180</h></coordinates><panel_attributes>&lt;&lt;device&gt;&gt;
+Web Server</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLGeneric</id><coordinates><x>369</x><y>279</y><w>171</w><h>36</h></coordinates><panel_attributes>symbol=component
+Teacher Dashboard</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLDeployment</id><coordinates><x>270</x><y>477</y><w>324</w><h>270</h></coordinates><panel_attributes>&lt;&lt;Application Server&gt;&gt;
+</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLGeneric</id><coordinates><x>297</x><y>549</y><w>126</w><h>72</h></coordinates><panel_attributes>symbol=component
+Points System</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLGeneric</id><coordinates><x>432</x><y>549</y><w>126</w><h>72</h></coordinates><panel_attributes>symbol=component
+Activities Service</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLGeneric</id><coordinates><x>297</x><y>630</y><w>126</w><h>72</h></coordinates><panel_attributes>symbol=component
+Channel Gateway</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLDeployment</id><coordinates><x>675</x><y>279</y><w>333</w><h>369</h></coordinates><panel_attributes>&lt;&lt;Database&gt;&gt;
+MySQL</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLGeneric</id><coordinates><x>693</x><y>333</y><w>288</w><h>279</h></coordinates><panel_attributes>symbol=artifact
+Tables</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLGeneric</id><coordinates><x>702</x><y>369</y><w>126</w><h>72</h></coordinates><panel_attributes>symbol=component
+Users</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLGeneric</id><coordinates><x>837</x><y>369</y><w>126</w><h>72</h></coordinates><panel_attributes>symbol=component
+Activities</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLGeneric</id><coordinates><x>702</x><y>450</y><w>126</w><h>72</h></coordinates><panel_attributes>symbol=component
+Points</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLGeneric</id><coordinates><x>837</x><y>450</y><w>126</w><h>72</h></coordinates><panel_attributes>symbol=component
+Roles</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLGeneric</id><coordinates><x>702</x><y>531</y><w>126</w><h>72</h></coordinates><panel_attributes>symbol=component
+Modes</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>558</x><y>468</y><w>135</w><h>108</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>130;10;10;100</additional_attributes></element><element><id>UMLGeneric</id><coordinates><x>288</x><y>513</y><w>279</w><h>207</h></coordinates><panel_attributes>symbol=component
+NestJS Backend</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>486</x><y>333</y><w>117</w><h>198</h></coordinates><panel_attributes>lt=&lt;&lt;.
+REST/ WebSocket</panel_attributes><additional_attributes>20;200;10;10</additional_attributes></element><element><id>UMLGeneric</id><coordinates><x>342</x><y>243</y><w>225</w><h>99</h></coordinates><panel_attributes>symbol=component
+Vue.js Frontend</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>297</x><y>378</y><w>342</w><h>36</h></coordinates><panel_attributes>seperater pfeil webcocket
+auch bei component schaui
+
+bg=red
+</panel_attributes><additional_attributes></additional_attributes></element></diagram>
\ No newline at end of file
diff --git a/UML/sequencediagram.uxf b/UML/sequencediagram.uxf
new file mode 100644
index 0000000..8366476
--- /dev/null
+++ b/UML/sequencediagram.uxf
@@ -0,0 +1,88 @@
+<diagram program="umletino" version="15.1"><zoom_level>4</zoom_level><help_text>Space for diagram notes</help_text><element><id>UMLActor</id><coordinates><x>216</x><y>0</y><w>24</w><h>44</h></coordinates><panel_attributes>Student</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLActor</id><coordinates><x>244</x><y>0</y><w>24</w><h>44</h></coordinates><panel_attributes>Teacher</panel_attributes><additional_attributes></additional_attributes></element><element><id>Text</id><coordinates><x>908</x><y>0</y><w>28</w><h>28</h></coordinates><panel_attributes>// Text Element
+// DB Symbol
+_umletcode=
+fg='black';
+bg='#222222';
+drawArc(0,0,width,height*2/5,0,180,true) //Parameters (x, y, width, height, start, extent, open)
+bg='bg';
+drawArc(0,0,width,height*2/5,180,180,true)  //Parameters (x, y, width, height, start, extent, open)
+fg='#929292';
+bg='#222222';
+drawRectangle(0,(height+0.5)/5,width,(height)*3/5-1)  //Parameters (x, y, width, height)
+fg='black'
+drawLine(0,height/5,0,height*4/5) //Parameters (x1, y1, x2, y2)
+drawLine(width,height/5,width,height*4/5) //Parameters (x1, y1, x2, y2)
+bg='bg';
+drawArc(0,height*1/5,width,height*2/5,180,180,true)  //Parameters (x, y, width, height, start, extent, open)
+drawArc(0,height*2/5,width,height*2/5,180,180,true)  //Parameters (x, y, width, height, start, extent, open)
+bg='#222222'
+drawArc(0,height*3/5,width,height*2/5,180,180,true)  //Parameters (x, y, width, height, start, extent, open)
+</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLGeneric</id><coordinates><x>288</x><y>16</y><w>40</w><h>12</h></coordinates><panel_attributes>Frontend
+</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLGeneric</id><coordinates><x>340</x><y>16</y><w>48</w><h>12</h></coordinates><panel_attributes>Channel Gateway
+</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLGeneric</id><coordinates><x>400</x><y>16</y><w>40</w><h>12</h></coordinates><panel_attributes>Actvities Service
+</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLGeneric</id><coordinates><x>452</x><y>16</y><w>56</w><h>12</h></coordinates><panel_attributes>SessionPoints Service</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLGeneric</id><coordinates><x>520</x><y>16</y><w>60</w><h>12</h></coordinates><panel_attributes>SessionPoints Controller</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>224</x><y>40</y><w>12</w><h>1236</h></coordinates><panel_attributes>lt=.</panel_attributes><additional_attributes>10;10;10;3070</additional_attributes></element><element><id>Relation</id><coordinates><x>252</x><y>40</y><w>12</w><h>1236</h></coordinates><panel_attributes>lt=.</panel_attributes><additional_attributes>10;10;10;3070</additional_attributes></element><element><id>Relation</id><coordinates><x>300</x><y>28</y><w>16</w><h>1248</h></coordinates><panel_attributes>lt=.</panel_attributes><additional_attributes>20;10;10;3100</additional_attributes></element><element><id>Relation</id><coordinates><x>356</x><y>24</y><w>16</w><h>1252</h></coordinates><panel_attributes>lt=.</panel_attributes><additional_attributes>20;10;10;3110</additional_attributes></element><element><id>Relation</id><coordinates><x>416</x><y>24</y><w>12</w><h>1252</h></coordinates><panel_attributes>lt=.</panel_attributes><additional_attributes>10;10;10;3110</additional_attributes></element><element><id>Relation</id><coordinates><x>476</x><y>24</y><w>24</w><h>1252</h></coordinates><panel_attributes>lt=.</panel_attributes><additional_attributes>10;10;40;3110</additional_attributes></element><element><id>Relation</id><coordinates><x>544</x><y>24</y><w>20</w><h>1252</h></coordinates><panel_attributes>lt=.</panel_attributes><additional_attributes>10;10;30;3110</additional_attributes></element><element><id>UMLFrame</id><coordinates><x>172</x><y>56</y><w>780</w><h>88</h></coordinates><panel_attributes>Actvitiy Recording</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>920</x><y>24</y><w>12</w><h>1252</h></coordinates><panel_attributes>lt=.</panel_attributes><additional_attributes>10;10;10;3110</additional_attributes></element><element><id>Relation</id><coordinates><x>220</x><y>64</y><w>100</w><h>16</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;-
+Perform activities (audio, whiteboard, etc.)</panel_attributes><additional_attributes>220;20;20;20</additional_attributes></element><element><id>Relation</id><coordinates><x>304</x><y>76</y><w>68</w><h>16</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;-
+Send activity events</panel_attributes><additional_attributes>150;20;10;20</additional_attributes></element><element><id>Relation</id><coordinates><x>360</x><y>88</y><w>68</w><h>16</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;-
+Record activity</panel_attributes><additional_attributes>150;20;10;20</additional_attributes></element><element><id>Relation</id><coordinates><x>416</x><y>100</y><w>516</w><h>16</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;-
+Store activities</panel_attributes><additional_attributes>1270;20;10;20</additional_attributes></element><element><id>Relation</id><coordinates><x>416</x><y>116</y><w>516</w><h>20</h></coordinates><panel_attributes>lt=&lt;..
+Confirmation
+</panel_attributes><additional_attributes>10;20;1270;30</additional_attributes></element><element><id>UMLFrame</id><coordinates><x>172</x><y>144</y><w>780</w><h>252</h></coordinates><panel_attributes>Points Calculation</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>252</x><y>152</y><w>64</w><h>16</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;-
+Close room session</panel_attributes><additional_attributes>140;20;10;20</additional_attributes></element><element><id>Relation</id><coordinates><x>304</x><y>168</y><w>68</w><h>16</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;-
+Close Session request</panel_attributes><additional_attributes>150;20;10;20</additional_attributes></element><element><id>Relation</id><coordinates><x>360</x><y>184</y><w>68</w><h>16</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;-
+Calculate Points</panel_attributes><additional_attributes>150;20;10;20</additional_attributes></element><element><id>Relation</id><coordinates><x>416</x><y>200</y><w>516</w><h>16</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;-
+Load activities for session</panel_attributes><additional_attributes>1270;20;10;20</additional_attributes></element><element><id>Relation</id><coordinates><x>416</x><y>216</y><w>516</w><h>20</h></coordinates><panel_attributes>lt=&lt;..
+Activity records
+</panel_attributes><additional_attributes>10;20;1270;20</additional_attributes></element><element><id>UMLFrame</id><coordinates><x>392</x><y>232</y><w>544</w><h>148</h></coordinates><panel_attributes>Loop
+--
+[For each user in session]</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>416</x><y>248</y><w>88</w><h>24</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;-
+calculateAudioPoints()</panel_attributes><additional_attributes>10;40;80;40;80;10;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>416</x><y>268</y><w>88</w><h>24</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;-
+calculateVideoPoints()</panel_attributes><additional_attributes>10;40;80;40;80;10;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>416</x><y>288</y><w>96</w><h>24</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;-
+calculateBrowserPoints()</panel_attributes><additional_attributes>10;40;80;40;80;10;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>416</x><y>308</y><w>104</w><h>24</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;-
+calculateWhiteboardPoints()</panel_attributes><additional_attributes>10;40;80;40;80;10;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>416</x><y>328</y><w>88</w><h>24</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;-
+calculateNotePoints()</panel_attributes><additional_attributes>10;40;80;40;80;10;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>416</x><y>356</y><w>516</w><h>16</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;-
+Store session points</panel_attributes><additional_attributes>1270;20;10;20</additional_attributes></element><element><id>UMLFrame</id><coordinates><x>172</x><y>396</y><w>780</w><h>292</h></coordinates><panel_attributes>Points Retrieval</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>252</x><y>412</y><w>64</w><h>16</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;-
+View dashboard</panel_attributes><additional_attributes>140;20;10;20</additional_attributes></element><element><id>Relation</id><coordinates><x>304</x><y>432</y><w>252</w><h>16</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;-
+getPointsBySession(sessionId)</panel_attributes><additional_attributes>610;20;10;20</additional_attributes></element><element><id>Relation</id><coordinates><x>480</x><y>452</y><w>76</w><h>16</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;-
+getPointsBySession(sessionId)</panel_attributes><additional_attributes>10;20;170;20</additional_attributes></element><element><id>Relation</id><coordinates><x>480</x><y>496</y><w>452</w><h>20</h></coordinates><panel_attributes>lt=&lt;..
+RoomSessionUsers
+</panel_attributes><additional_attributes>10;20;1110;30</additional_attributes></element><element><id>Relation</id><coordinates><x>480</x><y>476</y><w>452</w><h>20</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;-
+Find RoomSessionUsers</panel_attributes><additional_attributes>1110;30;10;20</additional_attributes></element><element><id>Relation</id><coordinates><x>480</x><y>528</y><w>96</w><h>24</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;-
+getPointsByUser(userId)</panel_attributes><additional_attributes>10;40;80;40;80;10;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>480</x><y>584</y><w>92</w><h>24</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;-
+Sum points by category</panel_attributes><additional_attributes>10;40;80;40;80;10;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>480</x><y>552</y><w>452</w><h>20</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;-
+Find SessionPoints</panel_attributes><additional_attributes>1110;30;10;20</additional_attributes></element><element><id>Relation</id><coordinates><x>480</x><y>568</y><w>452</w><h>20</h></coordinates><panel_attributes>lt=&lt;..
+SessionPoints entries
+</panel_attributes><additional_attributes>10;20;1110;30</additional_attributes></element><element><id>Relation</id><coordinates><x>480</x><y>620</y><w>80</w><h>16</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;-
+Total points</panel_attributes><additional_attributes>180;20;10;20</additional_attributes></element><element><id>UMLFrame</id><coordinates><x>452</x><y>468</y><w>484</w><h>144</h></coordinates><panel_attributes>Loop
+--
+[For each user]</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>304</x><y>640</y><w>256</w><h>16</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;-
+SessionPointsRequestDto</panel_attributes><additional_attributes>10;20;620;20</additional_attributes></element><element><id>Relation</id><coordinates><x>304</x><y>660</y><w>72</w><h>24</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;-
+Display points</panel_attributes><additional_attributes>10;40;80;40;80;10;10;10</additional_attributes></element><element><id>UMLFrame</id><coordinates><x>172</x><y>688</y><w>780</w><h>292</h></coordinates><panel_attributes>Role Assignment</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLGeneric</id><coordinates><x>748</x><y>16</y><w>64</w><h>12</h></coordinates><panel_attributes>ModeAssignment Service</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLGeneric</id><coordinates><x>824</x><y>16</y><w>68</w><h>12</h></coordinates><panel_attributes>ModeAssignment Controller</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLGeneric</id><coordinates><x>592</x><y>16</y><w>64</w><h>12</h></coordinates><panel_attributes>RoleAssignment Service</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLGeneric</id><coordinates><x>668</x><y>16</y><w>68</w><h>12</h></coordinates><panel_attributes>RoleAssignment Controller</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>620</x><y>24</y><w>12</w><h>1252</h></coordinates><panel_attributes>lt=.</panel_attributes><additional_attributes>10;10;10;3110</additional_attributes></element><element><id>Relation</id><coordinates><x>700</x><y>24</y><w>20</w><h>1252</h></coordinates><panel_attributes>lt=.</panel_attributes><additional_attributes>10;10;30;3110</additional_attributes></element><element><id>Relation</id><coordinates><x>776</x><y>24</y><w>16</w><h>1252</h></coordinates><panel_attributes>lt=.</panel_attributes><additional_attributes>10;10;20;3110</additional_attributes></element><element><id>Relation</id><coordinates><x>856</x><y>24</y><w>16</w><h>1252</h></coordinates><panel_attributes>lt=.</panel_attributes><additional_attributes>10;10;20;3110</additional_attributes></element><element><id>Relation</id><coordinates><x>252</x><y>712</y><w>64</w><h>16</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;-
+View dashboard</panel_attributes><additional_attributes>140;20;10;20</additional_attributes></element><element><id>Relation</id><coordinates><x>304</x><y>732</y><w>412</w><h>16</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;-
+assignRoles(sessionId)</panel_attributes><additional_attributes>1010;20;10;20</additional_attributes></element><element><id>Relation</id><coordinates><x>484</x><y>816</y><w>448</w><h>20</h></coordinates><panel_attributes>lt=&lt;..
+Points records
+</panel_attributes><additional_attributes>10;20;1100;20</additional_attributes></element><element><id>Relation</id><coordinates><x>620</x><y>752</y><w>96</w><h>16</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;-
+assignRoles(sessionId)</panel_attributes><additional_attributes>10;20;220;20</additional_attributes></element><element><id>Relation</id><coordinates><x>484</x><y>772</y><w>148</w><h>16</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;-
+getPointsBySession(sessionId)</panel_attributes><additional_attributes>10;20;350;20</additional_attributes></element><element><id>Relation</id><coordinates><x>484</x><y>792</y><w>448</w><h>16</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;-
+Query points for session </panel_attributes><additional_attributes>1100;20;10;20</additional_attributes></element><element><id>Relation</id><coordinates><x>488</x><y>840</y><w>144</w><h>16</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;-
+Points by User</panel_attributes><additional_attributes>340;20;10;20</additional_attributes></element><element><id>Relation</id><coordinates><x>620</x><y>860</y><w>80</w><h>24</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;-
+determineRoles()</panel_attributes><additional_attributes>10;40;80;40;80;10;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>620</x><y>884</y><w>312</w><h>16</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;-
+Store user roles</panel_attributes><additional_attributes>760;20;10;20</additional_attributes></element><element><id>Relation</id><coordinates><x>620</x><y>908</y><w>312</w><h>20</h></coordinates><panel_attributes>lt=&lt;..
+Confirmation
+</panel_attributes><additional_attributes>10;20;760;20</additional_attributes></element><element><id>Relation</id><coordinates><x>620</x><y>932</y><w>100</w><h>16</h></coordinates><panel_attributes>lt=&lt;..
+RoleAssignmentDto[]</panel_attributes><additional_attributes>230;20;10;20</additional_attributes></element><element><id>Relation</id><coordinates><x>304</x><y>956</y><w>412</w><h>20</h></coordinates><panel_attributes>lt=&lt;..
+User roles
+</panel_attributes><additional_attributes>10;20;1010;20</additional_attributes></element><element><id>UMLFrame</id><coordinates><x>172</x><y>980</y><w>780</w><h>288</h></coordinates><panel_attributes>Mode Assignment</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>252</x><y>1000</y><w>64</w><h>16</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;-
+View dashboard</panel_attributes><additional_attributes>140;20;10;20</additional_attributes></element><element><id>Relation</id><coordinates><x>304</x><y>1024</y><w>568</w><h>16</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;-
+assignModes(sessionId)</panel_attributes><additional_attributes>1400;20;10;20</additional_attributes></element><element><id>Relation</id><coordinates><x>300</x><y>1240</y><w>628</w><h>16</h></coordinates><panel_attributes>lt=&lt;..
+Session mode</panel_attributes><additional_attributes>10;20;1550;20</additional_attributes></element><element><id>Relation</id><coordinates><x>780</x><y>1048</y><w>92</w><h>16</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;-
+assignMode(sessionId)</panel_attributes><additional_attributes>10;20;210;20</additional_attributes></element><element><id>Relation</id><coordinates><x>488</x><y>1072</y><w>304</w><h>16</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;-
+getPointsBySession(sessionId)</panel_attributes><additional_attributes>10;20;740;20</additional_attributes></element><element><id>Relation</id><coordinates><x>488</x><y>1092</y><w>444</w><h>16</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;-
+Query points for session </panel_attributes><additional_attributes>1090;20;10;20</additional_attributes></element><element><id>Relation</id><coordinates><x>488</x><y>1112</y><w>448</w><h>20</h></coordinates><panel_attributes>lt=&lt;..
+Points records
+</panel_attributes><additional_attributes>10;20;1100;20</additional_attributes></element><element><id>Relation</id><coordinates><x>488</x><y>1132</y><w>304</w><h>16</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;-
+Points by User</panel_attributes><additional_attributes>740;20;10;20</additional_attributes></element><element><id>Relation</id><coordinates><x>620</x><y>1152</y><w>80</w><h>24</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;-
+determineMode()</panel_attributes><additional_attributes>10;40;80;40;80;10;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>780</x><y>1180</y><w>152</w><h>16</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;-
+Store session mode</panel_attributes><additional_attributes>360;20;10;20</additional_attributes></element><element><id>Relation</id><coordinates><x>780</x><y>1200</y><w>152</w><h>20</h></coordinates><panel_attributes>lt=&lt;..
+Confirmation
+</panel_attributes><additional_attributes>10;20;360;20</additional_attributes></element><element><id>Relation</id><coordinates><x>620</x><y>1220</y><w>100</w><h>16</h></coordinates><panel_attributes>lt=&lt;..
+ModeAssignmentDto[]</panel_attributes><additional_attributes>230;20;10;20</additional_attributes></element></diagram>
\ No newline at end of file
diff --git a/backend b/backend
index 74ae5e0..cc5aadf 160000
--- a/backend
+++ b/backend
@@ -1 +1 @@
-Subproject commit 74ae5e053309c78cee6fd8f98f8a7ad272781260
+Subproject commit cc5aadff3e21aa1075b54ed3fc30802ff5d53091
diff --git a/frontend b/frontend
index 9995b40..b15796c 160000
--- a/frontend
+++ b/frontend
@@ -1 +1 @@
-Subproject commit 9995b40aee8ee5b46a8d766e7594137ecc11873f
+Subproject commit b15796cfa5e1bb1001a4b161bb5499e8190c3ae0
-- 
GitLab