feat: dedicated logos per country for accommodation bookings
This commit is contained in:
@@ -54,6 +54,10 @@ APP_NEWSLETTER_CONFIRMATION_TTL_HOURS=1
|
|||||||
# (override in .env.local/production secrets as usual).
|
# (override in .env.local/production secrets as usual).
|
||||||
ACCOMMODATION_OFFER_LINK_SECRET=abf8ec28cc2162d9121d35d6f8cbf7c29728cdacce0303e22e1bac854501728a
|
ACCOMMODATION_OFFER_LINK_SECRET=abf8ec28cc2162d9121d35d6f8cbf7c29728cdacce0303e22e1bac854501728a
|
||||||
|
|
||||||
|
ACCOMMODATION_TERMS_AT=
|
||||||
|
ACCOMMODATION_TERMS_CH=
|
||||||
|
ACCOMMODATION_TERMS_IT=
|
||||||
|
|
||||||
BPN_CONNECT_BASE_URL=https://bpn-connect.ep-reisen.app
|
BPN_CONNECT_BASE_URL=https://bpn-connect.ep-reisen.app
|
||||||
BPN_CONNECT_API_KEY=
|
BPN_CONNECT_API_KEY=
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,33 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||||
|
<svg width="100%" height="100%" viewBox="0 0 700 490" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<defs>
|
||||||
|
<mask id="Mask">
|
||||||
|
|
||||||
|
<g transform="matrix(0.00288044,8.84736e-05,8.84736e-05,-0.00288044,-0.5862,0.835135)"><image id="_Image2" width="700px" height="490px" xlink:href="data:image/png;base64,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"/>
|
||||||
|
</g>
|
||||||
|
</mask>
|
||||||
|
</defs>
|
||||||
|
<g mask="url(#Mask)">
|
||||||
|
<path d="M194.119,305.842C276.606,300.464 338.37,307.962 339.484,308.146C443.176,325.422 503.557,327.571 540.702,324.728L540.867,319.638C514.426,320.951 478.688,316.871 434.918,311.559C400.804,307.419 306.697,277.408 195.03,276.09L194.119,305.842Z" style="fill:url(#_Linear1);fill-rule:nonzero;"/>
|
||||||
|
</g>
|
||||||
|
<path d="M197.896,191.813L263.503,143.048L280.105,147.93L308,116.748L343.653,164.795L368.768,174.295L433.766,244.544L364.027,189.537L348.682,194.693L311.065,147L294.029,164.035L268.834,159.229L238.564,191.454L239.319,171.647L197.896,191.813Z" style="fill:rgb(25,64,80);fill-rule:nonzero;"/>
|
||||||
|
<path d="M38.408,306.474C32.18,326.891 27.643,336.159 27.643,336.159C142.218,243.379 280.978,259.659 329.465,268.035C309.049,261.755 276.356,253.993 236.312,252.714C233.474,252.619 230.617,252.577 227.737,252.577C164.07,252.577 90.101,274.674 38.408,306.474Z" style="fill:url(#_Linear3);fill-rule:nonzero;"/>
|
||||||
|
<path d="M602.405,251.387C598.632,265.755 587.357,277.441 568.9,286.133C545.646,297.083 503.477,293.225 446.803,275.075C503.429,297.055 546.732,303.825 570.113,294.462C588.056,287.276 599.307,277.049 603.538,264.06C606.541,254.838 605.79,245.126 603.793,236.74C604.062,241.537 603.698,246.481 602.405,251.387Z" style="fill:url(#_Linear4);fill-rule:nonzero;"/>
|
||||||
|
<path d="M605.397,211.094L598.994,215.409C599.174,215.674 617.073,242.823 609.679,268.117C605.51,282.372 593.852,293.765 575.037,301.985C550.593,312.652 506.299,307.123 446.929,285.984C401.072,269.647 362.435,249.627 362.114,249.457C360.612,248.668 215.374,173.608 69.773,226.274C77.162,248.414 43.719,292.66 43.719,292.66C200.142,196.079 356.618,273.877 358.332,274.656C497.597,337.936 553.312,328.53 581.212,316.131C655.404,283.16 606.303,212.439 605.397,211.094" style="fill:rgb(17,142,206);fill-rule:nonzero;"/>
|
||||||
|
<path d="M600.278,217.512L606.147,212.228L600.581,202.639L578.087,165.139L562.014,162.674L523.519,106.019L514.326,111.057L492.375,98.148L455.456,140.096L390.467,39.17C390.467,39.17 377.747,37.716 367.194,35.266C356.622,32.81 330.597,14.462 330.597,14.462L227.896,119.816L206.63,102.138L79.887,212.658L205.945,124.457L222.915,143.594L339.412,39.199L361.863,104.782L369.352,79.049L419.68,129.184L437.972,178.766L453.331,174.016L458.28,217.927L509.42,132.182L532.48,143.533L563.393,178.941L577.921,181.66L595.665,210.07L600.278,217.512Z" style="fill:rgb(25,64,80);fill-rule:nonzero;"/>
|
||||||
|
<path d="M598.991,215.408C599.175,215.672 617.07,242.822 609.681,268.116C605.511,282.37 593.854,293.764 575.038,301.984C551.165,312.4 508.335,307.334 451.085,287.418L450.377,310.289C524.455,332.854 560.505,325.328 581.209,316.13C655.4,283.159 606.305,212.438 605.398,211.092L598.991,215.408Z" style="fill:url(#_Linear5);fill-rule:nonzero;"/>
|
||||||
|
</g>
|
||||||
|
<g transform="matrix(141.308,0,0,141.308,702.346,466.324)">
|
||||||
|
</g>
|
||||||
|
<text x="-0.827px" y="466.324px" style="font-family:'BebasNeue-Regular', 'Bebas Neue', sans-serif;font-size:141.308px;fill:rgb(30,28,26);">A<tspan x="55.719px 104.212px 158.639px 185.652px 245.873px 297.051px 346.956px 403.22px 457.224px 507.27px 558.589px 585.602px 642.008px " y="466.324px 466.324px 466.324px 466.324px 466.324px 466.324px 466.324px 466.324px 466.324px 466.324px 466.324px 466.324px 466.324px ">LPINEVACATION</tspan></text>
|
||||||
|
</g>
|
||||||
|
<defs>
|
||||||
|
<linearGradient id="_Linear1" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(346.842,10.6534,-10.6534,346.842,194.415,296.129)"><stop offset="0" style="stop-color:rgb(188,187,186);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(86,85,83);stop-opacity:1"/></linearGradient>
|
||||||
|
<linearGradient id="_Linear3" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(301.821,0,0,301.821,27.6449,294.368)"><stop offset="0" style="stop-color:rgb(56,165,72);stop-opacity:1"/><stop offset="0.04" style="stop-color:rgb(56,165,72);stop-opacity:1"/><stop offset="0.91" style="stop-color:rgb(163,198,57);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(163,198,57);stop-opacity:1"/></linearGradient>
|
||||||
|
<linearGradient id="_Linear4" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(158.742,0,0,158.742,446.802,267.649)"><stop offset="0" style="stop-color:rgb(56,165,72);stop-opacity:1"/><stop offset="0.04" style="stop-color:rgb(56,165,72);stop-opacity:1"/><stop offset="0.91" style="stop-color:rgb(163,198,57);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(163,198,57);stop-opacity:1"/></linearGradient>
|
||||||
|
<linearGradient id="_Linear5" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(170.152,5.22629,-5.22629,170.152,451.782,264.535)"><stop offset="0" style="stop-color:rgb(17,142,206);stop-opacity:1"/><stop offset="0.04" style="stop-color:rgb(17,142,206);stop-opacity:1"/><stop offset="0.91" style="stop-color:rgb(24,64,80);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(24,64,80);stop-opacity:1"/></linearGradient>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 8.1 KiB |
@@ -0,0 +1,33 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||||
|
<svg width="100%" height="100%" viewBox="0 0 700 490" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<defs>
|
||||||
|
<mask id="Mask">
|
||||||
|
|
||||||
|
<g transform="matrix(0.00288044,8.84736e-05,8.84736e-05,-0.00288044,-0.5862,0.835135)"><image id="_Image2" width="700px" height="490px" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAArwAAAHqCAAAAADD7sLoAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAGsElEQVR4nO3dQW7bRgBA0SHTm/VGvWCPVQRIqy4cSVHkBKRlmvzWewsDjClybPxMZiJZnk4Dmua9BwBvJV6yxEuWeMkSL1niJUu8ZImXLPGSJV6yxEuWeMkSL1niJUu8ZImXLPGSJV6yxEuWeMkSL1niJUu8ZImXLPGSJV6yxEuWeMkSL1niJUu8ZImXLPGSJV6yxEuWeMkSL1niJUu8ZImXLPGSJV6yxEuWeMkSL1niJUu8ZImXLPGSJV6yxEuWeMkSL1niJUu8ZImXLPGSJV6yxEuWeMkSL1niJUu8ZImXLPGSJV6yxEuWeMkSL1niJUu8ZImXLPGSJV6yxEuWeMkSL1niJUu8ZImXLPGSJV6yxEuWeMkSL1niJUu8ZImXLPGSJV6yxEuWeMkSL1niJUu8ZImXLPGSJV6yxEuWeMkSL1niJUu8ZImXLPGSJV6yxEuWeMkSL1niJUu8ZImXLPGSJV6yxEuWeMkSL1niJUu8ZImXLPGSJV6yxEuWeMkSL1niJUu8ZImXLPGSJV6yxEuWeMkSL1niJUu8ZImXLPGSJV6yxEuWeMkSL1niJUu8ZImXLPGSJV6yxEuWeMkSL1niJUu8ZImXLPGSJV6yxEuWeMkSL1niJUu8ZImXLPGSJV6yxEuWeMkSL1niJUu8ZImXLPGSJV6yxEuWeMkSL1niJUu8ZImXLPGSJV6yxEuWeMkSL1niJUu8ZImXLPGSJV6yxEuWeMkSL1niJUu8ZImXLPGSJV6yxEuWeMkSL1niJUu8ZImXLPGSJV6yxEuWeMkSL1niJUu8ZImXLPGSJV6yxEuWeMkSL1niJUu8ZImXLPGSJV6yxEuWeMkSL1niJUu8ZImXLPGSJV6yxEuWeMkSL1niJUu8ZImXLPGSJV6yxEuWeMkSL1niJUu8ZImXLPGSJV6yxEuWeMkSL1niJUu8ZImXLPGSJV6yxEuWeMkSL1niJUu8ZImXLPGSJV6yxEuWeMkSL1niJUu8ZImXLPGSJV6yxEuWeMkSL1niJUu8ZImXrD/2HsDDTt8+5j7Tp7jFytv8u90o3kE/3r//XHzqfP4wzXdH03Q+msYY8/lofDn/0TT9eDRP46WC6f4xrxxdHvzaCTe3H/PN7W9PuB3MK1/O/Wiv15tuTvjVaOfx/dR5GuOfvxZ/b/dg2UCWeMkSL1niPZiVm7Zp3WOWnflBG8eH9Tds7+kt5Sw78737upy5xYXHZX93bGZessRLlnjJsub92YrlKfsy85IlXrLES5Z4f2/nBbD19+/YsP3ayucg3v3Zq+2eMll34cMy85IlXrLES9bTrXlXLE+3HcPCU8fuoz0uMy9Z4iVLvGSJd6m918n73v6Qnm7D9iZHKGeLTd4Rvq4HmHnJEi9Z4iXrmde8B3jhy3aLziOMYWtm3t35b4y3Ei9Z4iVLvGQ984ZtjOSrtoJD3oiZlyzxkiVesp59zXuxyZuQLj917ZtMbXLh2krazLulVg2t0Q7xEiZessRLlg3b1rbZCTLMvISJlyzxkiXeBx3hZyE2u+bBF+E2bHcO8JPjOz/dV3nhmpmXLPGSJV6ynmXNu/KXTG/3+6i38Kzv92vm/TjbRvNpklxOvGSJl6xnWfOepjHGaXz/cLr8G/vfOP+aivNqcJrHuK4Nbz/38nd9/vHo+rnp/jHXS033J9xe4XqZMcZ8c/TQ+F45GsvGN43xdfk3eA/PEu9Ls2O85MqnYNlAlnjJEi9Z4iVLvGSJlyzxkiVessRLlnjJEi9Z4iVLvGSJlyzxkiVessRLlnjJEi9Z4iVLvGSJlyzxkiVessRLlnjJEi9Z4iVLvGSJlyzxkiVessRLlnjJEi9Z4iVLvGSJlyzxkiVessRLlnjJEi9Z4iVLvGSJlyzxkiVessRLlnjJEi9Z4iVLvGSJlyzxkiVessRLlnjJEi9Z4iVLvGSJlyzxkiVessRLlnjJEi9Z4iVLvGSJlyzxkiVessRLlnjJEi9Z4iVLvGSJlyzxkiVessRLlnjJEi9Z4iVLvGSJlyzxkiVessRLlnjJEi9Z4iVLvGSJlyzxkiVessRLlnjJEi9Z4iVLvGSJlyzxkiVessRLlnjJEi9Z4iVLvGSJlyzxkiVessRLlnjJEi9Z4iVLvGSJlyzxkiVessRLlnjJEi9Z4iVLvGSJlyzxkiVessRLlnjJEi9Z4iVLvGSJlyzxkiVessRLlnjJEi9Z4iVLvGSJlyzxkiVessRLlnjJEi9Z4iVLvGSJlyzxkiVessRLlnjJEi9Z4iVLvGSJlyzxkiVesv4HAfsUn4ytnvgAAAAASUVORK5CYII="/>
|
||||||
|
</g>
|
||||||
|
</mask>
|
||||||
|
</defs>
|
||||||
|
<g mask="url(#Mask)">
|
||||||
|
<path d="M194.119,305.842C276.606,300.464 338.37,307.962 339.484,308.146C443.176,325.422 503.557,327.571 540.702,324.728L540.867,319.638C514.426,320.951 478.688,316.871 434.918,311.559C400.804,307.419 306.697,277.408 195.03,276.09L194.119,305.842Z" style="fill:url(#_Linear1);fill-rule:nonzero;"/>
|
||||||
|
</g>
|
||||||
|
<path d="M197.896,191.813L263.503,143.048L280.105,147.93L308,116.748L343.653,164.795L368.768,174.295L433.766,244.544L364.027,189.537L348.682,194.693L311.065,147L294.029,164.035L268.834,159.229L238.564,191.454L239.319,171.647L197.896,191.813Z" style="fill:rgb(25,64,80);fill-rule:nonzero;"/>
|
||||||
|
<path d="M38.408,306.474C32.18,326.891 27.643,336.159 27.643,336.159C142.218,243.379 280.978,259.659 329.465,268.035C309.049,261.755 276.356,253.993 236.312,252.714C233.474,252.619 230.617,252.577 227.737,252.577C164.07,252.577 90.101,274.674 38.408,306.474Z" style="fill:url(#_Linear3);fill-rule:nonzero;"/>
|
||||||
|
<path d="M602.405,251.387C598.632,265.755 587.357,277.441 568.9,286.133C545.646,297.083 503.477,293.225 446.803,275.075C503.429,297.055 546.732,303.825 570.113,294.462C588.056,287.276 599.307,277.049 603.538,264.06C606.541,254.838 605.79,245.126 603.793,236.74C604.062,241.537 603.698,246.481 602.405,251.387Z" style="fill:url(#_Linear4);fill-rule:nonzero;"/>
|
||||||
|
<path d="M605.397,211.094L598.994,215.409C599.174,215.674 617.073,242.823 609.679,268.117C605.51,282.372 593.852,293.765 575.037,301.985C550.593,312.652 506.299,307.123 446.929,285.984C401.072,269.647 362.435,249.627 362.114,249.457C360.612,248.668 215.374,173.608 69.773,226.274C77.162,248.414 43.719,292.66 43.719,292.66C200.142,196.079 356.618,273.877 358.332,274.656C497.597,337.936 553.312,328.53 581.212,316.131C655.404,283.16 606.303,212.439 605.397,211.094" style="fill:rgb(17,142,206);fill-rule:nonzero;"/>
|
||||||
|
<path d="M600.278,217.512L606.147,212.228L600.581,202.639L578.087,165.139L562.014,162.674L523.519,106.019L514.326,111.057L492.375,98.148L455.456,140.096L390.467,39.17C390.467,39.17 377.747,37.716 367.194,35.266C356.622,32.81 330.597,14.462 330.597,14.462L227.896,119.816L206.63,102.138L79.887,212.658L205.945,124.457L222.915,143.594L339.412,39.199L361.863,104.782L369.352,79.049L419.68,129.184L437.972,178.766L453.331,174.016L458.28,217.927L509.42,132.182L532.48,143.533L563.393,178.941L577.921,181.66L595.665,210.07L600.278,217.512Z" style="fill:rgb(25,64,80);fill-rule:nonzero;"/>
|
||||||
|
<path d="M598.991,215.408C599.175,215.672 617.07,242.822 609.681,268.116C605.511,282.37 593.854,293.764 575.038,301.984C551.165,312.4 508.335,307.334 451.085,287.418L450.377,310.289C524.455,332.854 560.505,325.328 581.209,316.13C655.4,283.159 606.305,212.438 605.398,211.092L598.991,215.408Z" style="fill:url(#_Linear5);fill-rule:nonzero;"/>
|
||||||
|
</g>
|
||||||
|
<g transform="matrix(141.308,0,0,141.308,674.94,466.324)">
|
||||||
|
</g>
|
||||||
|
<text x="24.191px" y="466.324px" style="font-family:'BebasNeue-Regular', 'Bebas Neue', sans-serif;font-size:141.308px;fill:rgb(30,28,26);">C<tspan x="78.195px 126.687px 164.157px 215.476px 237.967px 288.721px 345.126px 401.814px 458.644px 485.657px 538.106px 589.425px 616.438px " y="466.324px 466.324px 466.324px 466.324px 466.324px 466.324px 466.324px 466.324px 466.324px 466.324px 466.324px 466.324px 466.324px ">LLT Touristik</tspan></text>
|
||||||
|
</g>
|
||||||
|
<defs>
|
||||||
|
<linearGradient id="_Linear1" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(346.842,10.6534,-10.6534,346.842,194.415,296.129)"><stop offset="0" style="stop-color:rgb(188,187,186);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(86,85,83);stop-opacity:1"/></linearGradient>
|
||||||
|
<linearGradient id="_Linear3" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(301.821,0,0,301.821,27.6449,294.368)"><stop offset="0" style="stop-color:rgb(56,165,72);stop-opacity:1"/><stop offset="0.04" style="stop-color:rgb(56,165,72);stop-opacity:1"/><stop offset="0.91" style="stop-color:rgb(163,198,57);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(163,198,57);stop-opacity:1"/></linearGradient>
|
||||||
|
<linearGradient id="_Linear4" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(158.742,0,0,158.742,446.802,267.649)"><stop offset="0" style="stop-color:rgb(56,165,72);stop-opacity:1"/><stop offset="0.04" style="stop-color:rgb(56,165,72);stop-opacity:1"/><stop offset="0.91" style="stop-color:rgb(163,198,57);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(163,198,57);stop-opacity:1"/></linearGradient>
|
||||||
|
<linearGradient id="_Linear5" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(170.152,5.22629,-5.22629,170.152,451.782,264.535)"><stop offset="0" style="stop-color:rgb(17,142,206);stop-opacity:1"/><stop offset="0.04" style="stop-color:rgb(17,142,206);stop-opacity:1"/><stop offset="0.91" style="stop-color:rgb(24,64,80);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(24,64,80);stop-opacity:1"/></linearGradient>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 8.1 KiB |
@@ -0,0 +1,28 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace DoctrineMigrations;
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
|
use Doctrine\Migrations\AbstractMigration;
|
||||||
|
|
||||||
|
final class Version20260805102251 extends AbstractMigration
|
||||||
|
{
|
||||||
|
public function getDescription(): string
|
||||||
|
{
|
||||||
|
return 'Add country to accommodation, defaulting existing rows to DE';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function up(Schema $schema): void
|
||||||
|
{
|
||||||
|
// Added with a default so existing rows backfill to DE, then dropped again to match the mapping
|
||||||
|
$this->addSql("ALTER TABLE accommodation ADD country VARCHAR(2) DEFAULT 'DE' NOT NULL");
|
||||||
|
$this->addSql('ALTER TABLE accommodation ALTER country DROP DEFAULT');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function down(Schema $schema): void
|
||||||
|
{
|
||||||
|
$this->addSql('ALTER TABLE accommodation DROP country');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -6,6 +6,7 @@ use App\Entity\BlameableEntity;
|
|||||||
use App\Entity\BlameableEntityInterface;
|
use App\Entity\BlameableEntityInterface;
|
||||||
use App\Entity\TimestampableEntity;
|
use App\Entity\TimestampableEntity;
|
||||||
use App\Entity\TimestampableEntityInterface;
|
use App\Entity\TimestampableEntityInterface;
|
||||||
|
use App\Enum\Groups\AccommodationCountry;
|
||||||
use App\Repository\Groups\AccommodationRepository;
|
use App\Repository\Groups\AccommodationRepository;
|
||||||
use Doctrine\Common\Collections\ArrayCollection;
|
use Doctrine\Common\Collections\ArrayCollection;
|
||||||
use Doctrine\Common\Collections\Collection;
|
use Doctrine\Common\Collections\Collection;
|
||||||
@@ -64,6 +65,10 @@ class Accommodation implements BlameableEntityInterface, TimestampableEntityInte
|
|||||||
#[Assert\Choice(choices: ['EUR', 'CHF'], message: 'invalid')]
|
#[Assert\Choice(choices: ['EUR', 'CHF'], message: 'invalid')]
|
||||||
private ?string $currency = 'EUR';
|
private ?string $currency = 'EUR';
|
||||||
|
|
||||||
|
#[ORM\Column(length: 2, enumType: AccommodationCountry::class)]
|
||||||
|
#[Assert\NotNull(message: 'required')]
|
||||||
|
private ?AccommodationCountry $country = AccommodationCountry::Germany;
|
||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
$this->accommodationPrices = new ArrayCollection();
|
$this->accommodationPrices = new ArrayCollection();
|
||||||
@@ -171,6 +176,18 @@ class Accommodation implements BlameableEntityInterface, TimestampableEntityInte
|
|||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getCountry(): ?AccommodationCountry
|
||||||
|
{
|
||||||
|
return $this->country;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setCountry(AccommodationCountry $country): self
|
||||||
|
{
|
||||||
|
$this->country = $country;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return Collection<int, BoardService>
|
* @return Collection<int, BoardService>
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -0,0 +1,31 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Enum\Groups;
|
||||||
|
|
||||||
|
enum AccommodationCountry: string
|
||||||
|
{
|
||||||
|
case Germany = 'DE';
|
||||||
|
case Austria = 'AT';
|
||||||
|
case Switzerland = 'CH';
|
||||||
|
case Italy = 'IT';
|
||||||
|
|
||||||
|
public function label(): string
|
||||||
|
{
|
||||||
|
return 'enum.accommodation_country.'.$this->value;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Logo of the legal entity operating this country's accommodations, shown in the
|
||||||
|
* header of the public booking and offer pages. Null falls back to the logo of the
|
||||||
|
* request host — Germany has no dedicated entity.
|
||||||
|
*/
|
||||||
|
public function logo(): ?string
|
||||||
|
{
|
||||||
|
return match ($this) {
|
||||||
|
self::Austria => 'logo_cllt.svg',
|
||||||
|
self::Switzerland => 'logo_alpinevacation.svg',
|
||||||
|
self::Italy => 'logo_ep.svg',
|
||||||
|
self::Germany => null,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -5,8 +5,10 @@ declare(strict_types=1);
|
|||||||
namespace App\Form\Admin\Groups;
|
namespace App\Form\Admin\Groups;
|
||||||
|
|
||||||
use App\Entity\Groups\Accommodation;
|
use App\Entity\Groups\Accommodation;
|
||||||
|
use App\Enum\Groups\AccommodationCountry;
|
||||||
use Symfony\Component\Form\AbstractType;
|
use Symfony\Component\Form\AbstractType;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
|
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
|
||||||
|
use Symfony\Component\Form\Extension\Core\Type\EnumType;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\IntegerType;
|
use Symfony\Component\Form\Extension\Core\Type\IntegerType;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\TextType;
|
use Symfony\Component\Form\Extension\Core\Type\TextType;
|
||||||
use Symfony\Component\Form\FormBuilderInterface;
|
use Symfony\Component\Form\FormBuilderInterface;
|
||||||
@@ -38,6 +40,11 @@ class AccommodationType extends AbstractType
|
|||||||
'CHF' => 'CHF',
|
'CHF' => 'CHF',
|
||||||
],
|
],
|
||||||
])
|
])
|
||||||
|
->add('country', EnumType::class, [
|
||||||
|
'label' => 'Land',
|
||||||
|
'class' => AccommodationCountry::class,
|
||||||
|
'choice_label' => fn (AccommodationCountry $country): string => $country->label(),
|
||||||
|
])
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,10 @@
|
|||||||
<div class="flex items-center justify-between">
|
<div class="flex items-center justify-between">
|
||||||
<a href="{{ path('app_account') }}" title="zu meinem Account">
|
<a href="{{ path('app_account') }}" title="zu meinem Account">
|
||||||
{% if booking_theme() == 'sbw' %}
|
{# The operating entity depends on where the accommodation is, so its logo wins over the host's #}
|
||||||
|
{% set country_logo = accommodation|default(null) and accommodation.country ? accommodation.country.logo : null %}
|
||||||
|
{% if country_logo %}
|
||||||
|
<img src="{{ asset('build/images/' ~ country_logo) }}" alt="" class="h-14 my-1 w-auto">
|
||||||
|
{% elseif booking_theme() == 'sbw' %}
|
||||||
<img src="{{ asset('build/images/logo_sbw.svg') }}" alt="" class="h-10 my-2 w-auto">
|
<img src="{{ asset('build/images/logo_sbw.svg') }}" alt="" class="h-10 my-2 w-auto">
|
||||||
{% elseif booking_theme() == 'ser' %}
|
{% elseif booking_theme() == 'ser' %}
|
||||||
<img src="{{ asset('build/images/logo_ser.svg') }}" alt="" class="h-10 my-2 w-auto">
|
<img src="{{ asset('build/images/logo_ser.svg') }}" alt="" class="h-10 my-2 w-auto">
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
{{ form_row(form.cmsCode) }}
|
{{ form_row(form.cmsCode) }}
|
||||||
{{ form_row(form.maxAdolescentAge) }}
|
{{ form_row(form.maxAdolescentAge) }}
|
||||||
{{ form_row(form.currency) }}
|
{{ form_row(form.currency) }}
|
||||||
|
{{ form_row(form.country) }}
|
||||||
</div>
|
</div>
|
||||||
{% if cmsData is not null and cmsData.name is not null %}
|
{% if cmsData is not null and cmsData.name is not null %}
|
||||||
<div class="space-y-4">
|
<div class="space-y-4">
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
<div class="grid lg:grid-cols-2 gap-y-4 lg:gap-x-8">
|
<div class="grid lg:grid-cols-2 gap-y-4 lg:gap-x-8">
|
||||||
{{ form_row(form.name) }}
|
{{ form_row(form.name) }}
|
||||||
{{ form_row(form.currency) }}
|
{{ form_row(form.currency) }}
|
||||||
|
{{ form_row(form.country) }}
|
||||||
{{ form_row(form.calendarCode) }}
|
{{ form_row(form.calendarCode) }}
|
||||||
{{ form_row(form.cmsCode) }}
|
{{ form_row(form.cmsCode) }}
|
||||||
{{ form_row(form.maxAdolescentAge) }}
|
{{ form_row(form.maxAdolescentAge) }}
|
||||||
|
|||||||
@@ -5,7 +5,9 @@
|
|||||||
<div class="max-w-screen-xl h-dvh ml-auto flex flex-col overflow-hidden bg-inner">
|
<div class="max-w-screen-xl h-dvh ml-auto flex flex-col overflow-hidden bg-inner">
|
||||||
<div class="shrink-0 z-20 py-2 px-4 bg-white shadow-md">
|
<div class="shrink-0 z-20 py-2 px-4 bg-white shadow-md">
|
||||||
{% block header %}
|
{% block header %}
|
||||||
{% include '_partials/_header.html.twig' %}
|
{% include '_partials/_header.html.twig' with {
|
||||||
|
accommodation: ctx is defined ? ctx.accommodation : null
|
||||||
|
} %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
</div>
|
</div>
|
||||||
<div class="flex-1 flex flex-col min-h-0 overflow-y-auto md:overflow-hidden relative z-10">
|
<div class="flex-1 flex flex-col min-h-0 overflow-y-auto md:overflow-hidden relative z-10">
|
||||||
|
|||||||
@@ -5,7 +5,9 @@
|
|||||||
<div class="max-w-screen-xl h-dvh ml-auto flex flex-col overflow-hidden bg-inner">
|
<div class="max-w-screen-xl h-dvh ml-auto flex flex-col overflow-hidden bg-inner">
|
||||||
<div class="shrink-0 z-20 py-2 px-4 bg-white shadow-md">
|
<div class="shrink-0 z-20 py-2 px-4 bg-white shadow-md">
|
||||||
{% block header %}
|
{% block header %}
|
||||||
{% include '_partials/_header.html.twig' %}
|
{% include '_partials/_header.html.twig' with {
|
||||||
|
accommodation: ctx is defined ? ctx.accommodation : null
|
||||||
|
} %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
</div>
|
</div>
|
||||||
<div class="flex-1 flex flex-col min-h-0 relative z-10">
|
<div class="flex-1 flex flex-col min-h-0 relative z-10">
|
||||||
|
|||||||
@@ -14,6 +14,11 @@ service:
|
|||||||
separator: ' und '
|
separator: ' und '
|
||||||
|
|
||||||
enum:
|
enum:
|
||||||
|
accommodation_country:
|
||||||
|
DE: Deutschland
|
||||||
|
AT: Österreich
|
||||||
|
CH: Schweiz
|
||||||
|
IT: Italien
|
||||||
additional_service:
|
additional_service:
|
||||||
flat: pauschal
|
flat: pauschal
|
||||||
per_person: pro Person
|
per_person: pro Person
|
||||||
|
|||||||
Reference in New Issue
Block a user