UML(Classes)(1).svg 51 KB

1234
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- Do not edit this file with editors other than draw.io -->
  3. <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
  4. <svg xmlns="http://www.w3.org/2000/svg" style="background: transparent; background-color: transparent; color-scheme: light dark;" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="641px" height="511px" viewBox="0 0 641 511" content="&lt;mxfile host=&quot;app.diagrams.net&quot; agent=&quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:149.0) Gecko/20100101 Firefox/149.0&quot; scale=&quot;1&quot; border=&quot;0&quot;&gt;&#xA; &lt;diagram name=&quot;Страница-1&quot; id=&quot;Wx3iRwWdJO6kyBYsCdXE&quot;&gt;&#xA; &lt;mxGraphModel dx=&quot;1417&quot; dy=&quot;786&quot; grid=&quot;1&quot; gridSize=&quot;10&quot; guides=&quot;1&quot; tooltips=&quot;1&quot; connect=&quot;1&quot; arrows=&quot;1&quot; fold=&quot;1&quot; page=&quot;1&quot; pageScale=&quot;1&quot; pageWidth=&quot;827&quot; pageHeight=&quot;1169&quot; math=&quot;0&quot; shadow=&quot;0&quot;&gt;&#xA; &lt;root&gt;&#xA; &lt;mxCell id=&quot;0&quot; /&gt;&#xA; &lt;mxCell id=&quot;1&quot; parent=&quot;0&quot; /&gt;&#xA; &lt;mxCell id=&quot;aSgrnOahvJPPHDUxui15-1&quot; connectable=&quot;0&quot; parent=&quot;1&quot; style=&quot;group&quot; value=&quot;&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;230&quot; width=&quot;120&quot; x=&quot;40&quot; y=&quot;110&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;aSgrnOahvJPPHDUxui15-2&quot; parent=&quot;aSgrnOahvJPPHDUxui15-1&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;&quot; value=&quot;&amp;lt;div&amp;gt;- user_id: int&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;- full_name: string&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;- email: string&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;- login: string&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;- password_hash: string&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;- role_id: int&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;- department_id: int&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;- status: string&amp;lt;/div&amp;gt;&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;140&quot; width=&quot;120&quot; y=&quot;30&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;aSgrnOahvJPPHDUxui15-3&quot; parent=&quot;aSgrnOahvJPPHDUxui15-1&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;&quot; value=&quot;User&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;30&quot; width=&quot;120&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;aSgrnOahvJPPHDUxui15-4&quot; parent=&quot;aSgrnOahvJPPHDUxui15-1&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;&quot; value=&quot;&amp;lt;div&amp;gt;+ getRole(): Role&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;+ authenticate(): boolean&amp;lt;/div&amp;gt;&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;60&quot; width=&quot;120&quot; y=&quot;170&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;aSgrnOahvJPPHDUxui15-5&quot; connectable=&quot;0&quot; parent=&quot;1&quot; style=&quot;group&quot; value=&quot;&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;230&quot; width=&quot;170&quot; x=&quot;290&quot; y=&quot;110&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;aSgrnOahvJPPHDUxui15-6&quot; parent=&quot;aSgrnOahvJPPHDUxui15-5&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;&quot; value=&quot;&amp;lt;div&amp;gt;&amp;lt;span&amp;gt;- task_id: int&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;span&amp;gt;- title: string&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;span&amp;gt;- description: string&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;span&amp;gt;- creator_id: int&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;span&amp;gt;- executor_id: int&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;span&amp;gt;- status_id: int&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;span&amp;gt;- priority: string&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;span&amp;gt;- created_at: datetime&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;span&amp;gt;- due_date: datetime&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;140&quot; width=&quot;170&quot; y=&quot;30&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;aSgrnOahvJPPHDUxui15-7&quot; parent=&quot;aSgrnOahvJPPHDUxui15-5&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;&quot; value=&quot;Task&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;30&quot; width=&quot;170&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;aSgrnOahvJPPHDUxui15-8&quot; parent=&quot;aSgrnOahvJPPHDUxui15-5&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;&quot; value=&quot;&amp;lt;div&amp;gt;&amp;lt;span&amp;gt;+ assignUser(user): void&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;span&amp;gt;+ updateStatus(status): void&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;span&amp;gt;+ setDeadline(date): void&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;60&quot; width=&quot;170&quot; y=&quot;170&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;aSgrnOahvJPPHDUxui15-9&quot; connectable=&quot;0&quot; parent=&quot;1&quot; style=&quot;group&quot; value=&quot;&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;150&quot; width=&quot;120&quot; x=&quot;560&quot; y=&quot;110&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;aSgrnOahvJPPHDUxui15-10&quot; parent=&quot;aSgrnOahvJPPHDUxui15-9&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;&quot; value=&quot;&amp;lt;div&amp;gt;&amp;lt;span&amp;gt;- status_id: int&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;span&amp;gt;- status_name: string&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;91.30434782608697&quot; width=&quot;120&quot; y=&quot;19.56521739130435&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;aSgrnOahvJPPHDUxui15-11&quot; parent=&quot;aSgrnOahvJPPHDUxui15-9&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;&quot; value=&quot;Status&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;19.56521739130435&quot; width=&quot;120&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;aSgrnOahvJPPHDUxui15-12&quot; parent=&quot;aSgrnOahvJPPHDUxui15-9&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;&quot; value=&quot;+ getName(): string&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;39.1304347826087&quot; width=&quot;120&quot; y=&quot;110.86956521739131&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;aSgrnOahvJPPHDUxui15-13&quot; connectable=&quot;0&quot; parent=&quot;1&quot; style=&quot;group&quot; value=&quot;&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;190&quot; width=&quot;120&quot; x=&quot;315&quot; y=&quot;430&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;aSgrnOahvJPPHDUxui15-14&quot; parent=&quot;aSgrnOahvJPPHDUxui15-13&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;&quot; value=&quot;&amp;lt;span&amp;gt;- comment_id: int&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span&amp;gt;- task_id: int&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span&amp;gt;- author_id: int&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span&amp;gt;- text: string&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span&amp;gt;- created_at: datetime&amp;lt;/span&amp;gt;&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;115.65217391304348&quot; width=&quot;120&quot; y=&quot;24.782608695652176&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;aSgrnOahvJPPHDUxui15-15&quot; parent=&quot;aSgrnOahvJPPHDUxui15-13&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;&quot; value=&quot;Comment&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;24.782608695652176&quot; width=&quot;120&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;aSgrnOahvJPPHDUxui15-16&quot; parent=&quot;aSgrnOahvJPPHDUxui15-13&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;&quot; value=&quot;+ addComment(): void&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;49.56521739130435&quot; width=&quot;120&quot; y=&quot;140.43478260869566&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;aSgrnOahvJPPHDUxui15-17&quot; connectable=&quot;0&quot; parent=&quot;1&quot; style=&quot;group&quot; value=&quot;&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;190&quot; width=&quot;120&quot; x=&quot;560&quot; y=&quot;430&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;aSgrnOahvJPPHDUxui15-18&quot; parent=&quot;aSgrnOahvJPPHDUxui15-17&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;&quot; value=&quot;&amp;lt;span&amp;gt;- report_id: int&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span&amp;gt;- report_type: string&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span&amp;gt;- period_start: datetime&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span&amp;gt;- period_end: datetime&amp;lt;/span&amp;gt;&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;115.65217391304348&quot; width=&quot;120&quot; y=&quot;24.782608695652176&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;aSgrnOahvJPPHDUxui15-19&quot; parent=&quot;aSgrnOahvJPPHDUxui15-17&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;&quot; value=&quot;Report&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;24.782608695652176&quot; width=&quot;120&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;aSgrnOahvJPPHDUxui15-20&quot; parent=&quot;aSgrnOahvJPPHDUxui15-17&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;&quot; value=&quot;+ generate(): Report&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;49.56521739130435&quot; width=&quot;120&quot; y=&quot;140.43478260869566&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;aSgrnOahvJPPHDUxui15-21&quot; connectable=&quot;0&quot; parent=&quot;1&quot; style=&quot;group&quot; value=&quot;&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;190&quot; width=&quot;120&quot; x=&quot;40&quot; y=&quot;430&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;aSgrnOahvJPPHDUxui15-22&quot; parent=&quot;aSgrnOahvJPPHDUxui15-21&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;&quot; value=&quot;&amp;lt;span&amp;gt;- event_id: int&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span&amp;gt;- user_id: int&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span&amp;gt;- title: string&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span&amp;gt;- start_datetime: datetime&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span&amp;gt;- end_datetime: datetime&amp;lt;/span&amp;gt;&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;115.65217391304348&quot; width=&quot;120&quot; y=&quot;24.782608695652176&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;aSgrnOahvJPPHDUxui15-23&quot; parent=&quot;aSgrnOahvJPPHDUxui15-21&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;&quot; value=&quot;Event&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;24.782608695652176&quot; width=&quot;120&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;aSgrnOahvJPPHDUxui15-24&quot; parent=&quot;aSgrnOahvJPPHDUxui15-21&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;&quot; value=&quot;+ createEvent(): void&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;49.56521739130435&quot; width=&quot;120&quot; y=&quot;140.43478260869566&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;aSgrnOahvJPPHDUxui15-25&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;aSgrnOahvJPPHDUxui15-2&quot; style=&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;&quot; target=&quot;aSgrnOahvJPPHDUxui15-6&quot;&gt;&#xA; &lt;mxGeometry relative=&quot;1&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;aSgrnOahvJPPHDUxui15-26&quot; parent=&quot;1&quot; style=&quot;text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;&quot; value=&quot;creates&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;30&quot; width=&quot;60&quot; x=&quot;180&quot; y=&quot;180&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;aSgrnOahvJPPHDUxui15-27&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;aSgrnOahvJPPHDUxui15-6&quot; style=&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.75;exitDx=0;exitDy=0;entryX=1;entryY=0.75;entryDx=0;entryDy=0;&quot; target=&quot;aSgrnOahvJPPHDUxui15-2&quot;&gt;&#xA; &lt;mxGeometry relative=&quot;1&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;aSgrnOahvJPPHDUxui15-28&quot; parent=&quot;1&quot; style=&quot;text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;&quot; value=&quot;assigned to executor&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;30&quot; width=&quot;120&quot; x=&quot;170&quot; y=&quot;220&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;aSgrnOahvJPPHDUxui15-29&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;aSgrnOahvJPPHDUxui15-6&quot; style=&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.881;entryDx=0;entryDy=0;entryPerimeter=0;&quot; target=&quot;aSgrnOahvJPPHDUxui15-10&quot;&gt;&#xA; &lt;mxGeometry relative=&quot;1&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;aSgrnOahvJPPHDUxui15-30&quot; parent=&quot;1&quot; style=&quot;text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;&quot; value=&quot;has&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;30&quot; width=&quot;60&quot; x=&quot;480&quot; y=&quot;180&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;aSgrnOahvJPPHDUxui15-31&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;aSgrnOahvJPPHDUxui15-8&quot; style=&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;startArrow=diamond;startFill=1;&quot; target=&quot;aSgrnOahvJPPHDUxui15-15&quot;&gt;&#xA; &lt;mxGeometry relative=&quot;1&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;aSgrnOahvJPPHDUxui15-32&quot; parent=&quot;1&quot; style=&quot;text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;&quot; value=&quot;contains&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;30&quot; width=&quot;60&quot; x=&quot;310&quot; y=&quot;370&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;aSgrnOahvJPPHDUxui15-33&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;aSgrnOahvJPPHDUxui15-8&quot; style=&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=1;exitDx=0;exitDy=0;dashed=1;dashPattern=8 8;startArrow=classic;startFill=1;endArrow=none;endFill=0;&quot; target=&quot;aSgrnOahvJPPHDUxui15-19&quot;&gt;&#xA; &lt;mxGeometry relative=&quot;1&quot; as=&quot;geometry&quot;&gt;&#xA; &lt;Array as=&quot;points&quot;&gt;&#xA; &lt;mxPoint x=&quot;417&quot; y=&quot;385&quot; /&gt;&#xA; &lt;mxPoint x=&quot;620&quot; y=&quot;385&quot; /&gt;&#xA; &lt;/Array&gt;&#xA; &lt;/mxGeometry&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;aSgrnOahvJPPHDUxui15-34&quot; parent=&quot;1&quot; style=&quot;text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;&quot; value=&quot;uses&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;30&quot; width=&quot;60&quot; x=&quot;500&quot; y=&quot;360&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;aSgrnOahvJPPHDUxui15-35&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;aSgrnOahvJPPHDUxui15-4&quot; style=&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;&quot; target=&quot;aSgrnOahvJPPHDUxui15-23&quot;&gt;&#xA; &lt;mxGeometry relative=&quot;1&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;aSgrnOahvJPPHDUxui15-36&quot; parent=&quot;1&quot; style=&quot;text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;&quot; value=&quot;creates&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;30&quot; width=&quot;60&quot; x=&quot;100&quot; y=&quot;370&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;/root&gt;&#xA; &lt;/mxGraphModel&gt;&#xA; &lt;/diagram&gt;&#xA;&lt;/mxfile&gt;&#xA;"><defs/><g><g data-cell-id="0"><g data-cell-id="1"><g data-cell-id="aSgrnOahvJPPHDUxui15-1"><g transform="translate(0.5,0.5)"/><g data-cell-id="aSgrnOahvJPPHDUxui15-2"><g transform="translate(0.5,0.5)"><rect x="0" y="30" width="120" height="140" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 100px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><div>- user_id: int</div><div>- full_name: string</div><div>- email: string</div><div>- login: string</div><div>- password_hash: string</div><div>- role_id: int</div><div>- department_id: int</div><div>- status: string</div></div></div></div></foreignObject><text x="60" y="104" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">- user_id: int...</text></switch></g></g></g><g data-cell-id="aSgrnOahvJPPHDUxui15-3"><g transform="translate(0.5,0.5)"><rect x="0" y="0" width="120" height="30" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 15px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">User</div></div></div></foreignObject><text x="60" y="19" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">User</text></switch></g></g></g><g data-cell-id="aSgrnOahvJPPHDUxui15-4"><g transform="translate(0.5,0.5)"><rect x="0" y="170" width="120" height="60" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 200px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><div>+ getRole(): Role</div><div>+ authenticate(): boolean</div></div></div></div></foreignObject><text x="60" y="204" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">+ getRole(): Role...</text></switch></g></g></g></g><g data-cell-id="aSgrnOahvJPPHDUxui15-5"><g transform="translate(0.5,0.5)"/><g data-cell-id="aSgrnOahvJPPHDUxui15-6"><g transform="translate(0.5,0.5)"><rect x="250" y="30" width="170" height="140" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 168px; height: 1px; padding-top: 100px; margin-left: 251px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><div><span>- task_id: int</span></div><div><span>- title: string</span></div><div><span>- description: string</span></div><div><span>- creator_id: int</span></div><div><span>- executor_id: int</span></div><div><span>- status_id: int</span></div><div><span>- priority: string</span></div><div><span>- created_at: datetime</span><span></span></div><div><span></span></div><div><span>- due_date: datetime</span></div></div></div></div></foreignObject><text x="335" y="104" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">- task_id: int...</text></switch></g></g></g><g data-cell-id="aSgrnOahvJPPHDUxui15-7"><g transform="translate(0.5,0.5)"><rect x="250" y="0" width="170" height="30" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 168px; height: 1px; padding-top: 15px; margin-left: 251px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Task</div></div></div></foreignObject><text x="335" y="19" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">Task</text></switch></g></g></g><g data-cell-id="aSgrnOahvJPPHDUxui15-8"><g transform="translate(0.5,0.5)"><rect x="250" y="170" width="170" height="60" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 168px; height: 1px; padding-top: 200px; margin-left: 251px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><div><span>+ assignUser(user): void</span></div><div><span>+ updateStatus(status): void</span><span></span></div><div><span></span></div><div><span>+ setDeadline(date): void</span></div></div></div></div></foreignObject><text x="335" y="204" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">+ assignUser(user): void...</text></switch></g></g></g></g><g data-cell-id="aSgrnOahvJPPHDUxui15-9"><g transform="translate(0.5,0.5)"/><g data-cell-id="aSgrnOahvJPPHDUxui15-10"><g transform="translate(0.5,0.5)"><rect x="520" y="19.57" width="120" height="91.3" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 65px; margin-left: 521px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><div><span>- status_id: int</span><span><br /></span></div><div><span>- status_name: string</span></div></div></div></div></foreignObject><text x="580" y="69" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">- status_id: int...</text></switch></g></g></g><g data-cell-id="aSgrnOahvJPPHDUxui15-11"><g transform="translate(0.5,0.5)"><rect x="520" y="0" width="120" height="19.57" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 10px; margin-left: 521px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Status</div></div></div></foreignObject><text x="580" y="13" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">Status</text></switch></g></g></g><g data-cell-id="aSgrnOahvJPPHDUxui15-12"><g transform="translate(0.5,0.5)"><rect x="520" y="110.87" width="120" height="39.13" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 130px; margin-left: 521px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">+ getName(): string</div></div></div></foreignObject><text x="580" y="134" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">+ getName(): string</text></switch></g></g></g></g><g data-cell-id="aSgrnOahvJPPHDUxui15-13"><g transform="translate(0.5,0.5)"/><g data-cell-id="aSgrnOahvJPPHDUxui15-14"><g transform="translate(0.5,0.5)"><rect x="275" y="344.78" width="120" height="115.65" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 403px; margin-left: 276px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span>- comment_id: int</span><br /><span>- task_id: int</span><br /><span>- author_id: int</span><br /><span>- text: string</span><br /><span>- created_at: datetime</span></div></div></div></foreignObject><text x="335" y="406" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">- comment_id: int...</text></switch></g></g></g><g data-cell-id="aSgrnOahvJPPHDUxui15-15"><g transform="translate(0.5,0.5)"><rect x="275" y="320" width="120" height="24.78" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 332px; margin-left: 276px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Comment</div></div></div></foreignObject><text x="335" y="336" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">Comment</text></switch></g></g></g><g data-cell-id="aSgrnOahvJPPHDUxui15-16"><g transform="translate(0.5,0.5)"><rect x="275" y="460.43" width="120" height="49.57" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 485px; margin-left: 276px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">+ addComment(): void</div></div></div></foreignObject><text x="335" y="489" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">+ addComment(): void</text></switch></g></g></g></g><g data-cell-id="aSgrnOahvJPPHDUxui15-17"><g transform="translate(0.5,0.5)"/><g data-cell-id="aSgrnOahvJPPHDUxui15-18"><g transform="translate(0.5,0.5)"><rect x="520" y="344.78" width="120" height="115.65" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 403px; margin-left: 521px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span>- report_id: int</span><br /><span>- report_type: string</span><br /><span>- period_start: datetime</span><br /><span>- period_end: datetime</span></div></div></div></foreignObject><text x="580" y="406" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">- report_id: int...</text></switch></g></g></g><g data-cell-id="aSgrnOahvJPPHDUxui15-19"><g transform="translate(0.5,0.5)"><rect x="520" y="320" width="120" height="24.78" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 332px; margin-left: 521px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Report</div></div></div></foreignObject><text x="580" y="336" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">Report</text></switch></g></g></g><g data-cell-id="aSgrnOahvJPPHDUxui15-20"><g transform="translate(0.5,0.5)"><rect x="520" y="460.43" width="120" height="49.57" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 485px; margin-left: 521px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">+ generate(): Report</div></div></div></foreignObject><text x="580" y="489" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">+ generate(): Report</text></switch></g></g></g></g><g data-cell-id="aSgrnOahvJPPHDUxui15-21"><g transform="translate(0.5,0.5)"/><g data-cell-id="aSgrnOahvJPPHDUxui15-22"><g transform="translate(0.5,0.5)"><rect x="0" y="344.78" width="120" height="115.65" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 403px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span>- event_id: int</span><br /><span>- user_id: int</span><br /><span>- title: string</span><br /><span>- start_datetime: datetime</span><br /><span>- end_datetime: datetime</span></div></div></div></foreignObject><text x="60" y="406" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">- event_id: int...</text></switch></g></g></g><g data-cell-id="aSgrnOahvJPPHDUxui15-23"><g transform="translate(0.5,0.5)"><rect x="0" y="320" width="120" height="24.78" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 332px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Event</div></div></div></foreignObject><text x="60" y="336" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">Event</text></switch></g></g></g><g data-cell-id="aSgrnOahvJPPHDUxui15-24"><g transform="translate(0.5,0.5)"><rect x="0" y="460.43" width="120" height="49.57" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 485px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">+ createEvent(): void</div></div></div></foreignObject><text x="60" y="489" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">+ createEvent(): void</text></switch></g></g></g></g><g data-cell-id="aSgrnOahvJPPHDUxui15-25"><g transform="translate(0.5,0.5)"><path d="M 120 100 L 243.63 100" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 248.88 100 L 241.88 103.5 L 243.63 100 L 241.88 96.5 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="aSgrnOahvJPPHDUxui15-26"><g transform="translate(0.5,0.5)"><rect x="140" y="70" width="60" height="30" fill="none" stroke="none" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 85px; margin-left: 141px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">creates</div></div></div></foreignObject><text x="170" y="89" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">creates</text></switch></g></g></g><g data-cell-id="aSgrnOahvJPPHDUxui15-27"><g transform="translate(0.5,0.5)"><path d="M 250 135 L 126.37 135" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 121.12 135 L 128.12 131.5 L 126.37 135 L 128.12 138.5 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="aSgrnOahvJPPHDUxui15-28"><g transform="translate(0.5,0.5)"><rect x="130" y="110" width="120" height="30" fill="none" stroke="none" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 125px; margin-left: 131px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">assigned to executor</div></div></div></foreignObject><text x="190" y="129" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">assigned to executor</text></switch></g></g></g><g data-cell-id="aSgrnOahvJPPHDUxui15-29"><g transform="translate(0.5,0.5)"><path d="M 420 100 L 513.63 100" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 518.88 100 L 511.88 103.5 L 513.63 100 L 511.88 96.5 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="aSgrnOahvJPPHDUxui15-30"><g transform="translate(0.5,0.5)"><rect x="440" y="70" width="60" height="30" fill="none" stroke="none" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 85px; margin-left: 441px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">has</div></div></div></foreignObject><text x="470" y="89" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">has</text></switch></g></g></g><g data-cell-id="aSgrnOahvJPPHDUxui15-31"><g transform="translate(0.5,0.5)"><path d="M 335 237.71 L 335 313.63" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 335 230.71 L 338.5 234.21 L 335 237.71 L 331.5 234.21 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 335 318.88 L 331.5 311.88 L 335 313.63 L 338.5 311.88 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="aSgrnOahvJPPHDUxui15-32"><g transform="translate(0.5,0.5)"><rect x="270" y="260" width="60" height="30" fill="none" stroke="none" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 275px; margin-left: 271px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">contains</div></div></div></foreignObject><text x="300" y="279" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">contains</text></switch></g></g></g><g data-cell-id="aSgrnOahvJPPHDUxui15-33"><g transform="translate(0.5,0.5)"><path d="M 377.5 236.37 L 377.48 275.03 L 580.03 275.03 L 580.03 320" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" stroke-dasharray="8 8" pointer-events="stroke"/><path d="M 377.5 231.12 L 381 238.12 L 377.5 236.37 L 374 238.12 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="aSgrnOahvJPPHDUxui15-34"><g transform="translate(0.5,0.5)"><rect x="460" y="250" width="60" height="30" fill="none" stroke="none" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 265px; margin-left: 461px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">uses</div></div></div></foreignObject><text x="490" y="269" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">uses</text></switch></g></g></g><g data-cell-id="aSgrnOahvJPPHDUxui15-35"><g transform="translate(0.5,0.5)"><path d="M 60 230 L 60 313.63" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 60 318.88 L 56.5 311.88 L 60 313.63 L 63.5 311.88 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="aSgrnOahvJPPHDUxui15-36"><g transform="translate(0.5,0.5)"><rect x="60" y="260" width="60" height="30" fill="none" stroke="none" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 275px; margin-left: 61px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">creates</div></div></div></foreignObject><text x="90" y="279" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">creates</text></switch></g></g></g></g></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.drawio.com/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg>