<?php

namespace App\Service\Campaign\Tasklist;

use App\Entity\Campaign\Tasklist\Task;
use App\Service\DataGrid\DataGridInterface;

interface TaskRepositoryInterface
{
    /**
     * @param int $id
     *
     * @return Task|null
     */
    public function findById(int $id): ?Task;

    /**
     * @param Task $task
     */
    public function save(Task $task): void;

    /**
     * @param Task $task
     */
    public function delete(Task $task): void;

    public function getFirstCompletedAt(): ?string;

    public function aggregateByGrid(array $criteria, DataGridInterface $dataGrid);

    public function moveTasksBetweenUsers(int $from, int $to);
}
