<?php

/**
 * @var array<int, string> $errors
 * @var array $form
 * @var array $tenant
 */

use MintyPHP\Session;

$values = $form ?? $tenant ?? [];
$pageAuth = is_array($viewAuth['page'] ?? null) ? $viewAuth['page'] : [];
$canUpdateTenant = (bool) ($pageAuth['can_update_tenant'] ?? false);
$canDeleteTenant = (bool) ($pageAuth['can_delete_tenant'] ?? false);
$canManageCustomFields = (bool) ($pageAuth['can_manage_custom_fields'] ?? false);
$canManageSso = (bool) ($pageAuth['can_manage_sso'] ?? false);
$isReadOnly = !$canUpdateTenant;
$avatarUuid = (string) ($values['uuid'] ?? '');
$tenantAvatarService = app(\MintyPHP\Service\Tenant\TenantAvatarService::class);
$tenantFaviconService = app(\MintyPHP\Service\Tenant\TenantFaviconService::class);
$hasAvatar = $avatarUuid !== '' && $tenantAvatarService->hasAvatar($avatarUuid);
$hasFavicon = $avatarUuid !== '' && $tenantFaviconService->hasFavicon($avatarUuid);

?>

<div class="app-details-container">
  <section>
    <?php
    $breadcrumbs = [
      ['label' => t('Home'), 'path' => 'admin'],
      ['label' => t('Tenants'), 'path' => 'admin/tenants'],
      ['label' => t('Edit tenant')],
    ];
    require templatePath('partials/app-breadcrumb.phtml');
    $titlebar = [
      'title' => t('Edit tenant'),
      'backHref' => 'admin/tenants',
      'backTitle' => t('Cancel'),
      'actions' => $canUpdateTenant ? [
        [
          'form' => 'tenant-form',
          'name' => 'action',
          'value' => 'save',
          'class' => 'secondary outline',
          'label' => t('Save'),
        ],
        [
          'form' => 'tenant-form',
          'name' => 'action',
          'value' => 'save_close',
          'class' => 'primary',
          'label' => t('Save & close'),
        ],
      ] : [],
    ];
    require templatePath('partials/app-details-titlebar.phtml');
    ?>
    <?php
    $validationSummaryErrors = $validationSummaryErrors ?? ($errors ?? []);
    require templatePath('partials/app-details-validation-summary.phtml');
    ?>

    <?php
    $detailsOpenAll = false;
    $isReadOnly = $isReadOnly ?? false;
    $showDangerZone = $canDeleteTenant;
    $dangerZoneDeleteFormId = $showDangerZone ? 'tenant-delete-form' : '';
    $dangerZoneWarning = t('This will permanently delete this tenant.');
    $dangerZoneActionLabel = t('Delete tenant');
    $showCustomFieldsTab = $canManageCustomFields;
    $showSsoTab = $canManageSso;
    $customFieldTenantUuid = (string) ($values['uuid'] ?? '');
    $customFieldDefinitions = $customFieldDefinitions ?? [];
    require __DIR__ . '/_form.phtml';
    ?>
    <?php if ($showDangerZone): ?>
      <form
        id="tenant-delete-form"
        method="post"
        action="admin/tenants/delete/<?php e($values['uuid'] ?? ''); ?>"
        hidden
        data-detail-confirm-message="<?php e(t('Delete this tenant?')); ?>"
        data-detail-action-kind="delete"
      >
        <?php Session::getCsrfInput(); ?>
      </form>
    <?php endif; ?>
  </section>
  <aside id="app-details-aside-section">
    <div class="app-details-aside-section">
      <div class="entity-avatar-block avatar-size-auto avatar-borderless">
        <?php if ($hasAvatar): ?>
          <a data-fslightbox="tenant-avatar" href="admin/tenants/avatar-file?uuid=<?php e($avatarUuid); ?>&size=256">
            <img class="entity-avatar-image" src="admin/tenants/avatar-file?uuid=<?php e($avatarUuid); ?>&size=128"
              alt="<?php e(t('Tenant image')); ?>">
          </a>
        <?php endif; ?>
      </div>
      <hgroup>
        <h2><?php e($values['description'] ?? ''); ?></h2>
        <p><?php e(t('Tenant')); ?></p>
      </hgroup>
      <hr>
      <?php if ($canUpdateTenant): ?>
        <details name="tenant-avatar">
          <summary>
            <?php e(t('Upload image')); ?>
          </summary>
          <hr>
          <form class="user-avatar-form" method="post" action="admin/tenants/avatar/<?php e($avatarUuid); ?>"
            enctype="multipart/form-data">
            <label class="user-avatar-upload">
              <input type="file" name="avatar" accept="image/*">
            </label>
            <div class="grid">
              <button type="submit" class="primary">
                <?php e(t('Save')); ?>
              </button>
              <?php if ($hasAvatar): ?>
                <button data-tooltip-pos="top" data-tooltip="<?php e(t('Remove image')); ?>" type="submit" class="danger" formaction="admin/tenants/avatar-delete/<?php e($avatarUuid); ?>"
                  formmethod="post">
                  <i class="bi bi-trash3-fill"></i>
                </button>
              <?php endif; ?>
            </div>
            <?php Session::getCsrfInput(); ?>
          </form>
        </details>
      <?php endif; ?>
      <hr>
      <?php if ($canUpdateTenant): ?>
        <details name="tenant-favicon">
          <summary>
            <?php e(t('Upload favicon')); ?>
          </summary>
          <hr>
          <?php if ($hasFavicon): ?>
            <div class="entity-avatar-block avatar-square avatar-borderless" style="--avatar-size: 48px;">
              <img class="entity-avatar-image"
                src="<?php e(asset('favicon/tenants/' . $avatarUuid . '/favicon/favicon-32x32.png')); ?>"
                alt="<?php e(t('Favicon')); ?>">
            </div>
            <small><?php e(t('Favicon preview')); ?></small>
            <hr>
          <?php endif; ?>
          <small><?php e(t('Allowed file types: PNG')); ?></small>
          <small><?php e(t('Square images are recommended (icons are center-cropped).')); ?></small>
          <hr>
          <form class="user-avatar-form" method="post" action="admin/tenants/favicon/<?php e($avatarUuid); ?>"
            enctype="multipart/form-data">
            <label class="user-avatar-upload">
              <input type="file" name="favicon" accept="image/png">
            </label>
            <div class="grid">
              <button type="submit" class="primary">
                <?php e(t('Save')); ?>
              </button>
              <?php if ($hasFavicon): ?>
                <button type="submit" class="danger" formaction="admin/tenants/favicon-delete/<?php e($avatarUuid); ?>" formmethod="post">
                  <?php e(t('Remove favicon')); ?>
                </button>
              <?php endif; ?>
            </div>
            <?php Session::getCsrfInput(); ?>
          </form>
        </details>
      <?php endif; ?>
      <hr>
      <?php
      $phone = trim((string) ($values['phone'] ?? ''));
      $fax = trim((string) ($values['fax'] ?? ''));
      $email = trim((string) ($values['email'] ?? ''));
      $supportEmail = trim((string) ($values['support_email'] ?? ''));
      $supportPhone = trim((string) ($values['support_phone'] ?? ''));
      $billingEmail = trim((string) ($values['billing_email'] ?? ''));
      $website = trim((string) ($values['website'] ?? ''));
      $privacyUrl = trim((string) ($values['privacy_url'] ?? ''));
      $imprintUrl = trim((string) ($values['imprint_url'] ?? ''));
      $statusValue = (string) ($values['status'] ?? 'active');
      ?>
      <details name="tenant-contact">
        <summary><?php e(t('Contact')); ?></summary>
        <hr>
        <?php if ($supportEmail !== '' || $supportPhone !== '' || $billingEmail !== '' || $email !== '' || $phone !== '' || $fax !== '' || $website !== ''): ?>
          <?php if ($supportEmail !== ''): ?>
            <div>
              <small><?php e(t('Support email')); ?></small>
              <p><a href="mailto:<?php e($supportEmail); ?>"><?php e($supportEmail); ?></a></p>
            </div>
          <?php endif; ?>
          <?php if ($supportPhone !== ''): ?>
            <div>
              <small><?php e(t('Support phone')); ?></small>
              <p><a href="tel:<?php e($supportPhone); ?>"><?php e($supportPhone); ?></a></p>
            </div>
          <?php endif; ?>
          <?php if ($billingEmail !== ''): ?>
            <div>
              <small><?php e(t('Billing email')); ?></small>
              <p><a href="mailto:<?php e($billingEmail); ?>"><?php e($billingEmail); ?></a></p>
            </div>
          <?php endif; ?>
          <?php if ($email !== ''): ?>
            <div>
              <small><?php e(t('Email')); ?></small>
              <p><a href="mailto:<?php e($email); ?>"><?php e($email); ?></a></p>
            </div>
          <?php endif; ?>
          <?php if ($phone !== ''): ?>
            <div>
              <small><?php e(t('Phone')); ?></small>
              <p><a href="tel:<?php e($phone); ?>"><?php e($phone); ?></a></p>
            </div>
          <?php endif; ?>
          <?php if ($fax !== ''): ?>
            <div>
              <small><?php e(t('Fax')); ?></small>
              <div><?php e($fax); ?></div>
            </div>
          <?php endif; ?>
          <?php if ($website !== ''): ?>
            <div>
              <small><?php e(t('Website')); ?></small>
              <div>
                <a href="<?php e($website); ?>" target="_blank" rel="noopener noreferrer">
                  <?php e($website); ?>
                </a>
              </div>
            </div>
          <?php endif; ?>
        <?php else: ?>
          <?php
          $emptyState = [
            'message' => t('No contact details available'),
            'size' => 'small',
            'align' => 'left',
            'icon' => false,
          ];
          require templatePath('partials/app-empty-state.phtml');
          ?>
        <?php endif; ?>
      </details>
      <hr>
      <details name="tenant-legal">
        <summary><?php e(t('Legal')); ?></summary>
        <hr>
        <?php if ($privacyUrl !== '' || $imprintUrl !== ''): ?>
          <?php if ($privacyUrl !== ''): ?>
            <div>
              <small><?php e(t('Privacy URL')); ?></small>
              <p>
                <a href="<?php e($privacyUrl); ?>" target="_blank" rel="noopener noreferrer">
                  <?php e($privacyUrl); ?>
                </a>
              </p>
            </div>
          <?php endif; ?>
          <?php if ($imprintUrl !== ''): ?>
            <div>
              <small><?php e(t('Imprint URL')); ?></small>
              <p>
                <a href="<?php e($imprintUrl); ?>" target="_blank" rel="noopener noreferrer">
                  <?php e($imprintUrl); ?>
                </a>
              </p>
            </div>
          <?php endif; ?>
        <?php else: ?>
          <?php
          $emptyState = [
            'message' => t('No legal links configured'),
            'size' => 'small',
            'align' => 'left',
            'icon' => false,
          ];
          require templatePath('partials/app-empty-state.phtml');
          ?>
        <?php endif; ?>
      </details>
      <hr>
      <?php
      $statusChangedByLabel = $values['status_changed_by_label'] ?? '';
      $statusChangedById = $values['status_changed_by'] ?? null;
      $statusChangedByUuid = $values['status_changed_by_uuid'] ?? null;
      ?>
      <details name="tenant-status">
        <summary><?php e(t('Status')); ?></summary>
        <hr>
        <div>
          <small><?php e(t('Status')); ?></small>
          <p><?php e($statusValue !== '' ? t(ucfirst($statusValue)) : '-'); ?></p>
        </div>
        <div>
          <small><?php e(t('Status changed')); ?></small>
          <p><?php e(dt($values['status_changed_at'] ?? '') ?: '-'); ?></p>
        </div>
        <div>
          <small><?php e(t('Status changed by')); ?></small>
          <p>
            <?php if ($statusChangedByLabel !== ''): ?>
              <?php if ($statusChangedByUuid): ?>
                <a href="admin/users/edit/<?php e($statusChangedByUuid); ?>"><?php e($statusChangedByLabel); ?></a>
              <?php else: ?>
                <?php e($statusChangedByLabel); ?>
              <?php endif; ?>
            <?php elseif ($statusChangedById): ?>
              <?php e('#' . $statusChangedById); ?>
            <?php else: ?>
              -
            <?php endif; ?>
          </p>
        </div>
      </details>
      <hr>
      <?php
      $asideAuditDetailsName = 'tenant-audit';
      $asideAuditCreated = (string) ($values['created'] ?? '');
      $asideAuditCreatedByLabel = (string) ($values['created_by_label'] ?? '');
      $asideAuditCreatedById = $values['created_by'] ?? null;
      $asideAuditCreatedByUuid = (string) ($values['created_by_uuid'] ?? '');
      $asideAuditModified = (string) ($values['modified'] ?? '');
      $asideAuditModifiedByLabel = (string) ($values['modified_by_label'] ?? '');
      $asideAuditModifiedById = $values['modified_by'] ?? null;
      $asideAuditModifiedByUuid = (string) ($values['modified_by_uuid'] ?? '');
      require templatePath('partials/app-details-aside-audit.phtml');
      ?>
      <hr>
      <?php
      $asideIdsDetailsName = 'tenant-ids';
      $asideIdsUuidFirst = true;
      $asideIdValue = $values['id'] ?? '';
      $asideUuidValue = (string) ($values['uuid'] ?? '');
      require templatePath('partials/app-details-aside-ids.phtml');
      ?>
    </div>
  </aside>
</div>
