<?php

declare(strict_types=1);

require_once __DIR__.'/../../../includes/globalinclude.php';
require_once __DIR__.'/../src/warmup.php';

use Cin\AjaxSearch5\Search;
use JTL\Catalog\Product\Artikel;

$ids = [];

$response = [
  'nettoPreise'     => $_SESSION['Kundengruppe']->getIsMerchant(),
  'darfPreiseSehen' => 0 !== $_SESSION['Kundengruppe']->getMayViewPrices(),
  'qs'              => $_POST['qs'],
  'token'           => $_SESSION['jtl_token'],
  'execution_time'  => 0,
];

$S                = new Search($_SESSION['cISOSprache']);
$startTime        = microtime(true);
$hits             = $S->search($_POST['qs']);
$ids              = $hits['ids'];
$response['hits'] = $hits;

$response['execution_time'] = round(microtime(true) - $startTime, 3) * 1000 .' ms';

$response['articles'] = array_values(
  array_filter(
    array_map(static function ($kartikel) {
      $options                    = new stdClass();
      $options->nArtikelAttribute = 0;
      $options->nAttribute        = 0;
      $options->nDownload         = 0;
      $options->nKonfig           = 0;
      $options->nMerkmale         = 0;
      $options->nVariationen      = 1;

      $artikel = new Artikel();
      $artikel->fuelleArtikel($kartikel, $options);

      if (null === $artikel->kArtikel) {
        return;
      }

      return [
        'cSeo'                  => $artikel->cSeo,
        'cVorschaubild'         => $artikel->cVorschaubild,
        'cName'                 => $artikel->cName,
        'cArtNr'                => $artikel->cArtNr,
        'cUVPLocalized'         => $artikel->Preise->cVKLocalized[$_SESSION['Kundengruppe']->getIsMerchant()],
        'cLocalizedVPE'         => null !== $artikel->cLocalizedVPE ? $artikel->cLocalizedVPE[$_SESSION['Kundengruppe']->getIsMerchant()] : '',
        'kArtikel'              => $artikel->kArtikel,
        'canBePlacedIntoBasket' => 1 === $artikel->inWarenkorbLegbar
          && 1 !== ! $artikel->nIstVater
          && \is_array($artikel->Variationen)
          && (0 === \count($artikel->Variationen))
          && (
            0 !== $_SESSION['Kundengruppe']->getMayViewPrices()
          ),
      ];
    }, $ids),
    static function ($artikel) {
      return null !== $artikel;
    }
  )
);

header('Content-Type: application/json');
exit(json_encode($response));
