/**
  * @param Command|CreateTrackCommand $command
  *
  * @return mixed
  */
 public function handle(Command $command)
 {
     $album = $this->albumRepository->find($command->albumId());
     $genre = $this->genreRepository->find($command->genreId());
     $mediaType = $this->mediaTypeRepository->find($command->mediaTypeId());
     $playList = $this->playListRepository->find($command->playListId());
     $track = Track::instance($command->name(), $album)->setComposer($command->composer())->setBytes($command->bytes())->setMilliseconds($command->milliseconds())->setGenre($genre)->setMediaType($mediaType)->setUnitPrice($command->unitPrice());
     $this->trackRepository->save($track);
     $playList->addTrack($track);
     $this->playListRepository->save($playList);
     return $this->dataTransformer->transform(CreateTrackCommandResult::instance($track));
 }
 /**
  * @param Command|SearchPlayListsCommand $command
  *
  * @return mixed
  */
 public function handle(Command $command)
 {
     $playLists = $this->playListRepository->findAll();
     return $this->searchPlayListsCommandResultDataTransformer->transform(SearchPlayListsCommandResult::instance($playLists));
 }