<?php

/*
 * This file is part of the Symfony package.
 *
 * (c) Fabien Potencier <fabien@symfony.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace App\Repository;

use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;
use function Symfony\Component\String\u;

/**
 * This custom Doctrine repository contains some methods which are useful when
 * querying for blog post information.
 *
 * See https://symfony.com/doc/current/doctrine.html#querying-for-objects-the-repository
 *
 * @author Ryan Weaver <weaverryan@gmail.com>
 * @author Javier Eguiluz <javier.eguiluz@gmail.com>
 * @author Yonel Ceruto <yonelceruto@gmail.com>
 */
class ParentRepository extends ServiceEntityRepository
{
    public function __construct(ManagerRegistry $registry, string $entityClass)
    {
        parent::__construct($registry, $entityClass);
    }


    public function findNextRangTri(int $rang_tri, $limit)
    {
        $qb = $this->createQueryBuilder('p')
            ->andWhere('p.rang_tri >= :rang_tri')
            ->orderBy('p.rang_tri', 'ASC')
            ->setMaxResults($limit)
            ->setParameter('rang_tri', $rang_tri);

        if ($limit) $qb->setMaxResults($limit);

            return $qb
                ->getQuery()
                ->getResult();
    }

    public function findPrevRangTri(int $rang_tri, int $limit)
    {
        return $this->createQueryBuilder('p')
            ->andWhere('p.rang_tri <= :rang_tri')
            ->orderBy('p.rang_tri', 'DESC')
            ->setMaxResults($limit)
            ->setParameter('rang_tri', $rang_tri)
            ->getQuery()
            ->getResult()
            ;
    }

    public function getMaxRangTri() {
        return $this->createQueryBuilder('p')
            ->select('MAX(p.rang_tri) as max')
            ->getQuery()
            ->getSingleScalarResult();
    }
}
