. */ namespace SP\Domain\Security; use Exception; use SP\Core\Exceptions\ConstraintException; use SP\Core\Exceptions\InvalidArgumentException; use SP\Core\Exceptions\QueryException; use SP\DataModel\ItemSearchData; use SP\DataModel\TrackData; use SP\Infrastructure\Common\Repositories\NoSuchItemException; use SP\Infrastructure\Database\QueryResult; use SP\Infrastructure\Security\Repositories\TrackRequest; /** * Class TrackService * * @package SP\Domain\Common\Services */ interface TrackServiceInterface { /** * @throws InvalidArgumentException */ public function getTrackRequest(string $source): TrackRequest; /** * @throws QueryException * @throws ConstraintException * @throws NoSuchItemException */ public function delete(int $id): void; /** * @throws QueryException * @throws ConstraintException * @throws NoSuchItemException */ public function unlock(int $id): void; /** * @throws ConstraintException * @throws QueryException */ public function clear(): bool; /** * @throws ConstraintException * @throws QueryException * @throws NoSuchItemException */ public function getById(int $id): TrackData; /** * @return TrackData[] * @throws ConstraintException * @throws QueryException */ public function getAll(): array; /** * Comprobar los intentos de login * * @return bool True if delay is performed, false otherwise * @throws Exception */ public function checkTracking(TrackRequest $trackRequest): bool; /** * Devuelve los tracks de un cliente desde un tiempo y origen determinados * * @throws ConstraintException * @throws QueryException */ public function getTracksForClientFromTime(TrackRequest $trackRequest): int; /** * @throws \SP\Domain\Common\Services\ServiceException * @throws ConstraintException * @throws QueryException */ public function add(TrackRequest $trackRequest): int; /** * @throws ConstraintException * @throws QueryException */ public function search(ItemSearchData $itemSearchData): QueryResult; }