/** * @param Command|SearchTracksCommand $command * * @return mixed * @throws TrackNotFoundException */ public function handle(Command $command) { $from = ($command->page() - 1) * TrackRepository::SIZE; $tracks = $this->trackRepository->findByCriteria(TrackRepositoryCriteria::instance($command->albumId(), $command->albumTitle(), $command->trackName(), $command->composer(), $command->page(), ['id' => 'asc'], TrackRepository::SIZE, $from)); return $this->searchTracksCommandResultDataTransformer->transform(SearchTracksCommandResult::instance($tracks)); }