{% from "./report-actions/view.njk" import dprReportActions %}
{% from "./report-download-message/view.njk" import dprDownloadMessage %}
{% from "./report-columns/view.njk" import dprReportColumns %}
{% from "./report-filters/view.njk" import dprReportFilters %}
{% from "../../bookmark/view.njk" import dprBookmarkButton %}
{% from "../../subscription/subscription-toggle/view.njk" import dprSubscriptionToggle %}
{% from "../../subscription/subscription-flash/view.njk" import dprSubscriptionFlash %}
{% from "../../_async/request-details/view.njk" import dprRequestDetails %}
{% from "govuk/components/details/macro.njk" import govukDetails %}

{% macro dprReportHeading(reportData, validationErrors, subscriptionMessages) %}
  {% set name = reportData.name %}
  {% set reportName = reportData.reportName %}
  {% set reportId = reportData.reportId %}
  {% set type = reportData.type %}
  {% set actions = reportData.actions %}
  {% set detailsOpen = reportData.detailsOpen %}
  {% set bookmarked = reportData.bookmarked %}
  {% set columns = reportData.columns %}
  {% set defaultQuery = reportData.defaultQuery %}
  {% set filterData = reportData.filterData %}
  {% set count = reportData.count %}
  {% set csrfToken = reportData.csrfToken %}
  {% set bookmarkConfig = reportData.bookmarkConfig %}
  {% set downloadConfig = reportData.downloadConfig %}
  {% set subscriptionConfig = reportData.subscriptionConfig %}
  {% set appliedFilters = reportData.appliedFilters %}
  {% set saveDefaultsEnabled = reportData.saveDefaultsEnabled %}
  {% set hasDefaults = reportData.hasDefaults %}

  {% set subscribedMessage = subscriptionMessages.subscribedMessage %}
  {% set unsubscribedMessage = subscriptionMessages.unsubscribedMessage %}

  <div class="dpr-report-header">

    {{ dprSubscriptionFlash(subscriptionMessages) }}

    {% if actions or bookmarked is defined %}
      <div class="dpr-report-heading__actions">
        {% if actions %}
          {{ dprReportActions(actions) }}
        {% endif %}

        {% if bookmarkConfig.showBookmark %}
          {% set id = reportData.id %}
          {{ dprBookmarkButton(reportId, id, type, csrfToken, bookmarkConfig) }}
        {% endif %}

        {% if subscriptionConfig.subscriptionsEnabled %}
          {{ dprSubscriptionToggle(subscriptionConfig, reportData) }}
        {% endif %}
      </div>
    {% endif %}

    <div class="dpr-report-heading">
      <div class="dpr-report-heading__title">
        <h1 id="dpr-report-name" class="govuk-heading-xl">
          <span class="govuk-caption-l">{{ reportName }}</span>
          {{ name }}
        </h1>
      </div>
    </div>

    {% if downloadConfig.canDownload is defined %}

      {{ dprDownloadMessage(reportData.feedbackFormHref) }}
    {% endif %}


    {% set reportDetailsHtml %}
      {{ dprRequestDetails(reportData) }}
    {% endset %}

    {{
      govukDetails({
        summaryText: type | capitalize + ' details',
        html: reportDetailsHtml,
        classes: 'dpr-meta-data-details',
        open: detailsOpen
      })
    }}

    {% if type === 'dashboard' %}
      <p class="govuk-body govuk-!-margin-top-2">{{ reportData.description | dpr.safe }}</p>
    {% endif %}

    <div class="dpr-report-details-print">{{ dprRequestDetails(reportData) }}</div>

    <div class="dpr-report-interactive-actions">
      {% if count and count > 0 %}
        {{ dprReportColumns(columns, csrfToken) }}
      {% endif %}

      {{ dprReportFilters(filterData, validationErrors, appliedFilters, csrfToken, saveDefaultsEnabled, hasDefaults) }}
    </div>
  </div>
{% endmacro %}
