<?php

declare(strict_types=1);

/*
 * Chill is a software for social workers
 *
 * For the full copyright and license information, please view
 * the LICENSE file that was distributed with this source code.
 */

namespace Chill\DocStoreBundle\Repository;

use Chill\DocStoreBundle\GenericDoc\FetchQueryInterface;
use Chill\PersonBundle\Entity\AccompanyingPeriod;
use Chill\PersonBundle\Entity\Person;

interface PersonDocumentACLAwareRepositoryInterface
{
    /**
     * @deprecated use fetch query for listing and counting person documents
     */
    public function countByPerson(Person $person): int;

    /**
     * @deprecated use fetch query for listing and counting person documents
     */
    public function findByPerson(Person $person, array $orderBy = [], int $limit = 20, int $offset = 0): array;

    public function buildFetchQueryForPerson(
        Person $person,
        ?\DateTimeImmutable $startDate = null,
        ?\DateTimeImmutable $endDate = null,
        ?string $content = null,
    ): FetchQueryInterface;

    public function buildFetchQueryForAccompanyingPeriod(
        AccompanyingPeriod $period,
        ?\DateTimeImmutable $startDate = null,
        ?\DateTimeImmutable $endDate = null,
        ?string $content = null,
    ): FetchQueryInterface;
}
