{% extends "withnav_template.html" %}
{% from "components/banner.html" import banner_wrapper %}
{% from "components/table.html" import mapping_table, row, settings_row, text_field, optional_text_field, edit_field, field, boolean_field with context %}

{% block service_page_title %}
  Settings
{% endblock %}

{% block maincolumn_content %}

    <h1 class="heading-medium">Settings</h1>

    <div class="bottom-gutter-3-2 settings-table body-copy-table">

      {% call mapping_table(
        caption='General',
        field_headings=['Label', 'Value', 'Action'],
        field_headings_visible=False,
        caption_visible=False
      ) %}

        {% call row() %}
          {{ text_field('Service name') }}
          {{ text_field(current_service.name) }}
          {{ edit_field(
              'Change',
              url_for('.service_name_change', service_id=current_service.id),
              permissions=['manage_service']
            )
          }}
        {% endcall %}

        {% call row() %}
          {{ text_field('Sign-in method') }}
          {{ text_field(
            'Email link or text message code'
            if 'email_auth' in current_service.permissions
            else 'Text message code'
          ) }}
          {{ edit_field(
              'Change',
              url_for('.service_set_auth_type',
              service_id=current_service.id),
              permissions=['manage_service']
            )
          }}
        {% endcall %}

        {% call settings_row(if_has_permission='upload_document') %}
          {{ text_field('Contact details') }}
          {{ text_field(current_service.contact_link, truncate=true) }}
          {{ edit_field(
              'Change',
              url_for('.service_set_contact_link',
              service_id=current_service.id),
              permissions=['manage_service']
            )
          }}
        {% endcall %}

      {% endcall %}

      {% call mapping_table(
        caption='Email settings',
        field_headings=['Label', 'Value', 'Action'],
        field_headings_visible=False,
        caption_visible=True
      ) %}

        {% call row() %}
          {{ text_field('Send emails') }}
          {{ boolean_field('email' in current_service.permissions) }}
          {{ edit_field(
            'Change',
            url_for(
              '.service_set_channel',
              channel='email',
              service_id=current_service.id
            ),
            permissions=['manage_service']
          )}}
        {% endcall %}

        {% call settings_row(if_has_permission='email') %}
          {{ text_field('Reply-to email addresses') }}
          {% call field(status='default' if current_service.count_email_reply_to_addresses == 0 else '') %}
            {{ current_service.default_email_reply_to_address or 'Not set' }}
            {% if current_service.count_email_reply_to_addresses > 1 %}
              <div class="hint">
                {{ '…and %d more' | format(current_service.count_email_reply_to_addresses - 1) }}
              </div>
            {% endif %}
          {% endcall %}
          {{ edit_field(
              'Manage' if current_service.count_email_reply_to_addresses else 'Change',
              url_for('.service_email_reply_to',
              service_id=current_service.id),
              permissions=['manage_service','manage_api_keys']
            )
          }}
        {% endcall %}

        {% call settings_row(if_has_permission='email') %}
          {{ text_field('Email branding') }}
          {{ text_field('Your branding<br> ({})'.format(current_service.email_branding_name)|safe if current_service.email_branding else current_service.email_branding_name) }}
          {{ edit_field(
            'Change',
            url_for('.branding_request', service_id=current_service.id),
            permissions=['manage_service'],
          )}}
        {% endcall %}

      {% endcall %}

      {% call mapping_table(
        caption='Text message settings',
        field_headings=['Label', 'Value', 'Action'],
        field_headings_visible=False,
        caption_visible=True
      ) %}

        {% call row() %}
          {{ text_field('Send text messages') }}
          {{ boolean_field('sms' in current_service.permissions) }}
          {{ edit_field(
            'Change',
            url_for(
              '.service_set_channel',
              service_id=current_service.id,
              channel='sms'
            ),
            permissions=['manage_service']
          )}}
        {% endcall %}

        {% call settings_row(if_has_permission='sms') %}
          {{ text_field('Text message sender') }}
          {% call field(status='default' if current_service.default_sms_sender == "None" else '') %}
            {{ current_service.default_sms_sender | string | nl2br | safe if current_service.default_sms_sender else 'None'}}
            {% if current_service.count_sms_senders > 1 %}
              <div class="hint">
                {{ '…and %d more' | format(current_service.count_sms_senders - 1) }}
              </div>
            {% endif %}
          {% endcall %}
          {{ edit_field(
              'Manage' if current_service.count_sms_senders > 1 else 'Change',
              url_for('.service_sms_senders',
              service_id=current_service.id),
              permissions=['manage_service','manage_api_keys']
          )
          }}
        {% endcall %}

        {% call settings_row(if_has_permission='sms') %}
          {{ text_field('Text messages start with service name') }}
          {{ boolean_field(current_service.prefix_sms) }}
          {{ edit_field(
              'Change',
              url_for('.service_set_sms_prefix',
              service_id=current_service.id),
              permissions=['manage_service']
          )
          }}
        {% endcall %}

        {% call settings_row(if_has_permission='sms') %}
          {{ text_field('International text messages') }}
          {{ boolean_field('international_sms' in current_service.permissions) }}
          {{ edit_field(
              'Change',
              url_for('.service_set_international_sms',
              service_id=current_service.id),
              permissions=['manage_service']
          )
          }}
        {% endcall %}

        {% call settings_row(if_has_permission='sms') %}
          {{ text_field('Receive text messages') }}
          {{ boolean_field('inbound_sms' in current_service.permissions) }}
          {{ edit_field(
              'Change',
              url_for('.service_set_inbound_sms',
              service_id=current_service.id),
              permissions=['manage_service']
          )
          }}
        {% endcall %}

      {% endcall %}

      {% call mapping_table(
        caption='Letter settings',
        field_headings=['Label', 'Value', 'Action'],
        field_headings_visible=False,
        caption_visible=True
      ) %}

        {% call row() %}
          {{ text_field('Send letters') }}
          {{ boolean_field('letter' in current_service.permissions) }}
          {{ edit_field(
            'Change',
            url_for(
              '.service_set_channel',
              channel='letter',
              service_id=current_service.id
            ),
            permissions=['manage_service']
          )}}
        {% endcall %}

        {% call settings_row(if_has_permission='letter') %}
          {{ text_field('Sender addresses') }}
          {% call field(status='default' if current_service.default_letter_contact_block == None else '') %}
            {{ current_service.default_letter_contact_block | string | nl2br | safe if current_service.default_letter_contact_block else 'Not set'}}
            {% if current_service.count_letter_contact_details > 1 %}
              <div class="hint">
                {{ '…and %d more' | format(current_service.count_letter_contact_details - 1) }}
              </div>
            {% endif %}
          {% endcall %}
          {{ edit_field(
              'Manage' if current_service.count_letter_contact_details else 'Change',
              url_for('.service_letter_contact_details',
              service_id=current_service.id),
              permissions=['manage_service','manage_api_keys']
          )
          }}
        {% endcall %}

        {% call settings_row(if_has_permission='letter') %}
          {{ text_field('Letter branding') }}
          {{ optional_text_field(current_service.letter_branding.name) }}
          {{ edit_field(
            'Change',
            url_for('.request_letter_branding', service_id=current_service.id),
            permissions=['manage_service']
          )}}
        {% endcall %}

      {% endcall %}
    </div>

    {% if current_service.trial_mode %}
      <h2 class="heading-medium top-gutter-0">Your service is in trial mode</h2>

      <ul class='list list-bullet'>
        <li>you can only send messages to yourself</li>
        <li>you can add people to your team, then you can send messages to them too</li>
        <li>you can only send {{ current_service.message_limit }} messages per day</li>
      </ul>

      <p>
        {% if current_user.has_permissions('manage_service') %}
          To remove these restrictions
          <a href="{{ url_for('.request_to_go_live', service_id=current_service.id) }}">request to go live</a>.
        {% else %}
          Your service manager can ask to have these restrictions removed.
        {% endif %}
        </p>

    {% else %}
      <h2 class="heading-medium top-gutter-0">Your service is live</h2>

      <p>
        You can send up to
        {{ "{:,}".format(current_service.message_limit) }} messages
        per day.
      </p>
      <p>
        Problems or comments?
        <a href="{{ url_for('main.support') }}">Give feedback</a>.
      </p>

    {% endif %}

    {% if current_user.platform_admin %}

      <div class="settings-table body-copy-table top-gutter-4-3">

        <h2 class="heading-medium">Platform admin settings</h2>

        {% call mapping_table(
          caption='Settings',
          field_headings=['Label', 'Value', 'Action'],
          field_headings_visible=False,
          caption_visible=False
        ) %}

          {% call row() %}
            {{ text_field('Live')}}
            {% if current_service.trial_mode and not current_service.organisation %}
              {{ text_field('No (organisation must be set first)') }}
              {{ text_field('') }}
            {% else %}
              {{ boolean_field(not current_service.trial_mode) }}
              {{ edit_field('Change', url_for('.service_switch_live', service_id=current_service.id)) }}
            {% endif %}
          {% endcall %}

          {% call row() %}
            {{ text_field('Count in list of live services')}}
            {{ text_field('Yes' if current_service.count_as_live else 'No') }}
            {{ edit_field('Change', url_for('.service_switch_count_as_live', service_id=current_service.id)) }}
          {% endcall %}

          {% call row() %}
            {{ text_field('Organisation')}}
            {% call field() %}
              {% if current_service.organisation_id %}
                <a href="{{ url_for('main.organisation_dashboard', org_id=current_service.organisation_id) }}">
                  {{ current_service.organisation.name }}
                </a>
              {% else %}
                <span class="table-field-status-default">Not set</span>
              {% endif %}
              {% if current_service.organisation_type %}
                <div class="hint">
                  {{ {
                    'central': 'Central government',
                    'local': 'Local government',
                    'nhs_central': 'NHS – central government agency or public body',
                    'nhs_local': 'NHS Trust, GP practice or Clinical Commissioning Group',
                    'emergency_service': 'Emergency service',
                    'school_or_college': 'School or college',
                    'other': 'Other'
                  }.get(current_service.organisation_type) }}
                </div>
              {% endif %}
            {% endcall %}
            {{ edit_field('Change', url_for('.link_service_to_organisation', service_id=current_service.id)) }}
          {% endcall %}

          {% call row() %}
            {{ text_field('Free text message allowance')}}
            {{ text_field('{:,}'.format(current_service.free_sms_fragment_limit)) }}
            {{ edit_field('Change', url_for('.set_free_sms_allowance', service_id=current_service.id)) }}
          {% endcall %}
          {% call row() %}
            {{ text_field('Email branding' )}}
            {{ text_field(current_service.email_branding_name) }}
            {{ edit_field('Change', url_for('.service_set_email_branding', service_id=current_service.id)) }}
          {% endcall %}
          {% call row() %}
            {{ text_field('Letter branding')}}
            {{ optional_text_field(current_service.letter_branding.name) }}
            {{ edit_field('Change', url_for('.service_set_letter_branding', service_id=current_service.id)) }}
          {% endcall %}
          {% call row() %}
            {{ text_field('Data retention')}}
            {% call field() %}
                {{ current_service.data_retention | join(', ', attribute='notification_type') }}
            {% endcall %}
            {{ edit_field('Change', url_for('.data_retention', service_id=current_service.id)) }}
          {% endcall %}

          {% for permission in service_permissions %}
            {% if not service_permissions[permission].requires or current_service.has_permission(service_permissions[permission].requires) %}
              {% call row() %}
                {{ text_field(service_permissions[permission].title)}}
                {{ boolean_field(current_service.has_permission(permission)) }}
                {{ edit_field('Change', url_for(service_permissions[permission].endpoint or '.service_set_permission', service_id=current_service.id, permission=permission if not service_permissions[permission].endpoint else None)) }}
              {% endcall %}
            {% endif %}
          {% endfor %}

        {% endcall %}

      </div>

    {% endif %}

    {% if current_service.active and (current_service.trial_mode or current_user.platform_admin) %}
      <p class="top-gutter-1-2">
        <span class="page-footer-delete-link page-footer-delete-link-without-button">
          <a href="{{ url_for('.archive_service', service_id=current_service.id) }}">
            Delete this service
          </a>
        </span>
        {% if current_user.platform_admin %}
          <span class="page-footer-delete-link">
            <a href="{{ url_for('.suspend_service', service_id=current_service.id) }}" class="page-footer-delete-link">
                Suspend service
              </a>
          </span>
        {% endif %}
      </p>
    {% endif %}
    {% if (not current_service.active) and current_user.platform_admin %}
      <p>
        <div class="hint bottom-gutter-1-2">
          Service suspended
        </div>
        <span class="page-footer-delete-link page-footer-delete-link-without-button">
          <a href="{{ url_for('.resume_service', service_id=current_service.id) }}">
            Resume service
          </a>
        </span>
      </p>
    {% endif %}


{% endblock %}
}
