<?php

namespace Drupal\q2d_mod\Plugin\Block;

use Drupal\Core\Block\BlockBase;
use Drupal\Core\Block\Attribute\Block;
// use Drupal\Core\StringTranslation\TranslatableMarkup;
use Drupal\Core\Link;
use Drupal\Core\Render\Markup;

/**
 * Provides a 'Prevnext' Block.
 * @Block(
 *   id = "prevnextsite_block",
 *   admin_label = @Translation("PrevNext Site Block"),
 * )
 */
class PrevNextSite extends BlockBase {
 
  /**
   * {@inheritdoc}
   */
  public function build() {
    $return = null;
    /** @var Drupal\node\Entity\Node */
    $node = \Drupal::routeMatch()->getParameter('node');
    if ($node) {
      $nodetype = $node->getType();
      if($nodetype === "site"){
        $num = $node->get('field_poid')->getString();
        $allSites = \Drupal::entityTypeManager()->getStorage('node')
          ->loadByProperties(['type' => 'site', 'status' => 1]);
  
        
  
        usort($allSites, function($a, $b){
          $numA = $a->get('field_poid')->getString();
          $numB = $b->get('field_poid')->getString();
          if ($numA == $numB) {
              return 0;
          }
          return ($numA < $numB) ? -1 : 1;
        });
        $prevnode = null;
        $nextnode = null;
        foreach($allSites as $index => $site){
          $n = $site->get('field_poid')->getString();
          if($n === $num){
            $prevnode = $index - 1 >= 0 ? $allSites[$index - 1] : null;
            $nextnode = $index + 1 < count($allSites) ? $allSites[$index + 1] : null;
            break;
          }
        }
  
        $return = [
          '#cache' => [
            'max-age' => 0,
          ]
        ];
    
        if (isset($prevnode)) {
          $prev_link_title = Markup::create('<span>Précédent</span>');
          $prev_options = ['absolute' => FALSE, 'attributes' => ['class' => 'prev-site']];
          $prev_link_object = Link::createFromRoute($prev_link_title, 'entity.node.canonical', ['node' => $prevnode->id()], $prev_options);
          $return[] = $prev_link_object->toRenderable();
        }
    
        if (isset($nextnode)) {
          $next_link_title = Markup::create('<span>Suivant</span>');
          $next_options = ['absolute' => FALSE, 'attributes' => ['class' => 'next-site']];
          $next_link_object = Link::createFromRoute($next_link_title, 'entity.node.canonical', ['node' => $nextnode->id()], $next_options);
          $return[] = $next_link_object->toRenderable();
        }
      }
    }
    
    return $return;
    // return [
    //   '#markup' => $this->t('Hello, World!'),
    // ];
  }
  public function getCacheMaxAge() {
    return 0;
  }
}