{% set descriptionTypeMapping = {
0: "Package",
1: "PackageContentShort",
2: "PackageContentLong",
3: "PackageShortText"
} %}
{% if tvbPackage|default(null) %}
{% set package = tvbPackage %}
{# if a description is not visible remove this, probably it is an old package and "PackageContentShort" or "PackageShortText" is still used #}
{% set descriptionTypeMapping = {
0: "Package",
2: "PackageContentLong"
} %}
{% else %}
{% set package = housePackageMaster %}
{% set tvbPackage = null %}
{% endif %}
{% set fromTvbOverview = fromTvbOverview is defined ? fromTvbOverview : false %}
<section class="container">
<section class="mt-4" data-track-content data-content-name="package-info">
{% if not isAffiliate|default(false) and not fromTvbOverview %}
<h2 class="h3 mb-2">{{ "demi.detail.package.benefits"|trans }}</h2>
<div class="card box-shadow js-expandable expandable-block">
<script data-cookieconsent="ignore">
_config.expandable = true;
</script>
<div class="expandable-block__content-wrapper js-expandable__content-wrapper">
<div class="card-body js-expandable__content expandable-block__content">
{% endif %}
<div class="wysiwyg">
{% for type in descriptionTypeMapping %}
{% set text = package.getDescription(type,app.request.locale,dateFrom is defined ? dateFrom : null) %}
{% if text is empty and searchParam|default(null) %}
{% set text = package.getDescription(type, demi_core_configuration('getFallbackLanguage',[]), searchParam.getDateFrom()) %}
{% endif %}
{% if text is not empty %}
{{ text|raw }}<br/><br/>
{% endif %}
{% endfor %}
<section class="mt-3">
<div class="h5 mb-1">{{ 'demi.detail.package.validdates'|trans }}</div>
{% set validDates = package.getValidDates() %}
{% if validDates is not null %}
{% if not tvbPackage is null and tvbPackage.getClassName() == 'demiPackage' %}
{% for item in validDates.getItems() %}
{% if item.getDateTo() > date('now') %}
{{ elements_dateFormatRange(item.getDateFrom(),item.getDateTo(),'daterange-short-long', 'daterange-long-long') }}
<br/>
{% endif %}
{% endfor %}
{% else %}
{% for item in validDates.getItems() %}
{% if item.getTo() > date('now') %}
{{ elements_dateFormatRange(item.getFrom(),item.getTo(),'daterange-short-long', 'daterange-long-long') }}
<br/>
{% endif %}
{% endfor %}
{% endif %}
{% endif %}
</section>
{% if not tvbPackage is null and tvbPackage is instanceof('\\Elements\\Demi\\Model\\Package') and not tvbPackage.hasAccommodationSection() %}
<div class="mt-3">
<button type="button"
class="btn btn-success btn-lg btn-block js-overlay__toggle js-add-package-to-cart__btn"
data-target="#search-overlay">
{{ 'demi.detail.package.add-to-cart'|trans }}
<span class="circle-spinner circle-spinner--white circle-spinner--small ml-2 js-add-package-to-cart__loading"
aria-label="{{ 'demi.content-loading'|trans }}"
title="{{ 'demi.content-loading'|trans }}" hidden>
</span>
</button>
<div class="js-add-package-to-cart__error text-danger mt-3 strong" role="alert" hidden>
<div class="row row--gutter-width-6">
<div class="col-auto">
<span class="demi-icon demi-icon-warning icon-in-text"
title="{{ 'demi.warning'|trans }}"
aria-label="{{ 'demi.warning'|trans }}"/>
</div>
<div class="col js-add-package-to-cart__error-text"></div>
</div>
</div>
<div class="js-add-package-to-cart__warning text-warning mt-3 strong" role="alert"
hidden>
<div class="row row--gutter-width-6">
<div class="col-auto">
<span class="demi-icon demi-icon-warning icon-in-text"
title="{{ 'demi.warning'|trans }}"
aria-label="{{ 'demi.warning'|trans }}"/>
</div>
<div class="col js-add-package-to-cart__warning-text"></div>
</div>
</div>
</div>
{% set addToCartUrl = demi_demiUrl({
'path': demi_core_configuration('getCheckoutPath',[]).getFullPath(),
'controller': 'cart',
'action': 'packagestep1'
}, 'demi_checkout', true) %}
<script>
_config.addPackageToCart = true;
_config.addToCartUrl = "{{ addToCartUrl }}";
_config.packageId = "{{ tvbPackage.getId() }}";
</script>
{% else %}
{% if not isAffiliate|default(false) %}
{% set tvbPackageListUrl = null %}
{% if accommodation is not defined and not tvbPackage is null %}
{% if tvbPackage.getClassName() == 'demiPackage' %}
{% set tvbPackageListDocument = demi_findDestinationPackageAccoList(document, tvbPackage) %}
{% elseif tvbPackage.getClassName() == 'demiHousePackageMaster' %}
{% set tvbPackageListDocument = demi_findHousePackageMasterSelfAssignList(document, tvbPackage) %}
{% elseif tvbPackage.getClassName() == "demiHousePackageContainer" %}
{% set tvbPackageListDocument = demi_findHousePackageContainerList(document, tvbPackage) %}
{% endif %}
{% if tvbPackageListDocument is defined and tvbPackageListDocument %}
{% set tvbPackageListUrl = tvbPackageListDocument.getFullPath() %}
{% endif %}
{% endif %}
{% if not tvbPackage is null and tvbPackage is instanceof('\\Elements\\Demi\\Model\\Package') %}
{{ include('@ElementsDemiFrontend/DestinationPackage/includes/destinationpackageBookingInfos.html.twig',{
'tvbPackage': tvbPackage
}) }}
{% endif %}
{% if tvbPackageListUrl is not null %}
<div class="mt-3 text-center">
<a href="{{ tvbPackageListUrl }}"
data-target="#booking"
aria-controls="booking"
class="btn btn-success btn-block btn-lg js-open-tab-and-scroll">
<script data-cookieconsent="ignore">
_config.openTabAndSroll = true;
</script>
<span class="btn__icon demi-icon demi-icon-cart mr-2" aria-hidden="true"></span>
{{ 'demi.detail.package.booking-button' |trans }}
</a>
</div>
{% elseif fromTvbOverview %}
<div class="mt-3 text-danger">{{ 'demi.destinationpackage.not-bookable'|trans }} </div>
{% else %}
<div class="mt-3 text-center js-search-data__show-if-submitted" {{ availabilityIsChecked ? '' : 'hidden' }}>
<a href="#booking"
data-target="#booking"
aria-controls="booking"
class="btn btn-success btn-block btn-lg js-open-tab-and-scroll">
<script data-cookieconsent="ignore">
_config.openTabAndSroll = true;
</script>
<span class="btn__icon demi-icon demi-icon-cart mr-2" aria-hidden="true"></span>
{{ "demi.detail.package.booking-button"|trans }}
</a>
<div class="mt-2 text-center text-success small">
{{ "demi.detail.promote-booking-speed"|trans }}
</div>
</div>
{% endif %}
{% endif %}
{% if not fromTvbOverview and not document.property("demi_hideVacancySearch") %}
<div class="mt-3 text-center js-search-data__hide-if-submitted" {{ availabilityIsChecked ? 'hidden' : '' }}>
<button type="button" class="btn btn-success btn-block btn-lg js-overlay__toggle my-3"
data-target="#search-overlay">
<span class="demi-icon demi-icon-person btn__icon"></span>
{{ "demi.detail.search-vacancies-button"|trans }}
</button>
</div>
{% endif %}
{% endif %}
</div>
{% if not isAffiliate|default(false) and not fromTvbOverview %}
</div>
</div>
{{ include('@ElementsDemiFrontend/Includes/elements/read-more.mobile.html.twig') }}
</div>
{% endif %}
</section>
</section>
{% if not tvbPackage is null and tvbPackage.getClassName() == 'demiPackage' and not tvbPackage.hasAccommodationSection() %}
{{ include('@ElementsDemiFrontend/Includes/overlays/search.html.twig',{
'searchParam': searchParam is defined ? searchParam : null,
'isSearch': true
}) }}
{% endif %}