5 Commits
Author SHA1 Message Date
Daniel-Garmig 7475be603c RoomCateryBedType - API and admin panel improvements.
CI / Docker Lint (push) Successful in 20s
2024-09-12 18:08:33 +02:00
Daniel-Garmig 06577df0ad Downgraded to symfony/var_dump 7.0.4
(see https://github.com/symfony/symfony/pull/54485)
2024-09-10 18:09:00 +02:00
Daniel-Garmig 048681e8ad Added RoomCategory BedType support in AdminPanel 2024-09-10 18:09:00 +02:00
Daniel-Garmig 975d0495a8 Implemented entities for new RoomCategory BedType system. 2024-09-10 18:08:40 +02:00
Daniel-Garmig 09f384fce0 DB changed.
- Removed RoomCategoryDetails.
- Updated some constraints and fields.
2024-09-09 13:44:18 +02:00
30 changed files with 851 additions and 380 deletions
+3
View File
@@ -8,3 +8,6 @@
/var/
/vendor/
###< symfony/framework-bundle ###
# Draw.io backup file.
*bkp
+1
View File
@@ -28,6 +28,7 @@
"symfony/runtime": "7.0.*",
"symfony/security-bundle": "7.0.*",
"symfony/serializer": "7.0.*",
"symfony/var-exporter": "7.0.4",
"symfony/yaml": "7.0.*"
},
"config": {
Generated
+7 -9
View File
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "f177a4872c4ced09856f94d423de0b21",
"content-hash": "0e4c12b24935945c9c0a907893d84c6d",
"packages": [
{
"name": "doctrine/cache",
@@ -5881,24 +5881,22 @@
},
{
"name": "symfony/var-exporter",
"version": "v7.0.6",
"version": "v7.0.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-exporter.git",
"reference": "c74c568d2a15a1d407cf40d61ea82bc2d521e27b"
"reference": "dfb0acb6803eb714f05d97dd4c5abe6d5fa9fe41"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/var-exporter/zipball/c74c568d2a15a1d407cf40d61ea82bc2d521e27b",
"reference": "c74c568d2a15a1d407cf40d61ea82bc2d521e27b",
"url": "https://api.github.com/repos/symfony/var-exporter/zipball/dfb0acb6803eb714f05d97dd4c5abe6d5fa9fe41",
"reference": "dfb0acb6803eb714f05d97dd4c5abe6d5fa9fe41",
"shasum": ""
},
"require": {
"php": ">=8.2"
},
"require-dev": {
"symfony/property-access": "^6.4|^7.0",
"symfony/serializer": "^6.4|^7.0",
"symfony/var-dumper": "^6.4|^7.0"
},
"type": "library",
@@ -5937,7 +5935,7 @@
"serialize"
],
"support": {
"source": "https://github.com/symfony/var-exporter/tree/v7.0.6"
"source": "https://github.com/symfony/var-exporter/tree/v7.0.4"
},
"funding": [
{
@@ -5953,7 +5951,7 @@
"type": "tidelift"
}
],
"time": "2024-03-20T21:25:22+00:00"
"time": "2024-02-26T10:35:24+00:00"
},
{
"name": "symfony/yaml",
+172 -168
View File
@@ -1,6 +1,6 @@
<mxfile host="Electron" modified="2024-06-03T19:16:33.641Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/24.4.13 Chrome/124.0.6367.207 Electron/30.0.6 Safari/537.36" etag="z4nTGTpTJWwi23uB_v5T" version="24.4.13" type="device">
<mxfile host="Electron" modified="2024-09-09T12:12:35.921Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/24.4.13 Chrome/124.0.6367.207 Electron/30.0.6 Safari/537.36" etag="I1ybqZjP5GItnb-jHmxS" version="24.4.13" type="device">
<diagram id="R2lEEEUBdFMjLlhIrx00" name="Page-1">
<mxGraphModel dx="1318" dy="2052" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0" extFonts="Permanent Marker^https://fonts.googleapis.com/css?family=Permanent+Marker">
<mxGraphModel dx="2666" dy="2248" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0" extFonts="Permanent Marker^https://fonts.googleapis.com/css?family=Permanent+Marker">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
@@ -31,7 +31,7 @@
<mxGeometry x="10" y="30" width="330" height="160" as="geometry" />
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-5" value="RoomCategory" style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;html=1;" parent="LWdVl6OarZhAk6RPOBHK-3" vertex="1">
<mxGeometry x="115" y="300" width="180" height="180" as="geometry" />
<mxGeometry x="115" y="300" width="180" height="150" as="geometry" />
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-6" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=1;" parent="LWdVl6OarZhAk6RPOBHK-5" vertex="1">
<mxGeometry y="30" width="180" height="30" as="geometry" />
@@ -49,12 +49,12 @@
<mxCell id="LWdVl6OarZhAk6RPOBHK-9" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" parent="LWdVl6OarZhAk6RPOBHK-5" vertex="1">
<mxGeometry y="60" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-10" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" parent="LWdVl6OarZhAk6RPOBHK-9" vertex="1">
<mxCell id="LWdVl6OarZhAk6RPOBHK-10" value="*" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" parent="LWdVl6OarZhAk6RPOBHK-9" vertex="1">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-11" value="Name" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="LWdVl6OarZhAk6RPOBHK-9" vertex="1">
<mxCell id="LWdVl6OarZhAk6RPOBHK-11" value="n&lt;span style=&quot;background-color: initial;&quot;&gt;ame&lt;/span&gt;" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="LWdVl6OarZhAk6RPOBHK-9" vertex="1">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
@@ -67,110 +67,29 @@
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-14" value="Description" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="LWdVl6OarZhAk6RPOBHK-12" vertex="1">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-63" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" parent="LWdVl6OarZhAk6RPOBHK-5" vertex="1">
<mxGeometry y="120" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-64" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" parent="LWdVl6OarZhAk6RPOBHK-63" vertex="1">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-65" value="BedType" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="LWdVl6OarZhAk6RPOBHK-63" vertex="1">
<mxCell id="LWdVl6OarZhAk6RPOBHK-14" value="description" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="LWdVl6OarZhAk6RPOBHK-12" vertex="1">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-69" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" parent="LWdVl6OarZhAk6RPOBHK-5" vertex="1">
<mxGeometry y="150" width="180" height="30" as="geometry" />
<mxGeometry y="120" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-70" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" parent="LWdVl6OarZhAk6RPOBHK-69" vertex="1">
<mxCell id="LWdVl6OarZhAk6RPOBHK-70" value="*" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" parent="LWdVl6OarZhAk6RPOBHK-69" vertex="1">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-71" value="MaxGuestNum" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="LWdVl6OarZhAk6RPOBHK-69" vertex="1">
<mxCell id="LWdVl6OarZhAk6RPOBHK-71" value="maxGuestNum" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="LWdVl6OarZhAk6RPOBHK-69" vertex="1">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-34" value="RoomCategoryDetails" style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;html=1;whiteSpace=wrap;" parent="LWdVl6OarZhAk6RPOBHK-3" vertex="1">
<mxGeometry x="530" y="70" width="180" height="150" as="geometry" />
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-35" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;html=1;" parent="LWdVl6OarZhAk6RPOBHK-34" vertex="1">
<mxGeometry y="30" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-36" value="PK,FK1" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;fontStyle=1;overflow=hidden;html=1;whiteSpace=wrap;" parent="LWdVl6OarZhAk6RPOBHK-35" vertex="1">
<mxGeometry width="60" height="30" as="geometry">
<mxRectangle width="60" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-37" value="ID_Categoria" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;fontStyle=5;overflow=hidden;html=1;whiteSpace=wrap;" parent="LWdVl6OarZhAk6RPOBHK-35" vertex="1">
<mxGeometry x="60" width="120" height="30" as="geometry">
<mxRectangle width="120" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-38" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=1;html=1;" parent="LWdVl6OarZhAk6RPOBHK-34" vertex="1">
<mxGeometry y="60" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-39" value="PK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;fontStyle=1;overflow=hidden;html=1;whiteSpace=wrap;" parent="LWdVl6OarZhAk6RPOBHK-38" vertex="1">
<mxGeometry width="60" height="30" as="geometry">
<mxRectangle width="60" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-40" value="ID" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;fontStyle=5;overflow=hidden;html=1;whiteSpace=wrap;" parent="LWdVl6OarZhAk6RPOBHK-38" vertex="1">
<mxGeometry x="60" width="120" height="30" as="geometry">
<mxRectangle width="120" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-41" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;html=1;" parent="LWdVl6OarZhAk6RPOBHK-34" vertex="1">
<mxGeometry y="90" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-42" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;html=1;whiteSpace=wrap;" parent="LWdVl6OarZhAk6RPOBHK-41" vertex="1">
<mxGeometry width="60" height="30" as="geometry">
<mxRectangle width="60" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-43" value="DetailSection" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;html=1;whiteSpace=wrap;" parent="LWdVl6OarZhAk6RPOBHK-41" vertex="1">
<mxGeometry x="60" width="120" height="30" as="geometry">
<mxRectangle width="120" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-44" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;html=1;" parent="LWdVl6OarZhAk6RPOBHK-34" vertex="1">
<mxGeometry y="120" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-45" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;html=1;whiteSpace=wrap;" parent="LWdVl6OarZhAk6RPOBHK-44" vertex="1">
<mxGeometry width="60" height="30" as="geometry">
<mxRectangle width="60" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-46" value="DetailValue" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;html=1;whiteSpace=wrap;" parent="LWdVl6OarZhAk6RPOBHK-44" vertex="1">
<mxGeometry x="60" width="120" height="30" as="geometry">
<mxRectangle width="120" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-47" value="RoomCategoryPhotos" style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;html=1;whiteSpace=wrap;" parent="LWdVl6OarZhAk6RPOBHK-3" vertex="1">
<mxCell id="LWdVl6OarZhAk6RPOBHK-47" value="RoomCategoryPhoto" style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;html=1;whiteSpace=wrap;" parent="LWdVl6OarZhAk6RPOBHK-3" vertex="1">
<mxGeometry x="530" y="300" width="180" height="180" as="geometry" />
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-48" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;html=1;" parent="LWdVl6OarZhAk6RPOBHK-47" vertex="1">
<mxGeometry y="30" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-49" value="PK,FK1" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;fontStyle=1;overflow=hidden;html=1;whiteSpace=wrap;" parent="LWdVl6OarZhAk6RPOBHK-48" vertex="1">
<mxGeometry width="60" height="30" as="geometry">
<mxRectangle width="60" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-50" value="ID_Categoria" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;fontStyle=5;overflow=hidden;html=1;whiteSpace=wrap;" parent="LWdVl6OarZhAk6RPOBHK-48" vertex="1">
<mxGeometry x="60" width="120" height="30" as="geometry">
<mxRectangle width="120" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-51" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=1;html=1;" parent="LWdVl6OarZhAk6RPOBHK-47" vertex="1">
<mxGeometry y="60" width="180" height="30" as="geometry" />
<mxGeometry y="30" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-52" value="PK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;fontStyle=1;overflow=hidden;html=1;whiteSpace=wrap;" parent="LWdVl6OarZhAk6RPOBHK-51" vertex="1">
<mxGeometry width="60" height="30" as="geometry">
@@ -182,15 +101,28 @@
<mxRectangle width="120" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-54" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;html=1;" parent="LWdVl6OarZhAk6RPOBHK-47" vertex="1">
<mxGeometry y="90" width="180" height="30" as="geometry" />
<mxCell id="WhIFKm_ix7Kh5_4PoCu4-1" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;html=1;" parent="LWdVl6OarZhAk6RPOBHK-47" vertex="1">
<mxGeometry y="60" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-55" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;html=1;whiteSpace=wrap;" parent="LWdVl6OarZhAk6RPOBHK-54" vertex="1">
<mxCell id="WhIFKm_ix7Kh5_4PoCu4-2" value="FK1 *" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;html=1;whiteSpace=wrap;" parent="WhIFKm_ix7Kh5_4PoCu4-1" vertex="1">
<mxGeometry width="60" height="30" as="geometry">
<mxRectangle width="60" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-56" value="Path" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;html=1;whiteSpace=wrap;" parent="LWdVl6OarZhAk6RPOBHK-54" vertex="1">
<mxCell id="WhIFKm_ix7Kh5_4PoCu4-3" value="roomCategory" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;html=1;whiteSpace=wrap;" parent="WhIFKm_ix7Kh5_4PoCu4-1" vertex="1">
<mxGeometry x="60" width="120" height="30" as="geometry">
<mxRectangle width="120" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-54" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;html=1;" parent="LWdVl6OarZhAk6RPOBHK-47" vertex="1">
<mxGeometry y="90" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-55" value="*" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;html=1;whiteSpace=wrap;" parent="LWdVl6OarZhAk6RPOBHK-54" vertex="1">
<mxGeometry width="60" height="30" as="geometry">
<mxRectangle width="60" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-56" value="path" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;html=1;whiteSpace=wrap;" parent="LWdVl6OarZhAk6RPOBHK-54" vertex="1">
<mxGeometry x="60" width="120" height="30" as="geometry">
<mxRectangle width="120" height="30" as="alternateBounds" />
</mxGeometry>
@@ -203,7 +135,7 @@
<mxRectangle width="60" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-59" value="AltText" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;html=1;whiteSpace=wrap;" parent="LWdVl6OarZhAk6RPOBHK-57" vertex="1">
<mxCell id="LWdVl6OarZhAk6RPOBHK-59" value="altText" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;html=1;whiteSpace=wrap;" parent="LWdVl6OarZhAk6RPOBHK-57" vertex="1">
<mxGeometry x="60" width="120" height="30" as="geometry">
<mxRectangle width="120" height="30" as="alternateBounds" />
</mxGeometry>
@@ -216,23 +148,12 @@
<mxRectangle width="60" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-62" value="Kind" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;html=1;whiteSpace=wrap;" parent="LWdVl6OarZhAk6RPOBHK-60" vertex="1">
<mxCell id="LWdVl6OarZhAk6RPOBHK-62" value="photoOrder" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;html=1;whiteSpace=wrap;" parent="LWdVl6OarZhAk6RPOBHK-60" vertex="1">
<mxGeometry x="60" width="120" height="30" as="geometry">
<mxRectangle width="120" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-72" value="" style="edgeStyle=entityRelationEdgeStyle;fontSize=12;html=1;endArrow=ERoneToMany;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="LWdVl6OarZhAk6RPOBHK-3" source="LWdVl6OarZhAk6RPOBHK-6" target="LWdVl6OarZhAk6RPOBHK-35" edge="1">
<mxGeometry width="100" height="100" relative="1" as="geometry">
<mxPoint x="400" y="320" as="sourcePoint" />
<mxPoint x="500" y="220" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="emevr3pmkmlQrjx6r0mN-51" value="&lt;font style=&quot;font-size: 16px;&quot;&gt;0:N&lt;/font&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="LWdVl6OarZhAk6RPOBHK-72" vertex="1" connectable="0">
<mxGeometry x="0.0812" y="2" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-73" value="" style="edgeStyle=entityRelationEdgeStyle;fontSize=12;html=1;endArrow=ERoneToMany;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="LWdVl6OarZhAk6RPOBHK-3" source="LWdVl6OarZhAk6RPOBHK-6" target="LWdVl6OarZhAk6RPOBHK-48" edge="1">
<mxCell id="LWdVl6OarZhAk6RPOBHK-73" value="" style="edgeStyle=entityRelationEdgeStyle;fontSize=12;html=1;endArrow=ERoneToMany;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="LWdVl6OarZhAk6RPOBHK-3" source="LWdVl6OarZhAk6RPOBHK-6" target="WhIFKm_ix7Kh5_4PoCu4-1" edge="1">
<mxGeometry width="100" height="100" relative="1" as="geometry">
<mxPoint x="400" y="320" as="sourcePoint" />
<mxPoint x="500" y="220" as="targetPoint" />
@@ -243,6 +164,59 @@
<mxPoint x="-13" y="-1" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="ZFZbn5R1wq40-V8rWeq3-11" value="RoomCategoryBedType" style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;html=1;" vertex="1" parent="LWdVl6OarZhAk6RPOBHK-3">
<mxGeometry x="490" y="70" width="210" height="120" as="geometry" />
</mxCell>
<mxCell id="ZFZbn5R1wq40-V8rWeq3-21" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=1;" vertex="1" parent="ZFZbn5R1wq40-V8rWeq3-11">
<mxGeometry y="30" width="210" height="30" as="geometry" />
</mxCell>
<mxCell id="ZFZbn5R1wq40-V8rWeq3-22" value="PK, FK1 *" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;fontStyle=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="ZFZbn5R1wq40-V8rWeq3-21">
<mxGeometry width="70" height="30" as="geometry">
<mxRectangle width="70" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="ZFZbn5R1wq40-V8rWeq3-23" value="bedType" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;fontStyle=5;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="ZFZbn5R1wq40-V8rWeq3-21">
<mxGeometry x="70" width="140" height="30" as="geometry">
<mxRectangle width="140" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="ZFZbn5R1wq40-V8rWeq3-12" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=1;" vertex="1" parent="ZFZbn5R1wq40-V8rWeq3-11">
<mxGeometry y="60" width="210" height="30" as="geometry" />
</mxCell>
<mxCell id="ZFZbn5R1wq40-V8rWeq3-13" value="PK, FK2 *" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;fontStyle=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="ZFZbn5R1wq40-V8rWeq3-12">
<mxGeometry width="70" height="30" as="geometry">
<mxRectangle width="70" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="ZFZbn5R1wq40-V8rWeq3-14" value="roomCategory" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;fontStyle=5;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="ZFZbn5R1wq40-V8rWeq3-12">
<mxGeometry x="70" width="140" height="30" as="geometry">
<mxRectangle width="140" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="ZFZbn5R1wq40-V8rWeq3-15" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="ZFZbn5R1wq40-V8rWeq3-11">
<mxGeometry y="90" width="210" height="30" as="geometry" />
</mxCell>
<mxCell id="ZFZbn5R1wq40-V8rWeq3-16" value="*" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="ZFZbn5R1wq40-V8rWeq3-15">
<mxGeometry width="70" height="30" as="geometry">
<mxRectangle width="70" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="ZFZbn5R1wq40-V8rWeq3-17" value="amount" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="ZFZbn5R1wq40-V8rWeq3-15">
<mxGeometry x="70" width="140" height="30" as="geometry">
<mxRectangle width="140" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="ZFZbn5R1wq40-V8rWeq3-24" value="" style="edgeStyle=entityRelationEdgeStyle;fontSize=12;html=1;endArrow=ERoneToMany;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="LWdVl6OarZhAk6RPOBHK-3" source="ZFZbn5R1wq40-V8rWeq3-12" target="LWdVl6OarZhAk6RPOBHK-6">
<mxGeometry width="100" height="100" relative="1" as="geometry">
<mxPoint x="330" y="260" as="sourcePoint" />
<mxPoint x="450" y="140" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="ZFZbn5R1wq40-V8rWeq3-25" value="&lt;font style=&quot;font-size: 17px;&quot;&gt;N:1&lt;/font&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="ZFZbn5R1wq40-V8rWeq3-24">
<mxGeometry x="0.0788" y="-1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-74" value="Disponibilidad Habitaciones" style="swimlane;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="220" y="640" width="780" height="240" as="geometry">
<mxRectangle x="320" y="660" width="190" height="30" as="alternateBounds" />
@@ -251,7 +225,7 @@
<mxCell id="LWdVl6OarZhAk6RPOBHK-75" value="&lt;h1 style=&quot;margin-top: 0px; line-height: 50%;&quot;&gt;&lt;span style=&quot;font-size: 12px; font-weight: 400;&quot;&gt;Sevicio que gestiona la disponibilidad de las distintas habitaciones.&lt;/span&gt;&lt;/h1&gt;&lt;div&gt;La disponibilidad es una categoría de habitación por día.&lt;/div&gt;&lt;div&gt;Una categoría sólo tiene una única disponibilidad para un día concreto.&lt;/div&gt;" style="text;html=1;whiteSpace=wrap;overflow=hidden;rounded=0;" parent="LWdVl6OarZhAk6RPOBHK-74" vertex="1">
<mxGeometry x="10" y="30" width="330" height="130" as="geometry" />
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-89" value="Availability&amp;nbsp;&lt;span class=&quot;module--definitions__pronunciation js-definitions-pronunciation&quot;&gt;&lt;/span&gt;" style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;html=1;whiteSpace=wrap;" parent="LWdVl6OarZhAk6RPOBHK-74" vertex="1">
<mxCell id="LWdVl6OarZhAk6RPOBHK-89" value="RoomAvailability&amp;nbsp;&lt;span class=&quot;module--definitions__pronunciation js-definitions-pronunciation&quot;&gt;&lt;/span&gt;" style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;html=1;whiteSpace=wrap;" parent="LWdVl6OarZhAk6RPOBHK-74" vertex="1">
<mxGeometry x="450" y="70" width="180" height="120" as="geometry" />
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-90" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;html=1;" parent="LWdVl6OarZhAk6RPOBHK-89" vertex="1">
@@ -262,7 +236,7 @@
<mxRectangle width="60" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-92" value="ID_Categoria" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;fontStyle=5;overflow=hidden;html=1;whiteSpace=wrap;" parent="LWdVl6OarZhAk6RPOBHK-90" vertex="1">
<mxCell id="LWdVl6OarZhAk6RPOBHK-92" value="roomCategory" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;fontStyle=5;overflow=hidden;html=1;whiteSpace=wrap;" parent="LWdVl6OarZhAk6RPOBHK-90" vertex="1">
<mxGeometry x="60" width="120" height="30" as="geometry">
<mxRectangle width="120" height="30" as="alternateBounds" />
</mxGeometry>
@@ -275,7 +249,7 @@
<mxRectangle width="60" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-95" value="Day" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;fontStyle=5;overflow=hidden;html=1;whiteSpace=wrap;" parent="LWdVl6OarZhAk6RPOBHK-93" vertex="1">
<mxCell id="LWdVl6OarZhAk6RPOBHK-95" value="day" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;fontStyle=5;overflow=hidden;html=1;whiteSpace=wrap;" parent="LWdVl6OarZhAk6RPOBHK-93" vertex="1">
<mxGeometry x="60" width="120" height="30" as="geometry">
<mxRectangle width="120" height="30" as="alternateBounds" />
</mxGeometry>
@@ -283,12 +257,12 @@
<mxCell id="LWdVl6OarZhAk6RPOBHK-96" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;html=1;" parent="LWdVl6OarZhAk6RPOBHK-89" vertex="1">
<mxGeometry y="90" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-97" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;html=1;whiteSpace=wrap;" parent="LWdVl6OarZhAk6RPOBHK-96" vertex="1">
<mxCell id="LWdVl6OarZhAk6RPOBHK-97" value="*" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;html=1;whiteSpace=wrap;" parent="LWdVl6OarZhAk6RPOBHK-96" vertex="1">
<mxGeometry width="60" height="30" as="geometry">
<mxRectangle width="60" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-98" value="Availability&amp;nbsp;&lt;span class=&quot;module--definitions__pronunciation js-definitions-pronunciation&quot;&gt;&lt;/span&gt;" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;html=1;whiteSpace=wrap;" parent="LWdVl6OarZhAk6RPOBHK-96" vertex="1">
<mxCell id="LWdVl6OarZhAk6RPOBHK-98" value="availability&amp;nbsp;&lt;span class=&quot;module--definitions__pronunciation js-definitions-pronunciation&quot;&gt;&lt;/span&gt;" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;html=1;whiteSpace=wrap;" parent="LWdVl6OarZhAk6RPOBHK-96" vertex="1">
<mxGeometry x="60" width="120" height="30" as="geometry">
<mxRectangle width="120" height="30" as="alternateBounds" />
</mxGeometry>
@@ -340,7 +314,7 @@
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-158" value="ID_Categoria" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="LWdVl6OarZhAk6RPOBHK-156" vertex="1">
<mxCell id="LWdVl6OarZhAk6RPOBHK-158" value="roomCategory" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="LWdVl6OarZhAk6RPOBHK-156" vertex="1">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
@@ -353,7 +327,7 @@
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-161" value="StartDate" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="LWdVl6OarZhAk6RPOBHK-159" vertex="1">
<mxCell id="LWdVl6OarZhAk6RPOBHK-161" value="startDate" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="LWdVl6OarZhAk6RPOBHK-159" vertex="1">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
@@ -366,7 +340,7 @@
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-164" value="EndDate" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="LWdVl6OarZhAk6RPOBHK-162" vertex="1">
<mxCell id="LWdVl6OarZhAk6RPOBHK-164" value="endDate" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="LWdVl6OarZhAk6RPOBHK-162" vertex="1">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
@@ -379,7 +353,7 @@
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-167" value="Coment" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="LWdVl6OarZhAk6RPOBHK-165" vertex="1">
<mxCell id="LWdVl6OarZhAk6RPOBHK-167" value="coment" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="LWdVl6OarZhAk6RPOBHK-165" vertex="1">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
@@ -411,15 +385,15 @@
<mxRectangle width="140" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="iktsdYJ4qj7C3vffh0-E-4" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=1;strokeColor=default;strokeWidth=1;" vertex="1" parent="u8q9OSYWNScgUxuhDeax-5">
<mxCell id="iktsdYJ4qj7C3vffh0-E-4" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=1;strokeColor=default;strokeWidth=1;" parent="u8q9OSYWNScgUxuhDeax-5" vertex="1">
<mxGeometry y="60" width="200" height="30" as="geometry" />
</mxCell>
<mxCell id="iktsdYJ4qj7C3vffh0-E-5" value="PK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;fontStyle=1;overflow=hidden;whiteSpace=wrap;html=1;fontColor=default;perimeter=rectanglePerimeter;strokeColor=inherit;" vertex="1" parent="iktsdYJ4qj7C3vffh0-E-4">
<mxCell id="iktsdYJ4qj7C3vffh0-E-5" value="PK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;fontStyle=1;overflow=hidden;whiteSpace=wrap;html=1;fontColor=default;perimeter=rectanglePerimeter;strokeColor=inherit;" parent="iktsdYJ4qj7C3vffh0-E-4" vertex="1">
<mxGeometry width="60" height="30" as="geometry">
<mxRectangle width="60" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="iktsdYJ4qj7C3vffh0-E-6" value="Date" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;fontStyle=5;overflow=hidden;whiteSpace=wrap;html=1;fontColor=default;perimeter=rectanglePerimeter;strokeColor=inherit;" vertex="1" parent="iktsdYJ4qj7C3vffh0-E-4">
<mxCell id="iktsdYJ4qj7C3vffh0-E-6" value="Date" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;fontStyle=5;overflow=hidden;whiteSpace=wrap;html=1;fontColor=default;perimeter=rectanglePerimeter;strokeColor=inherit;" parent="iktsdYJ4qj7C3vffh0-E-4" vertex="1">
<mxGeometry x="60" width="140" height="30" as="geometry">
<mxRectangle width="140" height="30" as="alternateBounds" />
</mxGeometry>
@@ -451,9 +425,9 @@
</mxGeometry>
</mxCell>
<mxCell id="u8q9OSYWNScgUxuhDeax-3" value="No podrá haber 2 tarifarios para la misma categoria cuyas fechas se superpongan.&amp;nbsp;&lt;span style=&quot;background-color: initial;&quot;&gt;La idea de los tarifarios es poder tener en cada temporada una serie de tarifas base. A su vez estas tarifas pueden tener precios condicionales, según ciertos parámetros como tipo de día.&lt;/span&gt;&lt;div&gt;Estas tarifas podrán ser sobreescritas en fechas concretas medienta el sistema de precios.&lt;/div&gt;" style="shape=note;size=20;align=center;whiteSpace=wrap;html=1;" parent="LWdVl6OarZhAk6RPOBHK-103" vertex="1">
<mxGeometry x="110" y="435" width="320" height="165" as="geometry" />
<mxGeometry x="550" y="430" width="320" height="165" as="geometry" />
</mxCell>
<mxCell id="yrwpf_HABRAGMyV-ZLDz-1" value="Fare" style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;html=1;" parent="LWdVl6OarZhAk6RPOBHK-103" vertex="1">
<mxCell id="yrwpf_HABRAGMyV-ZLDz-1" value="RoomFare" style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;html=1;" parent="LWdVl6OarZhAk6RPOBHK-103" vertex="1">
<mxGeometry x="340" y="170" width="170" height="180" as="geometry" />
</mxCell>
<mxCell id="yrwpf_HABRAGMyV-ZLDz-2" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=1;" parent="yrwpf_HABRAGMyV-ZLDz-1" vertex="1">
@@ -477,7 +451,7 @@
<mxRectangle width="60" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="yrwpf_HABRAGMyV-ZLDz-7" value="ID_FareTable" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="yrwpf_HABRAGMyV-ZLDz-5" vertex="1">
<mxCell id="yrwpf_HABRAGMyV-ZLDz-7" value="fareTable" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="yrwpf_HABRAGMyV-ZLDz-5" vertex="1">
<mxGeometry x="60" width="110" height="30" as="geometry">
<mxRectangle width="110" height="30" as="alternateBounds" />
</mxGeometry>
@@ -490,7 +464,7 @@
<mxRectangle width="60" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="yrwpf_HABRAGMyV-ZLDz-10" value="GuestNumber" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="yrwpf_HABRAGMyV-ZLDz-8" vertex="1">
<mxCell id="yrwpf_HABRAGMyV-ZLDz-10" value="guestNumber" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="yrwpf_HABRAGMyV-ZLDz-8" vertex="1">
<mxGeometry x="60" width="110" height="30" as="geometry">
<mxRectangle width="110" height="30" as="alternateBounds" />
</mxGeometry>
@@ -503,7 +477,7 @@
<mxRectangle width="60" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="yrwpf_HABRAGMyV-ZLDz-13" value="FareAmount" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="yrwpf_HABRAGMyV-ZLDz-11" vertex="1">
<mxCell id="yrwpf_HABRAGMyV-ZLDz-13" value="fareAmount" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="yrwpf_HABRAGMyV-ZLDz-11" vertex="1">
<mxGeometry x="60" width="110" height="30" as="geometry">
<mxRectangle width="110" height="30" as="alternateBounds" />
</mxGeometry>
@@ -516,16 +490,16 @@
<mxRectangle width="60" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="yrwpf_HABRAGMyV-ZLDz-16" value="DayType" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="yrwpf_HABRAGMyV-ZLDz-14" vertex="1">
<mxCell id="yrwpf_HABRAGMyV-ZLDz-16" value="dayType" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="yrwpf_HABRAGMyV-ZLDz-14" vertex="1">
<mxGeometry x="60" width="110" height="30" as="geometry">
<mxRectangle width="110" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-121" value="Configuracion Sistema" style="swimlane;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="170" y="-460" width="880" height="340" as="geometry" />
<mxGeometry x="170" y="-780" width="880" height="420" as="geometry" />
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-105" value="Config" style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;html=1;" parent="LWdVl6OarZhAk6RPOBHK-121" vertex="1">
<mxGeometry x="380" y="60" width="180" height="150" as="geometry" />
<mxCell id="LWdVl6OarZhAk6RPOBHK-105" value="ConfigVariable" style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;html=1;" parent="LWdVl6OarZhAk6RPOBHK-121" vertex="1">
<mxGeometry x="380" y="60" width="180" height="120" as="geometry" />
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-106" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=1;" parent="LWdVl6OarZhAk6RPOBHK-105" vertex="1">
<mxGeometry y="30" width="180" height="30" as="geometry" />
@@ -535,46 +509,33 @@
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-108" value="ID" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;fontStyle=5;overflow=hidden;whiteSpace=wrap;html=1;" parent="LWdVl6OarZhAk6RPOBHK-106" vertex="1">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="iktsdYJ4qj7C3vffh0-E-1" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="LWdVl6OarZhAk6RPOBHK-105">
<mxGeometry y="60" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="iktsdYJ4qj7C3vffh0-E-2" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="iktsdYJ4qj7C3vffh0-E-1">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="iktsdYJ4qj7C3vffh0-E-3" value="Key" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="iktsdYJ4qj7C3vffh0-E-1">
<mxCell id="LWdVl6OarZhAk6RPOBHK-108" value="key" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;fontStyle=5;overflow=hidden;whiteSpace=wrap;html=1;" parent="LWdVl6OarZhAk6RPOBHK-106" vertex="1">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-112" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" parent="LWdVl6OarZhAk6RPOBHK-105" vertex="1">
<mxGeometry y="90" width="180" height="30" as="geometry" />
<mxGeometry y="60" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-113" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" parent="LWdVl6OarZhAk6RPOBHK-112" vertex="1">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-114" value="Value" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="LWdVl6OarZhAk6RPOBHK-112" vertex="1">
<mxCell id="LWdVl6OarZhAk6RPOBHK-114" value="value" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="LWdVl6OarZhAk6RPOBHK-112" vertex="1">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-109" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" parent="LWdVl6OarZhAk6RPOBHK-105" vertex="1">
<mxGeometry y="120" width="180" height="30" as="geometry" />
<mxGeometry y="90" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-110" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" parent="LWdVl6OarZhAk6RPOBHK-109" vertex="1">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-111" value="Section" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="LWdVl6OarZhAk6RPOBHK-109" vertex="1">
<mxCell id="LWdVl6OarZhAk6RPOBHK-111" value="section" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="LWdVl6OarZhAk6RPOBHK-109" vertex="1">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
@@ -582,8 +543,8 @@
<mxCell id="LWdVl6OarZhAk6RPOBHK-123" value="&lt;h1 style=&quot;margin-top: 0px; line-height: 50%;&quot;&gt;&lt;font style=&quot;font-size: 12px; font-weight: normal;&quot;&gt;Configuración del sistema.&lt;br&gt;Consiste en un sistema Clave-Valor, organizados en una serie de secciones.&lt;/font&gt;&lt;/h1&gt;" style="text;html=1;whiteSpace=wrap;overflow=hidden;rounded=0;" parent="LWdVl6OarZhAk6RPOBHK-121" vertex="1">
<mxGeometry x="10" y="30" width="230" height="90" as="geometry" />
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-139" value="Users" style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;html=1;" parent="LWdVl6OarZhAk6RPOBHK-121" vertex="1">
<mxGeometry x="650" y="40" width="180" height="180" as="geometry" />
<mxCell id="LWdVl6OarZhAk6RPOBHK-139" value="User" style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;html=1;" parent="LWdVl6OarZhAk6RPOBHK-121" vertex="1">
<mxGeometry x="657" y="60" width="180" height="150" as="geometry" />
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-140" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=1;" parent="LWdVl6OarZhAk6RPOBHK-139" vertex="1">
<mxGeometry y="30" width="180" height="30" as="geometry" />
@@ -606,7 +567,7 @@
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-145" value="Username" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="LWdVl6OarZhAk6RPOBHK-143" vertex="1">
<mxCell id="LWdVl6OarZhAk6RPOBHK-145" value="username" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="LWdVl6OarZhAk6RPOBHK-143" vertex="1">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
@@ -619,33 +580,20 @@
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-148" value="Password" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="LWdVl6OarZhAk6RPOBHK-146" vertex="1">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-149" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" parent="LWdVl6OarZhAk6RPOBHK-139" vertex="1">
<mxGeometry y="120" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-150" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" parent="LWdVl6OarZhAk6RPOBHK-149" vertex="1">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="LWdVl6OarZhAk6RPOBHK-151" value="Name" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="LWdVl6OarZhAk6RPOBHK-149" vertex="1">
<mxCell id="LWdVl6OarZhAk6RPOBHK-148" value="password" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="LWdVl6OarZhAk6RPOBHK-146" vertex="1">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="K5r6t-TvMaqbFEV9AC27-1" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" parent="LWdVl6OarZhAk6RPOBHK-139" vertex="1">
<mxGeometry y="150" width="180" height="30" as="geometry" />
<mxGeometry y="120" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="K5r6t-TvMaqbFEV9AC27-2" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" parent="K5r6t-TvMaqbFEV9AC27-1" vertex="1">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="K5r6t-TvMaqbFEV9AC27-3" value="Role" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="K5r6t-TvMaqbFEV9AC27-1" vertex="1">
<mxCell id="K5r6t-TvMaqbFEV9AC27-3" value="roles" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="K5r6t-TvMaqbFEV9AC27-1" vertex="1">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
@@ -1008,6 +956,62 @@
<mxPoint x="1" y="24" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="ZFZbn5R1wq40-V8rWeq3-26" value="" style="edgeStyle=entityRelationEdgeStyle;fontSize=12;html=1;endArrow=ERoneToMany;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="ZFZbn5R1wq40-V8rWeq3-21" target="ZFZbn5R1wq40-V8rWeq3-2">
<mxGeometry width="100" height="100" relative="1" as="geometry">
<mxPoint x="720" y="205" as="sourcePoint" />
<mxPoint x="525" y="405" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="ZFZbn5R1wq40-V8rWeq3-27" value="&lt;font style=&quot;font-size: 17px;&quot;&gt;N:1&lt;/font&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="ZFZbn5R1wq40-V8rWeq3-26">
<mxGeometry x="0.0788" y="-1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="ZFZbn5R1wq40-V8rWeq3-28" value="Category Config" style="swimlane;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="170" y="-300" width="880" height="300" as="geometry" />
</mxCell>
<mxCell id="ZFZbn5R1wq40-V8rWeq3-1" value="BedType" style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;html=1;" vertex="1" parent="ZFZbn5R1wq40-V8rWeq3-28">
<mxGeometry x="70" y="90" width="180" height="120" as="geometry" />
</mxCell>
<mxCell id="ZFZbn5R1wq40-V8rWeq3-2" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=1;" vertex="1" parent="ZFZbn5R1wq40-V8rWeq3-1">
<mxGeometry y="30" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="ZFZbn5R1wq40-V8rWeq3-3" value="PK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;fontStyle=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="ZFZbn5R1wq40-V8rWeq3-2">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="ZFZbn5R1wq40-V8rWeq3-4" value="ID" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;fontStyle=5;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="ZFZbn5R1wq40-V8rWeq3-2">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="ZFZbn5R1wq40-V8rWeq3-5" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="ZFZbn5R1wq40-V8rWeq3-1">
<mxGeometry y="60" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="ZFZbn5R1wq40-V8rWeq3-6" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="ZFZbn5R1wq40-V8rWeq3-5">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="ZFZbn5R1wq40-V8rWeq3-7" value="description" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="ZFZbn5R1wq40-V8rWeq3-5">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="ZFZbn5R1wq40-V8rWeq3-8" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="ZFZbn5R1wq40-V8rWeq3-1">
<mxGeometry y="90" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="ZFZbn5R1wq40-V8rWeq3-9" value="*" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="ZFZbn5R1wq40-V8rWeq3-8">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="ZFZbn5R1wq40-V8rWeq3-10" value="iconUrl" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="ZFZbn5R1wq40-V8rWeq3-8">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
+45
View File
@@ -0,0 +1,45 @@
<?php
declare(strict_types=1);
namespace DoctrineMigrations;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
/**
* Auto-generated Migration: Please modify to your needs!
*/
final class Version20240909114239 extends AbstractMigration
{
public function getDescription(): string
{
return '';
}
public function up(Schema $schema): void
{
// this up() migration is auto-generated, please modify it to your needs
$this->addSql('DROP SEQUENCE room_category_details_id_seq CASCADE');
$this->addSql('ALTER TABLE room_category_details DROP CONSTRAINT fk_3735fabb67333dd');
$this->addSql('DROP TABLE room_category_details');
$this->addSql('ALTER TABLE room_category_photo ADD photo_order INT DEFAULT NULL');
$this->addSql('ALTER TABLE room_category_photo DROP kind');
$this->addSql('ALTER TABLE room_fare DROP CONSTRAINT FK_35C9B213A7233EF2');
$this->addSql('ALTER TABLE room_fare ADD CONSTRAINT FK_35C9B213A7233EF2 FOREIGN KEY (fare_table_id) REFERENCES fare_table (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE');
}
public function down(Schema $schema): void
{
// this down() migration is auto-generated, please modify it to your needs
$this->addSql('CREATE SCHEMA public');
$this->addSql('CREATE SEQUENCE room_category_details_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
$this->addSql('CREATE TABLE room_category_details (id INT NOT NULL, room_category_id INT NOT NULL, details_section VARCHAR(255) NOT NULL, detail_value VARCHAR(255) NOT NULL, PRIMARY KEY(id))');
$this->addSql('CREATE INDEX idx_3735fabb67333dd ON room_category_details (room_category_id)');
$this->addSql('ALTER TABLE room_category_details ADD CONSTRAINT fk_3735fabb67333dd FOREIGN KEY (room_category_id) REFERENCES room_category (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
$this->addSql('ALTER TABLE room_fare DROP CONSTRAINT fk_35c9b213a7233ef2');
$this->addSql('ALTER TABLE room_fare ADD CONSTRAINT fk_35c9b213a7233ef2 FOREIGN KEY (fare_table_id) REFERENCES fare_table (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
$this->addSql('ALTER TABLE room_category_photo ADD kind VARCHAR(30) NOT NULL');
$this->addSql('ALTER TABLE room_category_photo DROP photo_order');
}
}
+42
View File
@@ -0,0 +1,42 @@
<?php
declare(strict_types=1);
namespace DoctrineMigrations;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
/**
* Auto-generated Migration: Please modify to your needs!
*/
final class Version20240909131104 extends AbstractMigration
{
public function getDescription(): string
{
return '';
}
public function up(Schema $schema): void
{
// this up() migration is auto-generated, please modify it to your needs
$this->addSql('CREATE SEQUENCE bed_type_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
$this->addSql('CREATE TABLE bed_type (id INT NOT NULL, name VARCHAR(255) DEFAULT NULL, icon_url VARCHAR(255) DEFAULT NULL, PRIMARY KEY(id))');
$this->addSql('CREATE TABLE room_category_bed_type (room_category_id INT NOT NULL, bed_type_id INT NOT NULL, amount INT NOT NULL, PRIMARY KEY(room_category_id, bed_type_id))');
$this->addSql('CREATE INDEX IDX_FB45954567333DD ON room_category_bed_type (room_category_id)');
$this->addSql('CREATE INDEX IDX_FB4595458158330E ON room_category_bed_type (bed_type_id)');
$this->addSql('ALTER TABLE room_category_bed_type ADD CONSTRAINT FK_FB45954567333DD FOREIGN KEY (room_category_id) REFERENCES room_category (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE');
$this->addSql('ALTER TABLE room_category_bed_type ADD CONSTRAINT FK_FB4595458158330E FOREIGN KEY (bed_type_id) REFERENCES bed_type (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
}
public function down(Schema $schema): void
{
// this down() migration is auto-generated, please modify it to your needs
$this->addSql('CREATE SCHEMA public');
$this->addSql('DROP SEQUENCE bed_type_id_seq CASCADE');
$this->addSql('ALTER TABLE room_category_bed_type DROP CONSTRAINT FK_FB45954567333DD');
$this->addSql('ALTER TABLE room_category_bed_type DROP CONSTRAINT FK_FB4595458158330E');
$this->addSql('DROP TABLE bed_type');
$this->addSql('DROP TABLE room_category_bed_type');
}
}
+32
View File
@@ -0,0 +1,32 @@
<?php
declare(strict_types=1);
namespace DoctrineMigrations;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
/**
* Auto-generated Migration: Please modify to your needs!
*/
final class Version20240910160534 extends AbstractMigration
{
public function getDescription(): string
{
return '';
}
public function up(Schema $schema): void
{
// this up() migration is auto-generated, please modify it to your needs
$this->addSql('ALTER TABLE room_category DROP bed_type');
}
public function down(Schema $schema): void
{
// this down() migration is auto-generated, please modify it to your needs
$this->addSql('CREATE SCHEMA public');
$this->addSql('ALTER TABLE room_category ADD bed_type VARCHAR(64) DEFAULT NULL');
}
}
@@ -2,23 +2,21 @@
namespace App\Controller\Admin;
use App\Entity\RoomCategoryDetails;
use App\Entity\BedType;
use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractCrudController;
use EasyCorp\Bundle\EasyAdminBundle\Field\TextField;
use EasyCorp\Bundle\EasyAdminBundle\Field\UrlField;
class RoomCategoryDetailsCrudController extends AbstractCrudController
class BedTypeCrudController extends AbstractCrudController
{
public static function getEntityFqcn(): string
{
return RoomCategoryDetails::class;
return BedType::class;
}
public function configureFields(string $pageName): iterable
{
return [
TextField::new('detailsSection'),
TextField::new('detailValue'),
];
yield TextField::new('name');
yield UrlField::new('iconUrl');
}
}
@@ -20,7 +20,6 @@ use Symfony\Component\Security\Http\Attribute\IsGranted;
#[IsGranted("ROLE_ADMIN")]
class RoomAvailabilityAdminController extends AbstractController
{
private $adminUrlGenerator;
private EntityManagerInterface $entityManager;
@@ -129,19 +128,4 @@ class RoomAvailabilityAdminController extends AbstractController
'categoryId' => $categoryId,
]);
}
#[Route('/admin/roomAvailabilityTEST/', name: 'admin_roomAvailability_test')]
public function availabilityTest(EntityManagerInterface $entityManager): Response
{
$avl = new RoomAvailability();
$avl->setDay(new \DateTime("2024-04-24"));
$avl->setRoomCategory($entityManager->find(RoomCategory::class, 4));
$avl->setNumAvailable(2);
$entityManager->persist($avl);
$entityManager->flush();
return $this->json($avl);
}
}
@@ -0,0 +1,143 @@
<?php
namespace App\Controller\Admin;
use App\Entity\RoomCategory;
use App\Entity\RoomCategoryBedType;
use App\Repository\RoomCategoryRepository;
use App\Repository\RoomCategoryBedTypeRepository;
use App\Form\RoomCategoryBedTypeFormType;
use Doctrine\ORM\EntityManagerInterface;
use EasyCorp\Bundle\EasyAdminBundle\Router\AdminUrlGenerator;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\Security\Http\Attribute\IsGranted;
#[IsGranted("ROLE_ADMIN")]
class RoomCategoryBedTypeAdminController extends AbstractController
{
private $adminUrlGenerator;
private EntityManagerInterface $entityManager;
public function __construct(AdminUrlGenerator $adminUrlGenerator, EntityManagerInterface $em)
{
$this->adminUrlGenerator = $adminUrlGenerator;
$this->entityManager = $em;
}
#[Route('/admin/roomCategoryBedType', name: 'admin_roomCategoryBedType')]
public function index(RoomCategoryRepository $catRepo): Response
{
$categoryList = $catRepo->findAll();
return $this->render('admin/room_category_bed_type_admin/index.html.twig', [
'roomCategoryList' => $categoryList,
]);
}
// List BedTypes from category.
#[Route('/admin/roomCategoryBedType/{categoryId}', name: 'admin_roomCategoryBedType_category')]
public function categoryBedTypes(RoomCategoryRepository $catRepo, RoomCategoryBedTypeRepository $repo, string $categoryId): Response
{
$category = $catRepo->find($categoryId);
$bedTypeList = $repo->findByRoomCategory($categoryId);
return $this->render('admin/room_category_bed_type_admin/categoryBedTypes.html.twig', [
'categoryData' => $category,
'bedTypeList' => $bedTypeList,
]);
}
// Create a RoomCategory BedType.
#[Route('/admin/roomCategoryBedType/{categoryId}/new', name: 'admin_roomCategoryBedType_category_create')]
public function createCategoryBedType(Request $request, RoomCategoryBedTypeRepository $repo, string $categoryId): Response
{
$roomCatBedType = new RoomCategoryBedType();
$roomCategoryItem = $this->entityManager->find(RoomCategory::class, $categoryId);
$roomCatBedType->setRoomCategory($roomCategoryItem);
$form = $this->createForm(RoomCategoryBedTypeFormType::class, $roomCatBedType, [
'selectRoomCategory' => false,
]);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
// $form->getData() holds the submitted values
// but, the original `$availabilityItem` variable has also been updated
$this->entityManager->persist($roomCatBedType);
$this->entityManager->flush();
$url = $this->adminUrlGenerator->setRoute('admin_roomCategoryBedType_category', [
'categoryId' => $roomCatBedType->getRoomCategory()->getId(),
])->generateUrl();
return $this->redirect($url);
}
return $this->render('admin/adminEdit.html.twig', [
'form' => $form,
'ElementType' => "Room Categoy Bed Type",
'ElementName' => "Room Categoy - " . $roomCategoryItem
]);
}
// Edit a RoomCategory BedType.
#[Route('/admin/roomCategoryBedType/{categoryId}/{bedTypeId}/edit', name: 'admin_roomCategoryBedType_category_update')]
public function updateCategoryBedType(Request $request, RoomCategoryBedTypeRepository $repo, string $categoryId, string $bedTypeId): Response
{
$categoryBedTypeItem = $repo->find(["bedType" => $bedTypeId, "roomCategory" => $categoryId]);
if ($categoryBedTypeItem == null) {
//TODOME: Aquí deberíamos llevar a una página de error o algo.
$url = $this->adminUrlGenerator->setRoute('admin_roomCategoryBedType_category', [
'categoryId' => $categoryId,
])->generateUrl();
return $this->redirect($url);
}
$form = $this->createForm(RoomCategoryBedTypeFormType::class, $categoryBedTypeItem, [
'selectRoomCategory' => false,
]);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
// $form->getData() holds the submitted values
// but, the original `$categoryBedTypeItem` variable has also been updated
$this->entityManager->flush();
$url = $this->adminUrlGenerator->setRoute('admin_roomCategoryBedType_category', [
'categoryId' => $categoryId,
])->generateUrl();
return $this->redirect($url);
}
return $this->render('admin/adminEdit.html.twig', [
'form' => $form,
'ElementType' => "Room Categoy Bed Type",
'ElementName' => "Room Categoy - " . $categoryBedTypeItem->getRoomCategory()
]);
}
// Remove a RoomCategoryBedType.
#[Route('/admin/roomCategoryBedType/{categoryId}/{bedTypeId}/remove', name: 'admin_roomCategoryBedType_category_remove')]
public function removeCategoryBedType(RoomCategoryBedTypeRepository $repo, string $categoryId, string $bedTypeId) : Response {
$categoryBedTypeItem = $repo->find(["bedType" => $bedTypeId, "roomCategory" => $categoryId]);
if(!$categoryBedTypeItem) {
throw $this->createNotFoundException('Element not found');
}
$this->entityManager->remove($categoryBedTypeItem);
$this->entityManager->flush();
$url = $this->adminUrlGenerator->setRoute('admin_roomCategoryBedType_category', [
'categoryId' => $categoryId,
])->generateUrl();
return $this->redirect($url);
}
}
@@ -2,8 +2,11 @@
namespace App\Controller\Admin;
use App\Entity\RoomCategoryBedType;
use App\Form\RoomCategoryBedTypeForm;
use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractCrudController;
use EasyCorp\Bundle\EasyAdminBundle\Config\Crud;
use EasyCorp\Bundle\EasyAdminBundle\Config\Page;
use EasyCorp\Bundle\EasyAdminBundle\Field\Field;
use EasyCorp\Bundle\EasyAdminBundle\Field\IdField;
use EasyCorp\Bundle\EasyAdminBundle\Field\TextField;
@@ -27,14 +30,10 @@ class RoomCategoryCrudController extends AbstractCrudController
public function configureFields(string $pageName): iterable
{
return [
//IdField::new('id'),
TextField::new('name'),
TextField::new('description'),
TextField::new('bedType'),
IntegerField::new('maxGuestNum'),
CollectionField::new('roomCategoryDetails')->useEntryCrudForm(),
CollectionField::new('roomCategoryPhotos')->useEntryCrudForm()
];
yield TextField::new('name');
yield TextField::new('description');
yield TextField::new('bedType');
yield IntegerField::new('maxGuestNum');
yield CollectionField::new('roomCategoryPhotos')->useEntryCrudForm();
}
}
@@ -5,7 +5,7 @@ namespace App\Controller\Admin;
use App\Entity\RoomCategoryPhoto;
use App\Entity\RoomCategoryPhotoKinds;
use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractCrudController;
use EasyCorp\Bundle\EasyAdminBundle\Field\{TextField, ChoiceField};
use EasyCorp\Bundle\EasyAdminBundle\Field\{TextField, IntegerField};
class RoomCategoryPhotoCrudController extends AbstractCrudController
{
@@ -18,7 +18,7 @@ class RoomCategoryPhotoCrudController extends AbstractCrudController
{
yield TextField::new('path');
yield TextField::new('altText');
yield ChoiceField::new('kind')->setChoices(['Main' => 'main', 'Bathroom' => 'bathroom', 'Other' => 'other']);
yield IntegerField::new('order');
}
}
@@ -2,6 +2,7 @@
namespace App\Controller\Admin;
use App\Entity\BedType;
use App\Entity\Booking;
use App\Entity\ConfigVariable;
use App\Entity\FareTable;
@@ -40,6 +41,10 @@ class SomniaDashboardController extends AbstractDashboardController
yield MenuItem::linkToRoute('Room Availability', 'fas fa-calendar-check', 'admin_roomAvailability');
yield MenuItem::linkToCrud('Fare Tables', 'fas fa-table', FareTable::class);
yield MenuItem::linkToCrud('Room Fares', 'fas fa-tag', RoomFare::class);
yield MenuItem::Section('Category Configuration');
yield MenuItem::linkToCrud('Bed Types', 'fas fa-bed', BedType::class);
yield MenuItem::linkToRoute('Bed Type - category', 'fas fa-bed', 'admin_roomCategoryBedType');
yield MenuItem::Section('App Management');
yield MenuItem::linkToCrud('Config Vars', 'fas fa-gear', ConfigVariable::class);
@@ -6,7 +6,6 @@ use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Doctrine\ORM\EntityManagerInterface;
use App\Repository\RoomCategoryRepository;
use App\Entity\RoomCategory;
use App\Entity\RoomCategoryDetails;
use App\Entity\RoomCategoryPhoto;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\JsonResponse;
+55
View File
@@ -0,0 +1,55 @@
<?php
namespace App\Entity;
use App\Repository\BedTypeRepository;
use Symfony\Component\Serializer\Annotation\Ignore;
use Doctrine\ORM\Mapping as ORM;
#[ORM\Entity(repositoryClass: BedTypeRepository::class)]
class BedType
{
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column]
private ?int $id = null;
#[ORM\Column(length: 255, nullable: true)]
private ?string $name = null;
#[ORM\Column(length: 255, nullable: true)]
private ?string $iconUrl = null;
public function getId(): ?int
{
return $this->id;
}
public function getName(): ?string
{
return $this->name;
}
public function setName(string $name): static
{
$this->name = $name;
return $this;
}
public function getIconUrl(): ?string
{
return $this->iconUrl;
}
public function setIconUrl(?string $iconUrl): static
{
$this->iconUrl = $iconUrl;
return $this;
}
public function __toString(): string {
return $this->getName();
}
}
+1 -1
View File
@@ -14,7 +14,7 @@ class ConfigVariable
#[ORM\Column(length: 32, unique: true, nullable: false)]
private string $key = "";
#[ORM\Column(length: 255)]
#[ORM\Column(length: 255, nullable: false)]
private ?string $value = null;
#[ORM\Column(type: 'string', enumType: ConfigSectionType::class, nullable: false)]
+1 -1
View File
@@ -20,7 +20,7 @@ class FareTable
#[ORM\JoinColumn(nullable: false, onDelete: "CASCADE")]
private ?RoomCategory $roomCategory = null;
#[ORM\Column(type: Types::DATETIME_MUTABLE)]
#[ORM\Column(type: Types::DATETIME_MUTABLE, nullable: false)]
private ?\DateTimeInterface $startDate = null;
#[ORM\Column(type : Types::DATETIME_MUTABLE, nullable: true)]
+1 -1
View File
@@ -19,7 +19,7 @@ class RoomAvailability
#[ORM\JoinColumn(nullable: false, onDelete: "CASCADE")]
private ?RoomCategory $roomCategory = null;
#[ORM\Column]
#[ORM\Column(nullable: false)]
private ?int $numAvailable = null;
public function getDay(): ?\DateTimeInterface
+23 -38
View File
@@ -22,10 +22,7 @@ class RoomCategory
#[ORM\Column(type: Types::TEXT, nullable: true)]
private ?string $description = null;
#[ORM\Column(length: 64, nullable: true)]
private ?string $bedType = null;
#[ORM\Column]
#[ORM\Column(nullable: false)]
private ?int $maxGuestNum = null;
/**
@@ -35,15 +32,15 @@ class RoomCategory
private Collection $roomCategoryPhotos;
/**
* @var Collection<int, RoomCategoryDetails>
* @var Collection<int, RoomCategoryBedType>
*/
#[ORM\OneToMany(targetEntity: RoomCategoryDetails::class, mappedBy: 'roomCategory', orphanRemoval: true, cascade: ['persist'])]
private Collection $roomCategoryDetails;
#[ORM\OneToMany(targetEntity: RoomCategoryBedType::class, mappedBy: 'roomCategory', orphanRemoval: true, cascade: ['persist'])]
private Collection $roomCategoryBedTypes;
public function __construct()
{
$this->roomCategoryPhotos = new ArrayCollection();
$this->roomCategoryDetails = new ArrayCollection();
$this->roomCategoryBedTypes = new ArrayCollection();
}
public function getId(): ?int
@@ -75,18 +72,6 @@ class RoomCategory
return $this;
}
public function getBedType(): ?string
{
return $this->bedType;
}
public function setBedType(?string $bedType): static
{
$this->bedType = $bedType;
return $this;
}
public function getMaxGuestNum(): ?int
{
return $this->maxGuestNum;
@@ -129,38 +114,38 @@ class RoomCategory
return $this;
}
/**
* @return Collection<int, RoomCategoryDetails>
*/
public function getRoomCategoryDetails(): Collection
public function __toString()
{
return $this->roomCategoryDetails;
return $this->name;
}
public function addRoomCategoryDetail(RoomCategoryDetails $roomCategoryDetail): static
/**
* @return Collection<int, RoomCategoryBedType>
*/
public function getRoomCategoryBedTypes(): Collection
{
if (!$this->roomCategoryDetails->contains($roomCategoryDetail)) {
$this->roomCategoryDetails->add($roomCategoryDetail);
$roomCategoryDetail->setRoomCategory($this);
return $this->roomCategoryBedTypes;
}
public function addRoomCategoryBedType(RoomCategoryBedType $roomCategoryBedType): static
{
if (!$this->roomCategoryBedTypes->contains($roomCategoryBedType)) {
$this->roomCategoryBedTypes->add($roomCategoryBedType);
$roomCategoryBedType->setRoomCategory($this);
}
return $this;
}
public function removeRoomCategoryDetail(RoomCategoryDetails $roomCategoryDetail): static
public function removeRoomCategoryBedType(RoomCategoryBedType $roomCategoryBedType): static
{
if ($this->roomCategoryDetails->removeElement($roomCategoryDetail)) {
if ($this->roomCategoryBedTypes->removeElement($roomCategoryBedType)) {
// set the owning side to null (unless already changed)
if ($roomCategoryDetail->getRoomCategory() === $this) {
$roomCategoryDetail->setRoomCategory(null);
if ($roomCategoryBedType->getRoomCategory() === $this) {
$roomCategoryBedType->setRoomCategory(null);
}
}
return $this;
}
public function __toString()
{
return $this->name;
}
}
+78
View File
@@ -0,0 +1,78 @@
<?php
namespace App\Entity;
use App\Repository\RoomCategoryBedTypeRepository;
use Symfony\Component\Serializer\Annotation\Ignore;
use Doctrine\ORM\Mapping as ORM;
#[ORM\Entity(repositoryClass: RoomCategoryBedTypeRepository::class)]
class RoomCategoryBedType
{
#[ORM\Id]
#[ORM\ManyToOne(inversedBy: 'roomCategoryBedTypes')]
#[ORM\JoinColumn(nullable: false, onDelete: "CASCADE")]
#[Ignore]
private ?RoomCategory $roomCategory = null;
#[ORM\Id]
#[ORM\ManyToOne]
#[ORM\JoinColumn(nullable: false)]
private ?BedType $bedType = null;
#[ORM\Column]
private ?int $amount = null;
// public function __construct(RoomCategory $roomCat, BedType $bedType) {
// $this->roomCategory = $roomCat;
// $this->bedType = $bedType;
// }
public function getAmount(): ?int
{
return $this->amount;
}
public function setAmount(int $amount): static
{
$this->amount = $amount;
return $this;
}
#[Ignore]
public function getRoomCategory(): ?RoomCategory
{
return $this->roomCategory;
}
#[Ignore]
public function setRoomCategory(?RoomCategory $roomCategory): static
{
$this->roomCategory = $roomCategory;
return $this;
}
#[Ignore]
public function getBedType(): ?BedType
{
return $this->bedType;
}
#[Ignore]
public function setBedType(?BedType $bedType): static
{
$this->bedType = $bedType;
return $this;
}
public function getBedTypeName(): string {
return $this->getBedType()->getName();
}
public function getBedTypeIcon(): string {
return $this->getBedType()->getIconUrl();
}
}
-70
View File
@@ -1,70 +0,0 @@
<?php
namespace App\Entity;
use App\Repository\RoomCategoryDetailsRepository;
use Symfony\Component\Serializer\Annotation\Ignore;
use Doctrine\ORM\Mapping as ORM;
#[ORM\Entity(repositoryClass: RoomCategoryDetailsRepository::class)]
class RoomCategoryDetails
{
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column]
private ?int $id = null;
#[ORM\Column(length: 255)]
private ?string $detailsSection = null;
#[ORM\Column(length: 255)]
private ?string $detailValue = null;
#[ORM\ManyToOne(inversedBy: 'roomCategoryDetails')]
#[ORM\JoinColumn(nullable: false)]
#[Ignore]
private ?RoomCategory $roomCategory = null;
public function getId(): ?int
{
return $this->id;
}
public function getDetailsSection(): ?string
{
return $this->detailsSection;
}
public function setDetailsSection(string $detailsSection): static
{
$this->detailsSection = $detailsSection;
return $this;
}
public function getDetailValue(): ?string
{
return $this->detailValue;
}
public function setDetailValue(string $detailValue): static
{
$this->detailValue = $detailValue;
return $this;
}
#[Ignore]
public function getRoomCategory(): ?RoomCategory
{
return $this->roomCategory;
}
#[Ignore]
public function setRoomCategory(?RoomCategory $roomCategory): static
{
$this->roomCategory = $roomCategory;
return $this;
}
}
+9 -7
View File
@@ -12,22 +12,24 @@ class RoomCategoryPhoto
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column]
#[Ignore]
private ?int $id = null;
#[ORM\Column(length: 255)]
#[ORM\Column(length: 255, nullable: false)]
private ?string $path = null;
#[ORM\Column(length: 255, nullable: true)]
private ?string $altText = null;
#[ORM\Column(length: 30)]
private ?string $kind = null;
#[ORM\Column(nullable: true)]
private ?int $photoOrder = null;
#[ORM\ManyToOne(inversedBy: 'roomCategoryPhotos')]
#[ORM\JoinColumn(nullable: false)]
#[Ignore]
private ?RoomCategory $roomCategory = null;
#[Ignore]
public function getId(): ?int
{
return $this->id;
@@ -57,14 +59,14 @@ class RoomCategoryPhoto
return $this;
}
public function getKind(): ?string
public function getPhotoOrder(): ?int
{
return $this->kind;
return $this->photoOrder;
}
public function setKind(string $kind): static
public function setPhotoOrder(?int $photoOrder): static
{
$this->kind = $kind;
$this->photoOrder = $photoOrder;
return $this;
}
+1 -1
View File
@@ -14,7 +14,7 @@ class RoomFare
private ?int $id = null;
#[ORM\ManyToOne(inversedBy: 'roomFares')]
#[ORM\JoinColumn(nullable: false)]
#[ORM\JoinColumn(nullable: false, onDelete: "CASCADE")]
private ?FareTable $fareTable = null;
#[ORM\Column]
+45
View File
@@ -0,0 +1,45 @@
<?php
namespace App\Form;
use App\Entity\BedType;
use App\Entity\RoomCategory;
use App\Entity\RoomCategoryBedType;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\Extension\Core\Type\IntegerType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\OptionsResolver\OptionsResolver;
class RoomCategoryBedTypeFormType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$selectRoomCategory = $options['selectRoomCategory'];
if($selectRoomCategory) {
$builder->add('roomCategory', EntityType::class, [
'class' => RoomCategory::class,
'choice_label' => 'name'
]);
}
$builder->add('bedType', EntityType::class, [
'class' => BedType::class,
'choice_label' => 'name',
]);
$builder->add('amount', IntegerType::class);
$builder->add('save', SubmitType::class);
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'data_class' => RoomCategoryBedType::class,
'selectRoomCategory' => true,
]);
$resolver->setAllowedTypes('selectRoomCategory', 'bool');
}
}
+48
View File
@@ -0,0 +1,48 @@
<?php
namespace App\Repository;
use App\Entity\BedType;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;
/**
* @extends ServiceEntityRepository<BedType>
*
* @method BedType|null find($id, $lockMode = null, $lockVersion = null)
* @method BedType|null findOneBy(array $criteria, array $orderBy = null)
* @method BedType[] findAll()
* @method BedType[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
*/
class BedTypeRepository extends ServiceEntityRepository
{
public function __construct(ManagerRegistry $registry)
{
parent::__construct($registry, BedType::class);
}
// /**
// * @return BedType[] Returns an array of BedType objects
// */
// public function findByExampleField($value): array
// {
// return $this->createQueryBuilder('b')
// ->andWhere('b.exampleField = :val')
// ->setParameter('val', $value)
// ->orderBy('b.id', 'ASC')
// ->setMaxResults(10)
// ->getQuery()
// ->getResult()
// ;
// }
// public function findOneBySomeField($value): ?BedType
// {
// return $this->createQueryBuilder('b')
// ->andWhere('b.exampleField = :val')
// ->setParameter('val', $value)
// ->getQuery()
// ->getOneOrNullResult()
// ;
// }
}
@@ -0,0 +1,46 @@
<?php
namespace App\Repository;
use App\Entity\RoomCategoryBedType;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;
/**
* @extends ServiceEntityRepository<RoomCategoryBedType>
*
* @method RoomCategoryBedType|null find($id, $lockMode = null, $lockVersion = null)
* @method RoomCategoryBedType|null findOneBy(array $criteria, array $orderBy = null)
* @method RoomCategoryBedType[] findAll()
* @method RoomCategoryBedType[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
*/
class RoomCategoryBedTypeRepository extends ServiceEntityRepository
{
public function __construct(ManagerRegistry $registry)
{
parent::__construct($registry, RoomCategoryBedType::class);
}
/**
* @return RoomCategoryBedType[] Returns an array of RoomCategoryBedType objects
*/
public function findByRoomCategory(string $categoryId): array
{
return $this->createQueryBuilder('r')
->andWhere('r.roomCategory = :catId')
->setParameter('catId', $categoryId)
->getQuery()
->getResult()
;
}
// public function findOneBySomeField($value): ?RoomCategoryBedType
// {
// return $this->createQueryBuilder('r')
// ->andWhere('r.exampleField = :val')
// ->setParameter('val', $value)
// ->getQuery()
// ->getOneOrNullResult()
// ;
// }
}
@@ -1,48 +0,0 @@
<?php
namespace App\Repository;
use App\Entity\RoomCategoryDetails;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;
/**
* @extends ServiceEntityRepository<RoomCategoryDetails>
*
* @method RoomCategoryDetails|null find($id, $lockMode = null, $lockVersion = null)
* @method RoomCategoryDetails|null findOneBy(array $criteria, array $orderBy = null)
* @method RoomCategoryDetails[] findAll()
* @method RoomCategoryDetails[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
*/
class RoomCategoryDetailsRepository extends ServiceEntityRepository
{
public function __construct(ManagerRegistry $registry)
{
parent::__construct($registry, RoomCategoryDetails::class);
}
// /**
// * @return RoomCategoryDetails[] Returns an array of RoomCategoryDetails objects
// */
// public function findByExampleField($value): array
// {
// return $this->createQueryBuilder('r')
// ->andWhere('r.exampleField = :val')
// ->setParameter('val', $value)
// ->orderBy('r.id', 'ASC')
// ->setMaxResults(10)
// ->getQuery()
// ->getResult()
// ;
// }
// public function findOneBySomeField($value): ?RoomCategoryDetails
// {
// return $this->createQueryBuilder('r')
// ->andWhere('r.exampleField = :val')
// ->setParameter('val', $value)
// ->getQuery()
// ->getOneOrNullResult()
// ;
// }
}
+10
View File
@@ -0,0 +1,10 @@
{# templates/admin/adminEdit.html.twig #}
{% extends '@EasyAdmin/page/content.html.twig' %}
{% block content_title '{{elementType}} - Edit' %}
{% block main %}
<div>
<h3>{{ElementName}}</h3>
</div>
{{ form(form) }}
{% endblock %}
@@ -0,0 +1,40 @@
{# templates/admin/room_category_bed_type_admin/category_view.html.twig #}
{% extends '@EasyAdmin/page/content.html.twig' %}
{% block content_title 'Room Availability' %}
{% block main %}
<div>
<h3>{{categoryData.name}}</h3>
</div>
<div>
<a href="{{ ea_url().setRoute('admin_roomCategoryBedType_category_create', { categoryId: categoryData.id }) }}">
Add BedType
</a>
</div>
<table class="datagrid">
<thead>
<tr>
<td>BedType</td>
<td>Amount</td>
</tr>
</thead>
<tbody>
{% for bedType in bedTypeList %}
<tr>
<td>{{bedType.bedType}}</td>
<td>{{bedType.amount}}</td>
<td>
<a href="{{ ea_url().setRoute('admin_roomCategoryBedType_category_update', { bedTypeId: bedType.bedType.id, categoryId: bedType.roomCategory.id }) }}">
Edit
</a>
</td>
<td>
<a href="{{ ea_url().setRoute('admin_roomCategoryBedType_category_remove', { bedTypeId: bedType.bedType.id, categoryId: bedType.roomCategory.id }) }}">
Remove
</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endblock %}
@@ -0,0 +1,27 @@
{# templates/admin/room_category_bed_type_admin/index.html.twig #}
{% extends '@EasyAdmin/page/content.html.twig' %}
{% block content_title 'Category Bed Type' %}
{% block main %}
<table class="datagrid">
<thead>
<tr>
<td>ID</td>
<td>RoomCategory</td>
</tr>
</thead>
<tbody>
{% for category in roomCategoryList %}
<tr>
<td>{{category.id}}</td>
<td>{{category.name}}</td>
<td>
<a href="{{ ea_url().setRoute('admin_roomCategoryBedType_category', { categoryId: category.id }) }}">
View Details
</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endblock %}