<?php

namespace Modules\Activity\Repositories\Contracts;

use Illuminate\Database\Eloquent\Collection;
use Modules\Activity\Entities\Activity;

interface ActivityRepositoryInterface
{
    public function getAllPaginated(int $perPage = 10, string $search = '');

    public function getAllWithRelationsPaginated(
        int $perPage = 10,
        string $search = '',
        string $sortBy = 'title',
        string $sortOrder = 'asc'
    );

    public function getIndexPaginated(
        int $perPage = 10,
        string $search = '',
        string $sortBy = 'start_datetime',
        string $sortOrder = 'desc'
    );

    public function getAllWithRelations(string $search = ''): Collection;

    public function create(array $data): Activity;

    public function findById(string $id): ?Activity;

    public function findByIdWithRelations(string $id): ?Activity;

    public function delete(string $id): bool;

    public function all(string $search = ''): Collection;
}
