/**
  * @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 CreateTrackCommandResult $createTrackCommandResult
  *
  * @return mixed
  */
 public function transform(CreateTrackCommandResult $createTrackCommandResult)
 {
     return $this->trackToTrackResourceDataTransformer->transform($createTrackCommandResult->track());
 }