/** * @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()); }