Adding Seat plan component and database tables

This commit is contained in:
2024-10-01 15:37:08 +02:00
parent d6997229c4
commit bd53b8edfc
33 changed files with 880 additions and 204 deletions

View File

@@ -1,77 +1,80 @@
<mxfile host="Electron" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/24.7.8 Chrome/128.0.6613.36 Electron/32.0.1 Safari/537.36" version="24.7.8">
<diagram name="Page-1" id="WevClHWmhzPAQ7FDN5po">
<mxGraphModel dx="3263" dy="534" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0">
<mxGraphModel dx="3585" dy="1546" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="XtTKw7a9ly-3XTzy1tri-3" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;&lt;i&gt;tourId: Number&lt;/i&gt;&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
<mxGeometry x="-639.3299999999999" y="480" width="160" height="30" as="geometry" />
<mxCell id="XtTKw7a9ly-3XTzy1tri-3" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;&lt;i&gt;tourId: Number&lt;/i&gt;&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="-640.9199999999997" y="350" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-2" value="&lt;blockquote style=&quot;margin: 0px; border: none; padding: 0px;&quot;&gt;&lt;b&gt;&lt;u&gt;Bands&lt;/u&gt;&lt;/b&gt;&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=center;fillColor=#008a00;strokeColor=default;fontColor=#ffffff;" parent="1" vertex="1">
<mxGeometry x="-639.33" y="540" width="160" height="30" as="geometry" />
<mxGeometry x="-159.55" y="80" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-3" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;&lt;u&gt;id:&amp;nbsp;&lt;/u&gt;&lt;u style=&quot;background-color: initial;&quot;&gt;Number&lt;/u&gt;&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="-639.33" y="570" width="160" height="30" as="geometry" />
<mxGeometry x="-159.55" y="110" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-4" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;name: String&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="-639.33" y="600" width="160" height="30" as="geometry" />
<mxGeometry x="-159.55" y="140" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-5" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#2072B8;" parent="1" vertex="1">
<mxGeometry x="-499.04" y="575" width="9.43" height="20" as="geometry" />
<mxGeometry x="-19.26000000000004" y="115" width="9.43" height="20" as="geometry" />
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-6" value="1" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;rotation=0;gradientColor=#223548;strokeColor=none;gradientDirection=east;fillColor=#5b738b;rounded=0;pointerEvents=0;fontFamily=Helvetica;fontSize=16;fontColor=#FFFFFF;spacingTop=4;spacingBottom=4;spacingLeft=4;spacingRight=4;points=[];fontStyle=1" parent="1" vertex="1">
<mxGeometry x="-504.33" y="605" width="20" height="20" as="geometry" />
<mxGeometry x="-24.550000000000004" y="145" width="20" height="20" as="geometry" />
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-8" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;foundingYear: Number&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="-639.33" y="630" width="160" height="30" as="geometry" />
<mxGeometry x="-159.55" y="170" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-9" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;descriptionEn: String&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="-639.33" y="660" width="160" height="30" as="geometry" />
<mxGeometry x="-159.55" y="200" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-10" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;&lt;i&gt;genreId: Number&lt;/i&gt;&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="-639.33" y="780" width="160" height="30" as="geometry" />
<mxGeometry x="-159.55" y="320" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-11" value="&lt;blockquote style=&quot;margin: 0px; border: none; padding: 0px;&quot;&gt;&lt;b&gt;&lt;u&gt;Genres&lt;/u&gt;&lt;/b&gt;&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=center;fillColor=#008a00;strokeColor=default;fontColor=#ffffff;" parent="1" vertex="1">
<mxGeometry x="-400" y="750" width="160" height="30" as="geometry" />
<mxGeometry x="80.27" y="345" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-12" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;&lt;u&gt;id:&amp;nbsp;&lt;/u&gt;&lt;u style=&quot;background-color: initial;&quot;&gt;Number&lt;/u&gt;&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="-400" y="780" width="160" height="30" as="geometry" />
<mxGeometry x="80.27" y="375" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-13" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#2072B8;" parent="1" vertex="1">
<mxGeometry x="-258.71000000000004" y="785" width="9.43" height="20" as="geometry" />
<mxGeometry x="221.5599999999999" y="380" width="9.43" height="20" as="geometry" />
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-14" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;name: String&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="-400" y="810" width="160" height="30" as="geometry" />
<mxGeometry x="80.27" y="405" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-15" value="1" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;rotation=0;gradientColor=#223548;strokeColor=none;gradientDirection=east;fillColor=#5b738b;rounded=0;pointerEvents=0;fontFamily=Helvetica;fontSize=16;fontColor=#FFFFFF;spacingTop=4;spacingBottom=4;spacingLeft=4;spacingRight=4;points=[];fontStyle=1" parent="1" vertex="1">
<mxGeometry x="-264" y="815" width="20" height="20" as="geometry" />
<mxGeometry x="216.26999999999998" y="410" width="20" height="20" as="geometry" />
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-17" value="&lt;blockquote style=&quot;margin: 0px; border: none; padding: 0px;&quot;&gt;&lt;b&gt;&lt;u&gt;Members&lt;/u&gt;&lt;/b&gt;&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=center;fillColor=#008a00;strokeColor=default;fontColor=#ffffff;" parent="1" vertex="1">
<mxGeometry x="-400" y="560" width="160" height="30" as="geometry" />
<mxGeometry x="80.27" y="160" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-18" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;&lt;u&gt;id:&amp;nbsp;&lt;/u&gt;&lt;u style=&quot;background-color: initial;&quot;&gt;Number&lt;/u&gt;&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="-400" y="590" width="160" height="30" as="geometry" />
<mxGeometry x="80.27" y="190" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-19" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#2072B8;" parent="1" vertex="1">
<mxGeometry x="-258.71000000000004" y="595" width="9.43" height="20" as="geometry" />
<mxGeometry x="221.5599999999999" y="195" width="9.43" height="20" as="geometry" />
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-20" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;name: String&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="-400" y="620" width="160" height="30" as="geometry" />
<mxGeometry x="80.27" y="220" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-22" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;&lt;i&gt;bandId: Number&lt;/i&gt;&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="-400" y="650" width="160" height="30" as="geometry" />
<mxGeometry x="80.27" y="250" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-23" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#CCCCCC;" parent="1" vertex="1">
<mxGeometry x="-258.71000000000004" y="655" width="9.43" height="20" as="geometry" />
<mxGeometry x="221.5599999999999" y="255" width="9.43" height="20" as="geometry" />
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-24" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#CCCCCC;" parent="1" vertex="1">
<mxGeometry x="-499.05" y="785" width="9.43" height="20" as="geometry" />
<mxGeometry x="-19.27000000000003" y="325" width="9.43" height="20" as="geometry" />
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-25" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="EQeajuEG8KHzwlrw_xps-10" target="EQeajuEG8KHzwlrw_xps-12" edge="1">
<mxGeometry x="389.35999999999996" y="350" as="geometry">
<mxPoint x="-219.17" y="754" as="sourcePoint" />
<mxPoint x="-139.17" y="884" as="targetPoint" />
<Array as="points" />
<Array as="points">
<mxPoint x="40" y="335" />
<mxPoint x="40" y="390" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-26" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="EQeajuEG8KHzwlrw_xps-25" connectable="0" vertex="1">
@@ -79,7 +82,7 @@
<mxPoint x="3" y="-28" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-27" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="EQeajuEG8KHzwlrw_xps-25" connectable="0" vertex="1">
<mxCell id="EQeajuEG8KHzwlrw_xps-27" value="0..n" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="EQeajuEG8KHzwlrw_xps-25" connectable="0" vertex="1">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="-4" y="-30" as="offset" />
</mxGeometry>
@@ -88,7 +91,10 @@
<mxGeometry x="389.35999999999996" y="350" as="geometry">
<mxPoint x="-219.17" y="649" as="sourcePoint" />
<mxPoint x="-139.17" y="679" as="targetPoint" />
<Array as="points" />
<Array as="points">
<mxPoint x="40" y="265" />
<mxPoint x="40" y="125" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-29" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="EQeajuEG8KHzwlrw_xps-28" connectable="0" vertex="1">
@@ -102,50 +108,51 @@
</mxGeometry>
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-31" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;price: Number&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="-639.3299999999999" y="420" width="160" height="30" as="geometry" />
<mxGeometry x="-640.9199999999998" y="320" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-32" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;inStock: Number&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="-639.3299999999999" y="360" width="160" height="30" as="geometry" />
<mxGeometry x="-640.9199999999998" y="260" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-33" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;offered: bool&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="-880" y="540" width="160" height="30" as="geometry" />
<mxGeometry x="-399.8299999999999" y="290" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-34" value="&lt;blockquote style=&quot;margin: 0px; border: none; padding: 0px;&quot;&gt;&lt;b&gt;&lt;u&gt;Shows&lt;/u&gt;&lt;/b&gt;&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=center;fillColor=#008a00;strokeColor=default;fontColor=#ffffff;" parent="1" vertex="1">
<mxGeometry x="-639.3299999999999" y="300" width="160" height="30" as="geometry" />
<mxGeometry x="-640.9199999999998" y="200" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-35" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;&lt;u&gt;id:&amp;nbsp;&lt;/u&gt;&lt;u style=&quot;background-color: initial;&quot;&gt;Number&lt;/u&gt;&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="-639.3299999999999" y="330" width="160" height="30" as="geometry" />
<mxGeometry x="-640.9199999999998" y="230" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-37" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#2072B8;" parent="1" vertex="1">
<mxGeometry x="-499.04" y="335" width="9.43" height="20" as="geometry" />
<mxGeometry x="-500.63000000000005" y="235" width="9.43" height="20" as="geometry" />
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-39" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;date: String&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="-639.3299999999999" y="390" width="160" height="30" as="geometry" />
<mxGeometry x="-640.9199999999998" y="290" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-41" value="&lt;blockquote style=&quot;margin: 0px; border: none; padding: 0px;&quot;&gt;&lt;b&gt;&lt;u&gt;Locations&lt;/u&gt;&lt;/b&gt;&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=center;fillColor=#008a00;strokeColor=default;fontColor=#ffffff;" parent="1" vertex="1">
<mxGeometry x="-399.99999999999994" y="150" width="160" height="30" as="geometry" />
<mxCell id="EQeajuEG8KHzwlrw_xps-41" value="&lt;blockquote style=&quot;margin: 0px; border: none; padding: 0px;&quot;&gt;&lt;b&gt;&lt;u&gt;Locations&lt;/u&gt;&lt;/b&gt;&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=center;fillColor=#d80073;strokeColor=#A50040;fontColor=#ffffff;" parent="1" vertex="1">
<mxGeometry x="-399.83" y="400" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-42" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;&lt;u&gt;id:&amp;nbsp;&lt;/u&gt;&lt;u style=&quot;background-color: initial;&quot;&gt;Number&lt;/u&gt;&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="-399.99999999999994" y="180" width="160" height="30" as="geometry" />
<mxGeometry x="-399.83" y="430" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-43" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#2072B8;" parent="1" vertex="1">
<mxGeometry x="-259.72" y="185" width="9.43" height="20" as="geometry" />
<mxGeometry x="-259.55" y="435" width="9.43" height="20" as="geometry" />
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-44" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;name: String&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="-399.99999999999994" y="210" width="160" height="30" as="geometry" />
<mxGeometry x="-399.83" y="460" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-47" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;image: String&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="-399.99999999999994" y="300" width="160" height="30" as="geometry" />
<mxGeometry x="-399.83" y="520" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-48" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;address: String&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="-399.99999999999994" y="240" width="160" height="30" as="geometry" />
<mxGeometry x="-399.83" y="490" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-51" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="XtTKw7a9ly-3XTzy1tri-12" target="EQeajuEG8KHzwlrw_xps-3" edge="1">
<mxGeometry x="389.35999999999996" y="350" as="geometry">
<mxPoint x="-600" y="510" as="sourcePoint" />
<mxPoint x="-520" y="510" as="targetPoint" />
<Array as="points">
<mxPoint x="-639" y="585" />
<mxPoint x="-200" y="335" />
<mxPoint x="-200" y="125" />
</Array>
</mxGeometry>
</mxCell>
@@ -160,51 +167,49 @@
</mxGeometry>
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-54" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;&lt;i&gt;locationId: Number&lt;/i&gt;&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="-639.3299999999999" y="450" width="160" height="30" as="geometry" />
<mxGeometry x="-640.9199999999998" y="380" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-55" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="EQeajuEG8KHzwlrw_xps-54" target="EQeajuEG8KHzwlrw_xps-42" edge="1">
<mxCell id="EQeajuEG8KHzwlrw_xps-55" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="EQeajuEG8KHzwlrw_xps-54" target="EQeajuEG8KHzwlrw_xps-42" edge="1">
<mxGeometry x="389.35999999999996" y="350" as="geometry">
<mxPoint x="-710" y="345" as="sourcePoint" />
<mxPoint x="-630" y="305" as="targetPoint" />
<mxPoint x="-400" y="715" as="targetPoint" />
<Array as="points">
<mxPoint x="-440" y="465" />
<mxPoint x="-440" y="195" />
<mxPoint x="-440" y="395" />
<mxPoint x="-440" y="445" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-56" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="EQeajuEG8KHzwlrw_xps-55" connectable="0" vertex="1">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="3" y="-28" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-57" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="EQeajuEG8KHzwlrw_xps-55" connectable="0" vertex="1">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="-4" y="-30" as="offset" />
<mxPoint x="13" y="-26" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-58" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#CCCCCC;" parent="1" vertex="1">
<mxGeometry x="-499.04" y="485" width="9.43" height="20" as="geometry" />
<mxGeometry x="-500.63000000000005" y="385" width="9.43" height="20" as="geometry" />
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-59" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;images: Array&amp;lt;String&amp;gt;&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="-639.33" y="720" width="160" height="30" as="geometry" />
<mxGeometry x="-159.55" y="260" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-61" value="&lt;blockquote style=&quot;margin: 0px; border: none; padding: 0px;&quot;&gt;&lt;b&gt;&lt;u&gt;Ratings&lt;/u&gt;&lt;/b&gt;&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=center;fillColor=#008a00;strokeColor=default;fontColor=#ffffff;" parent="1" vertex="1">
<mxGeometry x="-400" y="370" width="160" height="30" as="geometry" />
<mxGeometry x="80.27" y="-40" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-62" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;&lt;u&gt;id:&amp;nbsp;&lt;/u&gt;&lt;u style=&quot;background-color: initial;&quot;&gt;Number&lt;/u&gt;&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="-400" y="400" width="160" height="30" as="geometry" />
<mxGeometry x="80.27" y="-10" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-63" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#2072B8;" parent="1" vertex="1">
<mxGeometry x="-258.71" y="405" width="9.43" height="20" as="geometry" />
<mxGeometry x="221.56" y="-5" width="9.43" height="20" as="geometry" />
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-67" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;rating: Number&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="-400" y="460" width="160" height="30" as="geometry" />
<mxGeometry x="80.27" y="50" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-68" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="EQeajuEG8KHzwlrw_xps-72" target="EQeajuEG8KHzwlrw_xps-3" edge="1">
<mxGeometry x="389.35999999999996" y="350" as="geometry">
<mxPoint x="-209" y="409" as="sourcePoint" />
<mxPoint x="-328.48" y="343.49" as="targetPoint" />
<Array as="points" />
<Array as="points">
<mxPoint x="40" y="95" />
<mxPoint x="40" y="125" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-69" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="EQeajuEG8KHzwlrw_xps-68" connectable="0" vertex="1">
@@ -218,13 +223,13 @@
</mxGeometry>
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-72" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;&lt;i&gt;bandId: Number&lt;/i&gt;&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="-400" y="490" width="160" height="30" as="geometry" />
<mxGeometry x="80.27" y="80" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-73" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#CCCCCC;" parent="1" vertex="1">
<mxGeometry x="-258.71" y="495" width="9.43" height="20" as="geometry" />
<mxGeometry x="221.56" y="85" width="9.43" height="20" as="geometry" />
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-75" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;&lt;i&gt;accountId: Number&lt;/i&gt;&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="-400" y="430" width="160" height="30" as="geometry" />
<mxGeometry x="80.27" y="20" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-76" value="&lt;blockquote style=&quot;margin: 0px; border: none; padding: 0px;&quot;&gt;&lt;b&gt;&lt;u&gt;Accounts&lt;/u&gt;&lt;/b&gt;&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=center;fillColor=#1ba1e2;strokeColor=default;fontColor=#ffffff;" parent="1" vertex="1">
<mxGeometry x="-1600.15" y="240" width="160" height="30" as="geometry" />
@@ -238,7 +243,7 @@
<mxCell id="EQeajuEG8KHzwlrw_xps-79" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;password: String&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="-1600.15" y="330" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-80" value="&lt;blockquote style=&quot;margin: 0px; border: none; padding: 0px;&quot;&gt;&lt;b&gt;&lt;u&gt;OrderItems&lt;/u&gt;&lt;/b&gt;&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=center;fillColor=#a20025;strokeColor=default;fontColor=#ffffff;" parent="1" vertex="1">
<mxCell id="EQeajuEG8KHzwlrw_xps-80" value="&lt;blockquote style=&quot;margin: 0px; border: none; padding: 0px;&quot;&gt;&lt;b&gt;&lt;u&gt;Ticket&lt;/u&gt;&lt;/b&gt;&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=center;fillColor=#a20025;strokeColor=default;fontColor=#ffffff;" parent="1" vertex="1">
<mxGeometry x="-880" y="240" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-81" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;&lt;u&gt;id:&amp;nbsp;&lt;/u&gt;&lt;u style=&quot;background-color: initial;&quot;&gt;Number&lt;/u&gt;&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
@@ -533,7 +538,7 @@
<mxGeometry x="-979.9100000000001" y="455" width="9.43" height="20" as="geometry" />
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-156" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;logo: String&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="-639.33" y="750" width="160" height="30" as="geometry" />
<mxGeometry x="-159.55" y="290" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-157" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="EQeajuEG8KHzwlrw_xps-83" target="EQeajuEG8KHzwlrw_xps-35" edge="1">
<mxGeometry x="389.35999999999996" y="350" as="geometry">
@@ -553,19 +558,17 @@
</mxGeometry>
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-160" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;image: String&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="-400" y="680" width="160" height="30" as="geometry" />
<mxGeometry x="80.27" y="280" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-162" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#CCCCCC;" parent="1" vertex="1">
<mxGeometry x="-258.71" y="435" width="9.43" height="20" as="geometry" />
<mxGeometry x="221.56" y="25" width="9.43" height="20" as="geometry" />
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-163" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="EQeajuEG8KHzwlrw_xps-75" target="EQeajuEG8KHzwlrw_xps-77" edge="1">
<mxCell id="EQeajuEG8KHzwlrw_xps-163" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="EQeajuEG8KHzwlrw_xps-75" target="EQeajuEG8KHzwlrw_xps-77" edge="1">
<mxGeometry x="389.35999999999996" y="350" as="geometry">
<mxPoint x="84" y="250" as="sourcePoint" />
<mxPoint x="-1440.1500000000003" y="290" as="targetPoint" />
<Array as="points">
<mxPoint x="-170" y="445" />
<mxPoint x="-170" y="60" />
<mxPoint x="-1400" y="60" />
<mxPoint x="-1400" y="35" />
<mxPoint x="-1400" y="285" />
</Array>
</mxGeometry>
@@ -581,89 +584,235 @@
</mxGeometry>
</mxCell>
<mxCell id="EQeajuEG8KHzwlrw_xps-166" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;descriptionDe: String&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="-639.33" y="690" width="160" height="30" as="geometry" />
<mxGeometry x="-159.55" y="230" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="XtTKw7a9ly-3XTzy1tri-1" value="&lt;blockquote style=&quot;margin: 0px; border: none; padding: 0px;&quot;&gt;&lt;b&gt;&lt;u&gt;Tours&lt;/u&gt;&lt;/b&gt;&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=center;fillColor=#008a00;strokeColor=default;fontColor=#ffffff;" vertex="1" parent="1">
<mxGeometry x="-880" y="450" width="160" height="30" as="geometry" />
<mxCell id="XtTKw7a9ly-3XTzy1tri-1" value="&lt;blockquote style=&quot;margin: 0px; border: none; padding: 0px;&quot;&gt;&lt;b&gt;&lt;u&gt;Tours&lt;/u&gt;&lt;/b&gt;&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=center;fillColor=#008a00;strokeColor=default;fontColor=#ffffff;" parent="1" vertex="1">
<mxGeometry x="-399.8299999999999" y="200" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="XtTKw7a9ly-3XTzy1tri-2" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;name: String&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
<mxGeometry x="-880" y="510" width="160" height="30" as="geometry" />
<mxCell id="XtTKw7a9ly-3XTzy1tri-2" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;name: String&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="-399.8299999999999" y="260" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="XtTKw7a9ly-3XTzy1tri-4" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#CCCCCC;" vertex="1" parent="1">
<mxGeometry x="-499.05" y="455" width="9.43" height="20" as="geometry" />
<mxCell id="XtTKw7a9ly-3XTzy1tri-4" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#CCCCCC;" parent="1" vertex="1">
<mxGeometry x="-500.64000000000004" y="355" width="9.43" height="20" as="geometry" />
</mxCell>
<mxCell id="XtTKw7a9ly-3XTzy1tri-5" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="XtTKw7a9ly-3XTzy1tri-3" target="XtTKw7a9ly-3XTzy1tri-8">
<mxCell id="XtTKw7a9ly-3XTzy1tri-5" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="XtTKw7a9ly-3XTzy1tri-3" target="XtTKw7a9ly-3XTzy1tri-8" edge="1">
<mxGeometry x="389.35999999999996" y="350" as="geometry">
<mxPoint x="-680" y="405" as="sourcePoint" />
<mxPoint x="-690" y="290" as="targetPoint" />
<Array as="points" />
</mxGeometry>
</mxCell>
<mxCell id="XtTKw7a9ly-3XTzy1tri-6" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" connectable="0" vertex="1" parent="XtTKw7a9ly-3XTzy1tri-5">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="-20" y="-28" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="XtTKw7a9ly-3XTzy1tri-7" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" connectable="0" vertex="1" parent="XtTKw7a9ly-3XTzy1tri-5">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="20" y="-30" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="XtTKw7a9ly-3XTzy1tri-8" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;&lt;u&gt;id:&amp;nbsp;&lt;/u&gt;&lt;u style=&quot;background-color: initial;&quot;&gt;Number&lt;/u&gt;&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
<mxGeometry x="-880" y="480" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="XtTKw7a9ly-3XTzy1tri-9" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#2072B8;" vertex="1" parent="1">
<mxGeometry x="-739.71" y="485" width="9.43" height="20" as="geometry" />
</mxCell>
<mxCell id="XtTKw7a9ly-3XTzy1tri-11" value="" style="shape=curlyBracket;whiteSpace=wrap;html=1;rounded=1;flipH=1;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;rotation=90;" vertex="1" parent="1">
<mxGeometry x="-595" y="580" width="20" height="670" as="geometry" />
</mxCell>
<mxCell id="XtTKw7a9ly-3XTzy1tri-12" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;&lt;i&gt;bandId: Number&lt;/i&gt;&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
<mxGeometry x="-880" y="570" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="XtTKw7a9ly-3XTzy1tri-13" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#CCCCCC;" vertex="1" parent="1">
<mxGeometry x="-739.71" y="575" width="9.43" height="20" as="geometry" />
</mxCell>
<mxCell id="XtTKw7a9ly-3XTzy1tri-23" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;cityId: Number&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
<mxGeometry x="-399.99999999999994" y="270" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="XtTKw7a9ly-3XTzy1tri-24" value="&lt;blockquote style=&quot;margin: 0px; border: none; padding: 0px;&quot;&gt;&lt;b&gt;&lt;u&gt;Cities&lt;/u&gt;&lt;/b&gt;&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=center;fillColor=#008a00;strokeColor=default;fontColor=#ffffff;" vertex="1" parent="1">
<mxGeometry x="-639.3299999999999" y="80" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="XtTKw7a9ly-3XTzy1tri-25" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;name: String&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
<mxGeometry x="-639.3299999999999" y="140" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="XtTKw7a9ly-3XTzy1tri-26" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;&lt;u&gt;id:&amp;nbsp;&lt;/u&gt;&lt;u style=&quot;background-color: initial;&quot;&gt;Number&lt;/u&gt;&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
<mxGeometry x="-639.3299999999999" y="110" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="XtTKw7a9ly-3XTzy1tri-27" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#2072B8;" vertex="1" parent="1">
<mxGeometry x="-499.05000000000007" y="115" width="9.43" height="20" as="geometry" />
</mxCell>
<mxCell id="XtTKw7a9ly-3XTzy1tri-28" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#CCCCCC;" vertex="1" parent="1">
<mxGeometry x="-259.72" y="275" width="9.43" height="20" as="geometry" />
</mxCell>
<mxCell id="XtTKw7a9ly-3XTzy1tri-29" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="XtTKw7a9ly-3XTzy1tri-23" target="XtTKw7a9ly-3XTzy1tri-26">
<mxGeometry x="389.35999999999996" y="350" as="geometry">
<mxPoint x="-469" y="475" as="sourcePoint" />
<mxPoint x="-469" y="145" as="targetPoint" />
<Array as="points">
<mxPoint x="-200" y="285" />
<mxPoint x="-200" y="125" />
<mxPoint x="-440" y="365" />
<mxPoint x="-440" y="245" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="XtTKw7a9ly-3XTzy1tri-30" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" connectable="0" vertex="1" parent="XtTKw7a9ly-3XTzy1tri-29">
<mxCell id="XtTKw7a9ly-3XTzy1tri-6" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="XtTKw7a9ly-3XTzy1tri-5" connectable="0" vertex="1">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="11" y="-28" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="XtTKw7a9ly-3XTzy1tri-7" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="XtTKw7a9ly-3XTzy1tri-5" connectable="0" vertex="1">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="-9" y="-31" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="XtTKw7a9ly-3XTzy1tri-8" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;&lt;u&gt;id:&amp;nbsp;&lt;/u&gt;&lt;u style=&quot;background-color: initial;&quot;&gt;Number&lt;/u&gt;&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="-399.8299999999999" y="230" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="XtTKw7a9ly-3XTzy1tri-9" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#2072B8;" parent="1" vertex="1">
<mxGeometry x="-259.5400000000001" y="235" width="9.43" height="20" as="geometry" />
</mxCell>
<mxCell id="XtTKw7a9ly-3XTzy1tri-12" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;&lt;i&gt;bandId: Number&lt;/i&gt;&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="-399.8299999999999" y="320" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="XtTKw7a9ly-3XTzy1tri-13" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#CCCCCC;" parent="1" vertex="1">
<mxGeometry x="-259.5400000000001" y="325" width="9.43" height="20" as="geometry" />
</mxCell>
<mxCell id="XtTKw7a9ly-3XTzy1tri-23" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;cityId: Number&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="-399.83" y="550" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="XtTKw7a9ly-3XTzy1tri-24" value="&lt;blockquote style=&quot;margin: 0px; border: none; padding: 0px;&quot;&gt;&lt;b&gt;&lt;u&gt;Cities&lt;/u&gt;&lt;/b&gt;&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=center;fillColor=#d80073;strokeColor=#A50040;fontColor=#ffffff;" parent="1" vertex="1">
<mxGeometry x="-640.92" y="520" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="XtTKw7a9ly-3XTzy1tri-25" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;name: String&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="-640.92" y="580" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="XtTKw7a9ly-3XTzy1tri-26" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;&lt;u&gt;id:&amp;nbsp;&lt;/u&gt;&lt;u style=&quot;background-color: initial;&quot;&gt;Number&lt;/u&gt;&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="-640.92" y="550" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="XtTKw7a9ly-3XTzy1tri-27" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#2072B8;" parent="1" vertex="1">
<mxGeometry x="-500.6400000000001" y="555" width="9.43" height="20" as="geometry" />
</mxCell>
<mxCell id="XtTKw7a9ly-3XTzy1tri-28" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#CCCCCC;" parent="1" vertex="1">
<mxGeometry x="-259.55" y="555" width="9.43" height="20" as="geometry" />
</mxCell>
<mxCell id="XtTKw7a9ly-3XTzy1tri-29" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="XtTKw7a9ly-3XTzy1tri-23" target="XtTKw7a9ly-3XTzy1tri-26" edge="1">
<mxGeometry x="389.35999999999996" y="350" as="geometry">
<mxPoint x="-581.6" y="580" as="sourcePoint" />
<mxPoint x="-581.6" y="250" as="targetPoint" />
<Array as="points">
<mxPoint x="-420" y="565" />
<mxPoint x="-420" y="565" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="XtTKw7a9ly-3XTzy1tri-30" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="XtTKw7a9ly-3XTzy1tri-29" connectable="0" vertex="1">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="3" y="-28" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="XtTKw7a9ly-3XTzy1tri-31" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" connectable="0" vertex="1" parent="XtTKw7a9ly-3XTzy1tri-29">
<mxCell id="XtTKw7a9ly-3XTzy1tri-31" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="XtTKw7a9ly-3XTzy1tri-29" connectable="0" vertex="1">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="16" y="-30" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="XtTKw7a9ly-3XTzy1tri-32" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;country: String&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
<mxGeometry x="-640.92" y="610" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="6UZwBTI8mqE8-S_CcwA3-7" value="&lt;blockquote style=&quot;margin: 0px; border: none; padding: 0px;&quot;&gt;&lt;b&gt;&lt;u&gt;Seats&lt;/u&gt;&lt;/b&gt;&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=center;fillColor=#d80073;strokeColor=#A50040;fontColor=#ffffff;" vertex="1" parent="1">
<mxGeometry x="-159.54999999999995" y="660" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="6UZwBTI8mqE8-S_CcwA3-8" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;&lt;u&gt;id:&amp;nbsp;&lt;/u&gt;&lt;u style=&quot;background-color: initial;&quot;&gt;Number&lt;/u&gt;&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
<mxGeometry x="-159.54999999999995" y="690" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="6UZwBTI8mqE8-S_CcwA3-9" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;seat: Number&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
<mxGeometry x="-159.54999999999995" y="720" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="6UZwBTI8mqE8-S_CcwA3-32" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;seatCategoryId: Number&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
<mxGeometry x="80.27000000000007" y="570" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="6UZwBTI8mqE8-S_CcwA3-33" value="&lt;blockquote style=&quot;margin: 0px; border: none; padding: 0px;&quot;&gt;&lt;b&gt;&lt;u&gt;SeatGroup&lt;/u&gt;&lt;/b&gt;&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=center;fillColor=#d80073;strokeColor=#A50040;fontColor=#ffffff;" vertex="1" parent="1">
<mxGeometry x="-159.54999999999995" y="400" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="6UZwBTI8mqE8-S_CcwA3-34" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;&lt;u&gt;id:&amp;nbsp;&lt;/u&gt;&lt;u style=&quot;background-color: initial;&quot;&gt;Number&lt;/u&gt;&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
<mxGeometry x="-159.54999999999995" y="430" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="6UZwBTI8mqE8-S_CcwA3-35" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;name: String&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
<mxGeometry x="-159.54999999999995" y="490" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="6UZwBTI8mqE8-S_CcwA3-36" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;seatSchema: String&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
<mxGeometry x="-399.83" y="580" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="6UZwBTI8mqE8-S_CcwA3-37" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;locationId: Number&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
<mxGeometry x="-159.54999999999995" y="460" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="6UZwBTI8mqE8-S_CcwA3-38" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="6UZwBTI8mqE8-S_CcwA3-37" target="EQeajuEG8KHzwlrw_xps-42">
<mxGeometry x="389.35999999999996" y="350" as="geometry">
<mxPoint x="292.51" y="518" as="sourcePoint" />
<mxPoint x="362.51" y="300" as="targetPoint" />
<Array as="points">
<mxPoint x="-200" y="475" />
<mxPoint x="-200" y="445" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="6UZwBTI8mqE8-S_CcwA3-39" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" connectable="0" vertex="1" parent="6UZwBTI8mqE8-S_CcwA3-38">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="-30" y="-28" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="6UZwBTI8mqE8-S_CcwA3-40" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" connectable="0" vertex="1" parent="6UZwBTI8mqE8-S_CcwA3-38">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="20" y="-30" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="6UZwBTI8mqE8-S_CcwA3-41" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="6UZwBTI8mqE8-S_CcwA3-32" target="6UZwBTI8mqE8-S_CcwA3-34">
<mxGeometry x="389.35999999999996" y="350" as="geometry">
<mxPoint x="422.51" y="940" as="sourcePoint" />
<mxPoint x="322.51" y="880" as="targetPoint" />
<Array as="points">
<mxPoint x="40" y="585" />
<mxPoint x="40" y="445" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="6UZwBTI8mqE8-S_CcwA3-42" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" connectable="0" vertex="1" parent="6UZwBTI8mqE8-S_CcwA3-41">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="-30" y="-28" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="6UZwBTI8mqE8-S_CcwA3-43" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" connectable="0" vertex="1" parent="6UZwBTI8mqE8-S_CcwA3-41">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="20" y="-30" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="6UZwBTI8mqE8-S_CcwA3-87" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;surcharge: Number&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
<mxGeometry x="-159.54999999999995" y="550" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="6UZwBTI8mqE8-S_CcwA3-134" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;standingArea: Boolean&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
<mxGeometry x="-159.54999999999995" y="520" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="6UZwBTI8mqE8-S_CcwA3-135" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;&lt;i&gt;seatId:&amp;nbsp;&lt;/i&gt;&lt;i style=&quot;background-color: initial;&quot;&gt;Number&lt;/i&gt;&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
<mxGeometry x="-880" y="420" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="6UZwBTI8mqE8-S_CcwA3-136" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="6UZwBTI8mqE8-S_CcwA3-135" target="6UZwBTI8mqE8-S_CcwA3-8">
<mxGeometry x="389.35999999999996" y="350" as="geometry">
<mxPoint x="-830" y="575" as="sourcePoint" />
<mxPoint x="-749" y="575" as="targetPoint" />
<Array as="points">
<mxPoint x="-680" y="435" />
<mxPoint x="-680" y="705" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="6UZwBTI8mqE8-S_CcwA3-137" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" connectable="0" vertex="1" parent="6UZwBTI8mqE8-S_CcwA3-136">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="3" y="-28" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="6UZwBTI8mqE8-S_CcwA3-138" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" connectable="0" vertex="1" parent="6UZwBTI8mqE8-S_CcwA3-136">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="-4" y="-30" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="XtTKw7a9ly-3XTzy1tri-32" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;country: String&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
<mxGeometry x="-639.3299999999999" y="170" width="160" height="30" as="geometry" />
<mxCell id="6UZwBTI8mqE8-S_CcwA3-139" value="&lt;blockquote style=&quot;margin: 0px; border: none; padding: 0px;&quot;&gt;&lt;b&gt;&lt;u&gt;SeatRows&lt;/u&gt;&lt;/b&gt;&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=center;fillColor=#d80073;strokeColor=#A50040;fontColor=#ffffff;" vertex="1" parent="1">
<mxGeometry x="80.27000000000007" y="480" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="6UZwBTI8mqE8-S_CcwA3-140" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;&lt;u&gt;id:&amp;nbsp;&lt;/u&gt;&lt;u style=&quot;background-color: initial;&quot;&gt;Number&lt;/u&gt;&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
<mxGeometry x="80.2700000000001" y="510" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="6UZwBTI8mqE8-S_CcwA3-141" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;seatRowId: Number&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
<mxGeometry x="-159.54999999999995" y="750" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="6UZwBTI8mqE8-S_CcwA3-142" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="6UZwBTI8mqE8-S_CcwA3-141" target="6UZwBTI8mqE8-S_CcwA3-140">
<mxGeometry x="389.35999999999996" y="350" as="geometry">
<mxPoint x="492.51" y="805" as="sourcePoint" />
<mxPoint x="412.51" y="730" as="targetPoint" />
<Array as="points">
<mxPoint x="280" y="765" />
<mxPoint x="280" y="525" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="6UZwBTI8mqE8-S_CcwA3-143" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" connectable="0" vertex="1" parent="6UZwBTI8mqE8-S_CcwA3-142">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="4" y="-28" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="6UZwBTI8mqE8-S_CcwA3-144" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" connectable="0" vertex="1" parent="6UZwBTI8mqE8-S_CcwA3-142">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="20" y="-30" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="6UZwBTI8mqE8-S_CcwA3-145" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;row: Number&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
<mxGeometry x="80.27000000000007" y="540" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="6UZwBTI8mqE8-S_CcwA3-146" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 8px; border: none; padding: 0px;&quot;&gt;capacity: Number&lt;/blockquote&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
<mxGeometry x="-159.54999999999995" y="580" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="6UZwBTI8mqE8-S_CcwA3-147" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#2072B8;" vertex="1" parent="1">
<mxGeometry x="-18.810000000000134" y="695" width="9.43" height="20" as="geometry" />
</mxCell>
<mxCell id="6UZwBTI8mqE8-S_CcwA3-148" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#2072B8;" vertex="1" parent="1">
<mxGeometry x="-19.27000000000013" y="435" width="9.43" height="20" as="geometry" />
</mxCell>
<mxCell id="6UZwBTI8mqE8-S_CcwA3-149" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#2072B8;" vertex="1" parent="1">
<mxGeometry x="221.5599999999999" y="515" width="9.43" height="20" as="geometry" />
</mxCell>
<mxCell id="6UZwBTI8mqE8-S_CcwA3-150" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#CCCCCC;" vertex="1" parent="1">
<mxGeometry x="221.5599999999999" y="575" width="9.43" height="20" as="geometry" />
</mxCell>
<mxCell id="6UZwBTI8mqE8-S_CcwA3-151" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#CCCCCC;" vertex="1" parent="1">
<mxGeometry x="-18.820000000000096" y="755" width="9.43" height="20" as="geometry" />
</mxCell>
</root>
</mxGraphModel>

View File

@@ -1,7 +1,6 @@
{
"data": [
{
"id": 0,
"name": "Hannover",
"country": "Germany",
"locations": [
@@ -9,34 +8,131 @@
"id": 0,
"name": "Swiss Life Hall",
"address": "Ferdinand-Wilhelm-Fricke-Weg 8",
"cityId": 0,
"image": "swiss-life-hall.jpg"
"image": "swiss-life-hall.jpg",
"seatGroups": [
{
"name": "A",
"surcharge": 20,
"standingArea": true,
"capacity": 40
},
{
"id": 1,
"name": "Capitol",
"address": "Schwarzer Bär 2",
"cityId": 0,
"image": "capitol.jpg"
"name": "B",
"surcharge": 10,
"standingArea": false,
"rows": 5,
"capacity": 25
},
{
"id": 2,
"name": "ZAG Arena",
"address": "EXPO-Plaza 7",
"cityId": 0,
"image": "zag-arena.jpg"
"name": "C",
"surcharge": 10,
"standingArea": false,
"rows": 5,
"capacity": 25
},
{
"id": 3,
"name": "Kulturzentrum Faust",
"address": "Zur Bettfedernfabrik 3",
"cityId": 0,
"image": "faust-hannover.jpg"
"name": "D",
"surcharge": 10,
"standingArea": false,
"rows": 3,
"capacity": 30
},
{
"name": "E",
"surcharge": 10,
"standingArea": false,
"rows": 3,
"capacity": 12
},
{
"name": "F",
"surcharge": 10,
"standingArea": false,
"rows": 3,
"capacity": 12
}
]
},
{
"id": 1,
"name": "Capitol",
"address": "Schwarzer Bär 2",
"image": "capitol.jpg",
"seatGroups": [
{
"name": "A",
"surcharge": 20,
"standingArea": true,
"capacity": 50
}
]
},
{
"id": 2,
"name": "ZAG Arena",
"address": "EXPO-Plaza 7",
"image": "zag-arena.jpg",
"seatGroups": [
{
"name": "A",
"surcharge": 20,
"standingArea": true,
"capacity": 40
},
{
"name": "B",
"surcharge": 10,
"standingArea": false,
"rows": 5,
"capacity": 25
},
{
"name": "C",
"surcharge": 10,
"standingArea": false,
"rows": 5,
"capacity": 25
},
{
"name": "D",
"surcharge": 10,
"standingArea": false,
"rows": 3,
"capacity": 30
},
{
"name": "E",
"surcharge": 10,
"standingArea": false,
"rows": 3,
"capacity": 12
},
{
"name": "F",
"surcharge": 10,
"standingArea": false,
"rows": 3,
"capacity": 12
}
]
},
{
"id": 3,
"name": "Kulturzentrum Faust",
"address": "Zur Bettfedernfabrik 3",
"image": "faust-hannover.jpg",
"seatGroups": [
{
"name": "A",
"surcharge": 20,
"standingArea": true,
"capacity": 10
}
]
}
]
},
{
"name": "München",
"country": "Germany",
"locations": [
@@ -44,27 +140,47 @@
"id": 4,
"name": "Olympiahalle München",
"address": "Spiridon-Louis-Ring 21",
"cityId": 1,
"image": "olympiahalle-munich.jpg"
"image": "olympiahalle-munich.jpg",
"seatGroups": [
{
"name": "A",
"surcharge": 20,
"standingArea": true,
"capacity": 10
}
]
},
{
"id": 5,
"name": "Schlachthof München",
"address": "Zenettistraße 9",
"cityId": 1,
"image": "schlachthof-munich.jpg"
"image": "schlachthof-munich.jpg",
"seatGroups": [
{
"name": "A",
"surcharge": 20,
"standingArea": true,
"capacity": 10
}
]
},
{
"id": 6,
"name": "Muffatwerk",
"address": "Zellstraße 4",
"cityId": 1,
"image": "muffatwerk.jpg"
"image": "muffatwerk.jpg",
"seatGroups": [
{
"name": "A",
"surcharge": 20,
"standingArea": true,
"capacity": 10
}
]
}
]
},
{
"id": 2,
"name": "Hamburg",
"country": "Germany",
"locations": [
@@ -72,34 +188,61 @@
"id": 7,
"name": "Elbphilharmonie Hamburg",
"address": "Platz der deutschen Einheit",
"cityId": 2,
"image": "elbphilharmonie-hamburg.jpg"
"image": "elbphilharmonie-hamburg.jpg",
"seatGroups": [
{
"name": "A",
"surcharge": 20,
"standingArea": true,
"capacity": 10
}
]
},
{
"id": 8,
"name": "Volksparkstadion",
"address": "Sylvesterallee 7",
"cityId": 2,
"image": "volksparkstadion-hamburg.jpg"
"image": "volksparkstadion-hamburg.jpg",
"seatGroups": [
{
"name": "A",
"surcharge": 20,
"standingArea": true,
"capacity": 10
}
]
},
{
"id": 9,
"name": "Barclays Arena",
"address": "Sylvesterallee 10",
"cityId": 2,
"image": "barclays-arena.jpg"
"image": "barclays-arena.jpg",
"seatGroups": [
{
"name": "A",
"surcharge": 20,
"standingArea": true,
"capacity": 10
}
]
},
{
"id": 10,
"name": "Stage Theater im Hafen Hamburg",
"address": "Norderelbestraße 6",
"cityId": 2,
"image": "stage-theater-hamburg.jpg"
"image": "stage-theater-hamburg.jpg",
"seatGroups": [
{
"name": "A",
"surcharge": 20,
"standingArea": true,
"capacity": 10
}
]
}
]
},
{
"id": 3,
"name": "Berlin",
"country": "Germany",
"locations": [
@@ -107,43 +250,85 @@
"id": 11,
"name": "Waldbühne Berlin",
"address": "Am Glockenturm",
"cityId": 3,
"image": "waldbuehne-berlin.jpg"
"image": "waldbuehne-berlin.jpg",
"seatGroups": [
{
"name": "A",
"surcharge": 20,
"standingArea": true,
"capacity": 10
}
]
},
{
"id": 12,
"name": "Olympiastadion Berlin",
"address": "Olympischer Platz 3",
"cityId": 3,
"image": "olympiastadion-berlin.jpg"
"image": "olympiastadion-berlin.jpg",
"seatGroups": [
{
"name": "A",
"surcharge": 20,
"standingArea": true,
"capacity": 10
}
]
},
{
"id": 13,
"name": "Uber Arena Berlin",
"address": "Uber-Platz 1",
"cityId": 3,
"image": "uber-arena-berlin.jpg"
"image": "uber-arena-berlin.jpg",
"seatGroups": [
{
"name": "A",
"surcharge": 20,
"standingArea": true,
"capacity": 10
}
]
},
{
"id": 14,
"name": "Columbiahalle",
"address": "Columbiadamm 13-21",
"cityId": 3,
"image": "columbiahalle.jpg"
"image": "columbiahalle.jpg",
"seatGroups": [
{
"name": "A",
"surcharge": 20,
"standingArea": true,
"capacity": 10
}
]
},
{
"id": 15,
"name": "Astra Kulturhaus",
"address": "Revaler Straße 99",
"cityId": 3,
"image": "astra-kulturhaus.jpg"
"image": "astra-kulturhaus.jpg",
"seatGroups": [
{
"name": "A",
"surcharge": 20,
"standingArea": true,
"capacity": 10
}
]
},
{
"id": 16,
"name": "Deutsche Oper Berlin",
"address": "Bismarckstraße 35",
"cityId": 3,
"image": "deutsche-oper-berlin.jpg"
"image": "deutsche-oper-berlin.jpg",
"seatGroups": [
{
"name": "A",
"surcharge": 20,
"standingArea": true,
"capacity": 10
}
]
}
]
}

View File

@@ -9,14 +9,17 @@ import { Address } from "./models/user/address.model"
import { Payment } from "./models/user/payment.model"
import { AccountRole } from "./models/user/accountRole.model"
import { Genre } from "./models/acts/genre.model"
import { Location } from "./models/acts/location.model"
import { Location } from "./models/locations/location.model"
import { Band } from "./models/acts/band.model"
import { Concert } from "./models/acts/concert.model"
import { Member } from "./models/acts/member.model"
import { Rating } from "./models/acts/rating.model"
import { Tour } from "./models/acts/tour.model"
import { City } from "./models/acts/city.model"
import { City } from "./models/locations/city.model"
import { BandGenre } from "./models/acts/bandGenre.model"
import { Seat } from "./models/locations/seat.model"
import { SeatGroup } from "./models/locations/seatGroup.model"
import { SeatRow } from "./models/locations/seatRow.model"
const dbName = "database"
const dbUser = "root"
@@ -31,7 +34,8 @@ export const sequelize = new Sequelize({
storage: "database.sqlite",
models: [
AccountRole, Account, Payment, Address,
City, Location, Genre, Band, BandGenre, Rating, Member, Tour, Concert,
City, Location, SeatGroup, SeatRow, Seat,
Genre, Band, BandGenre, Rating, Member, Tour, Concert,
Order, OrderItem
]
})

View File

@@ -1,5 +1,5 @@
import { BelongsTo, Column, ForeignKey, HasMany, Model, Table } from "sequelize-typescript";
import { Location } from "./location.model";
import { Location } from "./../locations/location.model";
import { Tour } from "./tour.model";
import { OrderItem } from "../ordering/orderItem.model";

View File

@@ -1,6 +1,7 @@
import { BelongsTo, Column, ForeignKey, HasMany, Model, Table } from "sequelize-typescript";
import { Concert } from "./concert.model";
import { Concert } from "./../acts/concert.model";
import { City } from "./city.model";
import { SeatGroup } from "./seatGroup.model";
@Table({ timestamps: false })
export class Location extends Model {
@@ -23,6 +24,9 @@ export class Location extends Model {
@HasMany(() => Concert)
concerts: Concert[]
@HasMany(() => SeatGroup)
seatGroups: SeatGroup[]
@BelongsTo(() => City)
city: City
}

View File

@@ -0,0 +1,18 @@
import { BelongsTo, Column, ForeignKey, Model, Table } from "sequelize-typescript";
import { SeatRow } from "./seatRow.model";
@Table({ timestamps: false })
export class Seat extends Model {
@Column
seatNr: number
@ForeignKey(() => SeatRow)
@Column
seatRowId: Number
// Relations
@BelongsTo(() => SeatRow)
seatRow: SeatRow
}

View File

@@ -0,0 +1,32 @@
import { BelongsTo, Column, Default, ForeignKey, HasMany, Model, Table } from "sequelize-typescript";
import { Location } from "./location.model";
import { SeatRow } from "./seatRow.model";
@Table({ timestamps: false })
export class SeatGroup extends Model {
@Column
name: String
@Column
surcharge: Number
@Column
capacity: Number
@Default(false)
@Column
standingArea: Boolean
@ForeignKey(() => Location)
@Column
locationId: Number
// Relations
@BelongsTo(() => Location)
location: Location
@HasMany(() => SeatRow)
seatRows: SeatRow[]
}

View File

@@ -0,0 +1,22 @@
import { BelongsTo, Column, ForeignKey, HasMany, Model, Table } from "sequelize-typescript";
import { SeatGroup } from "./seatGroup.model";
import { Seat } from "./seat.model";
@Table({ timestamps: false })
export class SeatRow extends Model {
@Column
row: number
@ForeignKey(() => SeatGroup)
@Column
seatGroupId: number
// Relations
@BelongsTo(() => SeatGroup)
seatGroup: SeatGroup
@HasMany(() => Seat)
seats: Seat[]
}

View File

@@ -5,8 +5,8 @@ import { Rating } from "../models/acts/rating.model";
import { Genre } from "../models/acts/genre.model";
import { Tour } from "../models/acts/tour.model";
import { Concert } from "../models/acts/concert.model";
import { Location } from "../models/acts/location.model";
import { City } from "../models/acts/city.model";
import { Location } from "../models/locations/location.model";
import { City } from "../models/locations/city.model";
export const band = Router()

View File

@@ -1,5 +1,5 @@
import { Location } from "../models/acts/location.model";
import { City } from "../models/acts/city.model";
import { Location } from "../models/locations/location.model";
import { City } from "../models/locations/city.model";
import { Request, Response, Router } from "express";
import { Concert } from "../models/acts/concert.model";

View File

@@ -1,8 +1,8 @@
import { Location } from "../models/acts/location.model";
import { Location } from "../models/locations/location.model";
import { Concert } from "../models/acts/concert.model";
import { Request, Response, Router } from "express";
import { Tour } from "../models/acts/tour.model";
import { City } from "../models/acts/city.model";
import { City } from "../models/locations/city.model";
export const concert = Router()

View File

@@ -1,9 +1,12 @@
import { Concert } from "../models/acts/concert.model";
import { City } from "../models/acts/city.model";
import { Location } from "../models/acts/location.model";
import { City } from "../models/locations/city.model";
import { Location } from "../models/locations/location.model";
import { Request, Response, Router } from "express";
import { Tour } from "../models/acts/tour.model";
import { Band } from "../models/acts/band.model";
import { SeatGroup } from "../models/locations/seatGroup.model";
import { Seat } from "../models/locations/seat.model";
import { SeatRow } from "../models/locations/seatRow.model";
export const location = Router()
@@ -17,6 +20,15 @@ location.get("/", (req: Request, res: Response) => {
attributes: {
exclude: [ "locationId", "tourId" ]
}
},
{
model: SeatGroup,
include: [
{
model: SeatRow,
include: [ Seat ]
}
]
}
],
attributes: {

View File

@@ -5,7 +5,7 @@ import { OrderItem } from "../models/ordering/orderItem.model";
import { Payment } from "../models/user/payment.model";
import { Address } from "../models/user/address.model";
import { Band } from "../models/acts/band.model";
import { Location } from "../models/acts/location.model";
import { Location } from "../models/locations/location.model";
export const order = Router()

View File

@@ -2,9 +2,9 @@ import { Concert } from "../models/acts/concert.model";
import { Band } from "../models/acts/band.model";
import { Tour } from "../models/acts/tour.model";
import { Request, Response, Router } from "express";
import { Location } from "../models/acts/location.model";
import { Location } from "../models/locations/location.model";
import { Genre } from "../models/acts/genre.model";
import { City } from "../models/acts/city.model";
import { City } from "../models/locations/city.model";
export const tour = Router()

View File

@@ -8,11 +8,14 @@ import { Rating } from '../models/acts/rating.model'
import { Member } from '../models/acts/member.model'
import { Genre } from '../models/acts/genre.model'
import { Band } from '../models/acts/band.model'
import { Location } from '../models/acts/location.model'
import { Location } from '../models/locations/location.model'
import { Concert } from '../models/acts/concert.model'
import { Tour } from '../models/acts/tour.model'
import { City } from '../models/acts/city.model'
import { City } from '../models/locations/city.model'
import { BandGenre } from '../models/acts/bandGenre.model'
import { SeatGroup } from '../models/locations/seatGroup.model'
import { Seat } from '../models/locations/seat.model'
import { SeatRow } from '../models/locations/seatRow.model'
import accounts from "./../data/accounts.json"
import orders from "./../data/orders.json"
@@ -35,8 +38,13 @@ export function deleteAllTables() {
Member.destroy({ truncate: true })
Genre.destroy({ truncate: true })
Band.destroy({ truncate: true })
Tour.destroy({ truncate: true })
Location.destroy({ truncate: true })
Concert.destroy({ truncate: true })
SeatGroup.destroy({ truncate: true })
SeatRow.destroy({ truncate: true })
Seat.destroy({ truncate: true })
Address.destroy({ truncate: true })
Payment.destroy({ truncate: true })
@@ -48,13 +56,63 @@ export function deleteAllTables() {
* Insert default datasets in the database tables
*/
export async function prepopulateDatabase() {
deleteAllTables()
AccountRole.bulkCreate(accountRoles.data)
Genre.bulkCreate(genres.data)
for (let city of cities.data) {
for (let city of cities.data)
{
await City.create(city)
.then(dataset => {
Location.bulkCreate(city.locations)
.then(async cityDataset => {
for (let location of city.locations)
{
location["cityId"] = cityDataset.id
await Location.create(location)
.then(async locationDataset => {
for (let seatGroup of location.seatGroups)
{
seatGroup["locationId"] = locationDataset.id
await SeatGroup.create(seatGroup)
.then(async seatGroupRes => {
if (seatGroup.standingArea) {
// In an area without seats, create one row with all "seats"
await SeatRow.create({
row: 0,
seatGroupId: seatGroupRes.id
})
.then(async seatRowRes => {
for (let i = 0; i < seatGroup.capacity; i++) {
await Seat.create({
seatNr: i + 1,
seatRowId: seatRowRes.id
})
}
})
}
else
{
for (let row = 0; row < seatGroup.rows; row++) {
await SeatRow.create({
row: row + 1,
seatGroupId: seatGroupRes.id
})
.then(async seatRowRes => {
for (let col = 0; col < seatGroup.capacity / seatGroup.rows; col++) {
await Seat.create({
seatNr: col,
seatRowId: seatRowRes.id
})
}
})
}
}
})
}
})
}
})
}

View File

@@ -7,7 +7,7 @@ import navigationPrependItems from './components/navigation/navigationPrependIte
import { usePreferencesStore } from './data/stores/preferencesStore';
import { useFeedbackStore } from './data/stores/feedbackStore';
import { useConcertStore } from './data/stores/concertStore';
import { LocationModel } from './data/models/acts/locationModel';
import { LocationModel } from './data/models/locations/locationModel';
const preferencesStore = usePreferencesStore()
const concertStore = useConcertStore()

View File

@@ -17,7 +17,7 @@ defineProps({
<template>
<v-dialog max-width="1200" v-model="showDialog">
<card-view
<v-card
:title="title"
:subtitle="subtitle"
:icon="icon"
@@ -27,6 +27,6 @@ defineProps({
<template #actions>
<slot name="actions"></slot>
</template>
</card-view>
</v-card>
</v-dialog>
</template>

View File

@@ -0,0 +1,58 @@
<script setup lang="ts">
import { SeatGroupModel } from '@/data/models/locations/seatGroupModel';
import seatGroupTable from './seatGroupTable.vue';
defineProps({
seatGroup: SeatGroupModel,
backgroundColor: String
})
</script>
<template>
<v-sheet
v-if="seatGroup != undefined && seatGroup.standingArea"
class="pa-5"
min-height="200"
height="100%"
:color="backgroundColor"
>
<v-row >
<v-col class="text-h4 text-center font-weight-black">
{{ seatGroup.name }}
</v-col>
</v-row>
<v-row>
<v-col class="text-center">
<v-icon
icon="mdi-account-group"
size="x-large"
/>
</v-col>
</v-row>
<v-row>
<v-col class="text-center text-h6">
{{ seatGroup.capacity }} Stehplätze
</v-col>
</v-row>
</v-sheet>
<v-sheet
v-else-if="seatGroup != undefined"
class="pa-5"
:color="backgroundColor"
>
<v-row >
<v-col class="text-h4 text-center font-weight-black">
{{ seatGroup.name }}
</v-col>
</v-row>
<v-row>
<v-col class="d-flex justify-center align-center">
<seat-group-table :seat-rows="seatGroup.seatRows" />
</v-col>
</v-row>
</v-sheet>
</template>

View File

@@ -0,0 +1,22 @@
<script setup lang="ts">
import { SeatRowModel } from '@/data/models/locations/seatRowModel';
defineProps({
seatRows: Array<SeatRowModel>,
})
</script>
<template>
<table>
<tbody>
<tr v-for="seatRow in seatRows">
<td v-for="seats in seatRow.seats">
<v-btn
variant="text"
icon="mdi-seat"
/>
</td>
</tr>
</tbody>
</table>
</template>

View File

@@ -0,0 +1,67 @@
<script setup lang="ts">
import { SeatGroupModel } from '@/data/models/locations/seatGroupModel';
import seatGroupSheet from './seatGroupSheet.vue';
let props = defineProps({
seatGroups: Array<SeatGroupModel>
})
function findSeatCategory(name: string): SeatGroupModel {
return props.seatGroups.find(category =>
category.name == name
)
}
const seatGroupA = findSeatCategory("A")
const seatGroupB = findSeatCategory("B")
const seatGroupC = findSeatCategory("C")
const seatGroupD = findSeatCategory("D")
const seatGroupE = findSeatCategory("E")
const seatGroupF = findSeatCategory("F")
</script>
<template>
<v-row>
<v-col></v-col>
<v-col>
<v-sheet
color="grey-darken-3"
height="50"
class="px-5 py-2 d-flex justify-center align-center"
>
{{ $t('stage') }}
</v-sheet>
</v-col>
<v-col></v-col>
</v-row>
<v-row>
<v-col>
<seat-group-sheet :seat-group="seatGroupC" background-color="cyan-darken-2" />
</v-col>
<v-col>
<seat-group-sheet :seat-group="seatGroupA" background-color="grey" />
</v-col>
<v-col>
<seat-group-sheet :seat-group="seatGroupB" background-color="cyan-darken-2" />
</v-col>
</v-row>
<v-row>
<v-col>
<seat-group-sheet :seat-group="seatGroupF" background-color="deep-purple-darken-2" />
</v-col>
<v-col>
<seat-group-sheet :seat-group="seatGroupD" background-color="indigo-darken-2" />
</v-col>
<v-col>
<seat-group-sheet :seat-group="seatGroupE" background-color="deep-purple-darken-2" />
</v-col>
</v-row>
</template>

View File

@@ -1,4 +1,4 @@
import { LocationModel } from "./locationModel"
import { LocationModel } from "./../locations/locationModel"
export class ConcertModel {
id: number

View File

@@ -1,3 +1,5 @@
import { SeatGroupModel } from "./seatGroupModel"
/**
* Replica of the API endpoint /locations
*/
@@ -6,6 +8,7 @@ export class LocationModel {
name: string
address: string
image: string
seatSchema: string
city: {
name: string
country: string
@@ -22,4 +25,5 @@ export class LocationModel {
bandName: string
}
}>
seatGroups: Array<SeatGroupModel>
}

View File

@@ -0,0 +1,9 @@
import { SeatRowModel } from "./seatRowModel"
export class SeatGroupModel {
name: string
surcharge: number
standingArea: Boolean
capacity: number
seatRows: Array<SeatRowModel>
}

View File

@@ -0,0 +1,4 @@
export class SeatModel {
id: number
seatNr: string
}

View File

@@ -0,0 +1,6 @@
import { SeatModel } from "./seatModel"
export class SeatRowModel {
row: number
seats: Array<SeatModel>
}

View File

@@ -5,10 +5,10 @@ import { getAllTours } from "../api/tourApi";
import { GenreModel } from "../models/acts/genreModel";
import { getAllBands } from "../api/bandApi";
import { BandModel } from "../models/acts/bandModel";
import { LocationModel } from "../models/acts/locationModel";
import { LocationModel } from "../models/locations/locationModel";
import { getAllLocations } from "../api/locationApi";
import { getAllGenres } from "../api/genreApi";
import { CityModel } from "../models/acts/cityModel";
import { CityModel } from "../models/locations/cityModel";
import { getAllCities } from "../api/cityApi";
export const useConcertStore = defineStore("concertStore", {
@@ -47,6 +47,7 @@ export const useConcertStore = defineStore("concertStore", {
await getAllLocations()
.then(result => {
console.log(result.data)
this.locations = result.data
})

View File

@@ -139,5 +139,8 @@
"band": "Band | Bands",
"noEventsFound": "Keine Events gefunden",
"from": "ab",
"soldOut": "Ausverkauft"
"soldOut": "Ausverkauft",
"city": "Stadt",
"seatPlan": "Saalplan",
"stage": "Bühne"
}

View File

@@ -139,5 +139,8 @@
"band": "Band | Bands",
"noEventsFound": "No Events found",
"from": "from",
"soldOut": "Sold Out"
"soldOut": "Sold Out",
"city": "City",
"seatPlan": "Seat Plan",
"stage": "Stage"
}

View File

@@ -62,6 +62,7 @@ const concertStore = useConcertStore()
:image="'locations/' + concertStore.locations[i + 2].image"
:title="concertStore.locations[i + 2].name"
smaller-title
@click="router.push('/locations/' + concertStore.locations[i + 2].name.replaceAll(' ', '-').toLowerCase())"
>
{{ concertStore.locations[i + 2].city.name }}, {{ concertStore.locations[i + 2].city.country }}
</card-with-top-image>

View File

@@ -1,11 +1,11 @@
<script setup lang="ts">
import { LocationModel } from '@/data/models/acts/locationModel';
import { LocationModel } from '@/data/models/locations/locationModel';
import { useConcertStore } from '@/data/stores/concertStore';
import { createDateRangeString, lowestTicketPrice } from '@/scripts/concertScripts';
import { useRouter } from 'vue-router';
import cardWithLeftImage from '@/components/cardWithLeftImage.vue';
import sectionDivider from '@/components/sectionDivider.vue';
import { dateStringToHumanReadableString } from '@/scripts/dateTimeScripts';
import seatPlanMap from '@/components/seatPlanMap/seatPlanMap.vue';
const router = useRouter()
const concertStore = useConcertStore()
@@ -83,6 +83,20 @@ const location: LocationModel = concertStore.locations.find(location =>
/>
</v-col>
</v-row>
<v-row>
<v-col>
<section-divider :title="$t('seatPlan')" />
</v-col>
</v-row>
<v-row>
<v-col>
<seat-plan-map
:seat-groups="location.seatGroups"
/>
</v-col>
</v-row>
</v-col>
<v-spacer/>

View File

@@ -15,7 +15,7 @@ const concertStore = useConcertStore()
variant="outlined"
:items="concertStore.cities"
v-model="concertStore.cityFilter"
label="Stadt"
:label="$t('city')"
density="compact"
class="mb-n5"
:clearable="concertStore.cityFilter != null && concertStore.cityFilter.id != undefined"