<?php

declare(strict_types=1);

/**
 * This class defines a Paginated OrderedCollection based on CodeIgniter4 Pager to get the pagination metadata
 *
 * @copyright  2021 Ad Aures
 * @license    https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3
 * @link       https://castopod.org/
 */

namespace Modules\Fediverse\Objects;

use CodeIgniter\Pager\Pager;
use Modules\Fediverse\Core\ObjectType;

class OrderedCollectionObject extends ObjectType
{
    protected string $type = 'OrderedCollection';

    protected int $totalItems;

    protected ?string $first = null;

    protected ?string $current = null;

    protected ?string $last = null;

    /**
     * @param ObjectType[]|null $orderedItems
     */
    public function __construct(
        protected ?array $orderedItems = null,
        ?Pager $pager = null,
    ) {
        $this->id = current_url();

        if ($pager instanceof Pager) {
            $totalItems = $pager->getTotal();
            $this->totalItems = $totalItems;

            if ($totalItems !== 0) {
                $this->first = $pager->getPageURI($pager->getFirstPage());
                $this->current = $pager->getPageURI();
                $this->last = $pager->getPageURI($pager->getLastPage());
            }
        }
    }
}
